Kion persist-tun kaj persist-key efektive travivas en OpenVPN
Ambaŭ opcioj kovras molan restartigon en vivanta procezo. Ili ne konservas la interfacon post halto, kaj ili ne estas politiko de trafika blokado.
Halto de la servo forigas la interfacon eĉ kun persist-tun agordita. Tio estas la opcio funkcianta kiel dokumentite, ne malsukceso. La opcio priskribas unu restartigan vojon ene de kuranta procezo, kaj systemctl stop ne estas tiu vojo.
Legu la du nomojn kune kaj la dezajno klariĝas. Unu tenas priskribilon, la alia tenas ŝlosilmaterialon, kaj ambaŭ ekzistas pro tio, kio okazas post la demeto de privilegioj.
La du resursoj kaj la restartigo al kiu ili apartenas
OpenVPN signalas sian propran restartigon en du ordinaraj situacioj. Klara SIGUSR1 faras tion, kaj ping-restart kaŭzita de mortinta samtavolo faras la samon. Ambaŭ lasas la procezon viva kaj reruligas la konektan agordon, kaj tie la opcioj gajnas sian lokon.
| 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 |
Nur la vico de mola restartigo estas tio, kion ŝanĝas ĉi tiuj du opcioj, kaj la laboro kiun ili preterpasas estas la multekosta parto sur okupata ligilo. Malfermi aparaton denove disŝiras la adresojn kaj itinerojn ligitajn al ĝi, kaj rekonstrui ilin povas perdi pakaĵojn kiuj estis survoje kiam la restartigo komenciĝis. Halto detruas la samajn objektojn sen ia opcio konservi ilin.
Kial la opcioj entute ekzistas
Hardita OpenVPN-servilo kutime startas kiel root, malfermas siajn ŝlosilojn kaj sian aparaton, poste transiras al senprivilegia uzanto. Post tiu transiro kelkaj operacioj simple malaperas. Legi ŝlosildosieron kun reĝimo 0600, krei retinterfacon aŭ ŝanĝi itinerojn povas ĉiuj esti rifuzitaj.
Sen la persist-opcioj, samtavolo kiu silentas sufiĉe longe por ekigi ping-restart devigus ĝuste tiujn operaciojn. La rekonekto malsukcesus eĉ se nenio en la agordo estis ŝanĝiĝinta. La procezo ŝajnus morti sen kaŭzo, kaj la protokolo montrus permesan eraron anstataŭ retan eraron.
Kun ili, la mola restartigo reuzas tion, kion la privilegia fazo jam akiris. Neniu magio estas en ludo kaj la procezo travivas nenion. Akiro de resursoj estas simple prokrastita.
Legu la unuan eraron, ne la lastan
Kiam restartigo malsukcesas, legu la unuan eraron anstataŭ la lastan. Protektita ŝlosilo, auth-dosiero, interfaca ioctl kaj ekstera hoko estas kvar malsamaj resursoj. Teni unu diras nenion pri aliro al la aliaj. Hoko kiu vokas fajroŝirmilan ilon ankoraŭ bezonas la privilegiojn kiujn tiu ilo postulas.
Hokoj havas sian propran ŝaltilon. La OpenVPN-manlibro parigas la persist-opciojn kun up-restart, kiu decidas ĉu la skriptoj up kaj down ruliĝos denove post restartigo. Interfaco kiu restis supre do diras al vi nenion pri tio, ĉu via solvila integriĝo refreŝiĝ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
Tiu paro da komandoj apartigas la du malsukcesajn reĝimojn en sekundoj. Interfaco kiu ĉeestas kun mankantaj itineroj estas hoka aŭ itinera problemo. Interfaco kiu malaperis signifas ke la procezo vere finiĝis.
Konservita interfaco ne estas kill switch
Se la postulo estas ke trafiko neniam eliru ekster la tunelon, konservita aparato tion ne donas. Itineroj por la alia adresa familio, dua defaŭlta itinero kaj la kazo kiam la procezo tute eliras restas ĉiuj ekster la amplekso de la opcio.
Traktu la du postulojn aparte. Teni la tunelan objekton trans rekonektoj estas komforto por la demono. Bloki eliron kiam la tunelo estas malaktiva estas fajroŝirmila politiko kun propraj reguloj kaj propra testo. Kunfandi ilin produktas agordon kiu aspektas defenda kaj kondutas kiel rekonekto laŭ plej bona peno.
Nomu la eventon antaŭ ol diagnozi ĝin. Mola restartigo, malsukcesa konekta provo kaj halto de la servo estas tri eventoj kun tri kondutoj, kaj nur la unua estas tio, kion priskribas ĉi tiuj opcioj.