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.

EventTUN/TAP deviceKey and auth filesAddresses and routesup/down hooks
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itselfsurvives only with persist-tunsurvive only with persist-keysurvive with the device, otherwise rebuiltrun again only when restart hooks are enabled
Configuration reload, SIGHUPrecreatedre-read from diskrebuilt once the device returnsrun again
Service stoplostre-read at the next startremovedrun 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.

Erthyglau cysylltiedig