Wat persist-tun en persist-key yn OpenVPN eins oerlibje
Beide opsjes dekke in sêfte werstart binnen in libbend proses. Se behâlde de ynterface net nei in stop, en se binne gjin belied om ferkear te blokkearjen.
It tsjinst stopjen ferwideret de ynterface sels mei persist-tun oan. Dat is de opsje dy't wurket sa't dokumintearre is, gjin flater. De opsje beskriuwt ien werstartpaad binnen in rinnend proses, en systemctl stop is dat paad net.
Lês de twa nammen byinoar en it ûntwerp wurdt dúdlik. Ien hâldt in deskriptor, de oare hâldt kaaimateriaal, en beide besteane fanwegen wat der bart nei it ôfstean fan privileezjes.
De twa boarnen en de werstart dêr't se by hearre
OpenVPN sinjalearret syn eigen werstart yn twa gewoane situaasjes. In eksplisite SIGUSR1 docht dat, en in ping-restart dy't troch in dea partner oantrúnd wurdt docht itselde. Beide hâlde it proses libben en fiere de ferbiningsopset opnij út, en dêr fertsjinje de opsjes har plak.
| 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 |
Allinnich de rige fan 'e sêfte werstart is wat dizze twa opsjes feroarje, en it wurk dat se oerslaan is it djoere part op in drokke ferbining. It opnij iepenjen fan in apparaat brekt de adressen en rûtes ôf dy't deroan fêst sitte, en it wer opbouwen fan dy kin pakketten ferlieze dy't ûnderweis wiene doe't de werstart begûn. It stopjen ferneatiget deselde objekten sûnder hokker opsje dan ek om se te behâlden.
Wêrom't de opsjes hielendal besteane
In ferhurde OpenVPN-tsjinner begjint meastentiids as root, iepent syn kaaien en syn apparaat, en sakket dan nei in net-privilegearre brûker. Nei dy sakking binne guon bewurkingen gewoan fuort. It lêzen fan in kaai triem mei modus 0600, it meitsjen fan in netwurk-ynterface of it feroarjen fan rûtes kin allegear wegere wurde.
Sûnder de persist-opsjes soe in partner dy't lang genôch stil bliuwt om ping-restart te oantrúnjen krekt dy bewurkingen ôftwinge. De werferbining soe mislearje sels as der neat yn 'e konfiguraasje feroare wie. It proses soe lykje te stjerren sûnder reden, en it loch soe in tastimmingsflater sjen litte ynstee fan in netwurkflater.
Mei har brûkt de sêfte werstart opnij wat de privilezgearre faze al krigen hat. Der is gjin magy yn it spul en it proses oerlibbet neat. It krijen fan boarnen wurdt gewoan útsteld.
Lês de earste flater, net de lêste
As in werstart mislearret, lês dan de earste flater ynstee fan 'e lêste. In beskerme kaai, in auth-triem, in ynterface-ioctl en in eksterne heak binne fjouwer ferskillende boarnen. Ien behâlde seit neat oer tagong ta de oaren. In heak dy't in firewall-ark oanropt hat noch altyd de privileezjes nedich dy't dat ark easket.
Heaken hawwe har eigen skeakel. De OpenVPN-hânlieding keppelt de persist-opsjes oan up-restart, dat beslút oft de up- en down-skripts nei in werstart opnij rinne. In ynterface dy't oerein bleau fertelt jo dus neat oer oft jo resolver-yntegraasje ferfarske is.
# 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
Dat pear opdrachten skiede de twa mislearringsmodi yn sekonden. In ynterface dy't oanwêzich is mei ûntbrekkende rûtes is in heak- of rûteprobleem. In ynterface dy't ferdwûn is betsjut dat it proses wier einige is.
In behâlden ynterface is gjin kill switch
As de eask is dat ferkear nea bûten de tunnel komme mei, dan leveret in behâlden apparaat dat net. Rûtes foar de oare adresfamylje, in twadde standertrûte en it gefal wêryn't it proses hielendal útkomt bliuwe allegear bûten it berik fan 'e opsje.
Behannelje de twa easken apart. It tunnelobjekt oer werferbiningen hinne behâlde is in gerêflijkheid foar de daemon. It blokkearjen fan útgong as de tunnel del is, is in firewallbelied mei syn eigen regels en syn eigen test. It trochinoar heljen fan dy beiden produsearret in konfiguraasje dy't ferdigenjend liket en him hâldt as in werferbining mei bêste ynspanning.
Nammje it barren foardat jo it diagnostearje. In sêfte werstart, in mislearre ferbiningspoging en in tsjinststop binne trije barrens mei trije gedragingen, en allinnich de earste is wat dizze opsjes beskriuwe.