Beth mae persist-tun a persist-key yn ei oroesi mewn gwirionedd yn OpenVPN
Mae’r ddau opsiwn yn ymdrin ag ailosodiad meddal y tu mewn i broses fyw. Nid ydynt yn cadw’r rhyngwyneb ar ôl stopio, ac nid ydynt yn bolisi blocio traffig.
Mae stopio’r gwasanaeth yn tynnu’r rhyngwyneb hyd yn oed gyda persist-tun wedi’i osod. Dyna’r opsiwn yn gweithio fel y mae wedi’i ddogfennu, nid methiant. Mae’r opsiwn yn disgrifio un llwybr ailddechrau o fewn proses sy’n rhedeg, ac nid systemctl stop yw’r llwybr hwnnw.
Darllenwch y ddau enw gyda’i gilydd a daw’r cynllun yn glir. Mae un yn cadw disgrifydd, mae’r llall yn cadw deunydd allwedd, ac mae’r ddau yn bodoli oherwydd yr hyn sy’n digwydd ar ôl gollwng breintiau.
Y ddau adnodd a’r ailosodiad y maent yn perthyn iddo
OpenVPN yn anfon ei ailddechrau ei hun mewn dau sefyllfa gyffredin. Mae SIGUSR1 penodol yn gwneud hynny, ac mae ping-restart a achosir gan bartner marw yn gwneud yr un peth. Mae’r ddau yn gadael y broses yn fyw ac yn ail-redeg y gosodiad cysylltiad, a dyna lle mae’r opsiynau’n ennill eu lle.
| Event | TUN/TAP device | Key and auth files | Addresses and routes | up/down hooks |
|---|---|---|---|---|
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itself | survives only with persist-tun | survive only with persist-key | survive with the device, otherwise rebuilt | run again only when restart hooks are enabled |
Configuration reload, SIGHUP | recreated | re-read from disk | rebuilt once the device returns | run again |
| Service stop | lost | re-read at the next start | removed | run at the next start |
Dim ond y rhes ailosodiad meddal yw’r hyn y mae’r ddau opsiwn hyn yn ei newid, a’r gwaith y maent yn ei hepgor yw’r rhan gostus ar gyswllt prysur. Mae ailagor dyfais yn rhwygo’r cyfeiriadau a’r llwybrau sydd ynghlwm wrthi, ac mae eu hailadeiladu yn gallu gollwng pecynnau a oedd ar ganol eu taith pan ddechreuodd yr ailosodiad. Mae stopio yn dinistrio’r un gwrthrychau heb unrhyw opsiwn i’w cadw.
Pam mae’r opsiynau’n bodoli o gwbl
Mae gweinydd OpenVPN caled fel arfer yn cychwyn fel root, yn agor ei allweddi a’i ddyfais, ac yna’n disgyn i ddefnyddiwr heb fraint. Ar ôl y disgyniad hwnnw, mae rhai gweithrediadau’n syml wedi mynd. Gall darllen ffeil allwedd â modd 0600, creu rhyngwyneb rhwydwaith, neu newid llwybrau gael eu gwrthod i gyd.
Heb yr opsiynau persist, byddai partner sy’n distewi’n ddigon hir i sbarduno ping-restart yn gorfodi’r union weithrediadau hynny. Byddai’r ailgysylltu yn methu er nad oedd unrhyw beth yn y ffurfweddiad wedi newid. Byddai’r broses yn edrych fel pe bai’n marw heb reswm, a byddai’r log yn dangos gwall caniatâd yn hytrach na gwall rhwydwaith.
Gyda nhw, mae’r ailosodiad meddal yn ailddefnyddio’r hyn a oedd y cyfnod breintiedig eisoes wedi’i gael. Nid oes hud yma ac nid yw’r broses yn goroesi unrhyw beth. Mae caffael adnoddau’n cael ei ohirio’n syml.
Darllenwch y gwall cyntaf, nid yr olaf
Pan fydd ailosodiad yn methu, darllenwch y gwall cyntaf yn hytrach na’r olaf. Mae allwedd warchodedig, ffeil auth, ioctl rhyngwyneb a bachyn allanol yn bedwar adnodd gwahanol. Nid yw cadw un yn dweud dim am fynediad at y lleill. Mae bachyn sy’n galw offeryn wal dân yn dal i fod angen y breintiau y mae’r offeryn hwnnw’n eu mynnu.
Mae gan fachynnau eu switsh eu hunain. Mae llawlyfr OpenVPN yn paru’r opsiynau persist ag up-restart, sy’n penderfynu a yw’r sgriptiau up a down yn rhedeg eto ar ôl ailddechrau. Felly nid yw rhyngwyneb a arhosodd i fyny yn dweud dim wrthych am ba un a gafodd eich integreiddiad datrysiwr ei adnewyddu.
# which restart path just happened?
journalctl -u openvpn-client@office --since '10 min ago' | grep -E 'SIGUSR1|ping-restart|Restart pause|NOTE:'
# did the interface survive, and do its routes still exist?
ip -brief link show tun0
ip route show dev tun0
Mae’r pâr hwn o orchmynion yn gwahanu’r ddau fodd methiant mewn eiliadau. Mae rhyngwyneb sy’n bresennol gyda llwybrau ar goll yn broblem bachyn neu lwybr. Mae rhyngwyneb sydd wedi diflannu yn golygu bod y broses wedi diweddu mewn gwirionedd.
Nid yw rhyngwyneb a gedwir yn kill switch
Os mai’r gofyniad yw na ddylai traffig byth adael y tu allan i’r tiwnel, nid yw dyfais a gedwir yn ei ddanfon. Mae llwybrau ar gyfer y teulu cyfeiriad arall, ail lwybr diofyn, a’r achos pan fydd y broses yn gadael yn gyfan gwbl yn aros y tu allan i gwmpas yr opsiwn.
Triniwch y ddau ofyniad ar wahân. Mae cadw’r gwrthrych tiwnel ar draws ailgysylltiadau yn gyfleustra i’r daemon. Mae blocio allanfa pan fydd y tiwnel i lawr yn bolisi wal dân â’i reolau ei hun a’i brawf ei hun. Mae cymysgu’r ddau yn cynhyrchu ffurfweddiad sy’n edrych yn amddiffynnol ac yn ymddwyn fel ailgysylltu gorau posibl.
Enwch y digwyddiad cyn ei ddiagnosio. Mae ailosodiad meddal, ymgais cysylltu a fethodd, a stopio’r gwasanaeth yn dri digwyddiad â thri ymddygiad, a dim ond y cyntaf yw’r hyn y mae’r opsiynau hyn yn ei ddisgrifio.