Çfarë mbijetojnë vërtet persist-tun dhe persist-key në OpenVPN
Të dyja opsionet mbulojnë një rinisje të butë brenda një procesi të gjallë. Ato nuk e mbajnë ndërfaqen pas një ndalimi dhe nuk janë politikë e bllokimit të trafikut.
Ndalimi i shërbimit e heq ndërfaqen edhe me persist-tun të vendosur. Ky është opsioni që punon siç dokumentohet, jo një dështim. Opsioni përshkruan një rrugë rinisjeje brenda një procesi në punë, dhe systemctl stop nuk është ajo rrugë.
Lexoni të dy emrat bashkë dhe dizajni bëhet i qartë. Njëri mban një përshkrues, tjetri mban material çelësi, dhe të dyja ekzistojnë për shkak të asaj që ndodh pas heqjes së privilegjeve.
Dy burimet dhe rinisja së cilës i përkasin
OpenVPN sinjalizon rinisjen e vet në dy situata të zakonshme. Një SIGUSR1 i qartë e bën këtë, dhe një ping-restart i shkaktuar nga një partner i vdekur bën të njëjtën gjë. Të dyja e lënë procesin të gjallë dhe ekzekutojnë përsëri konfigurimin e lidhjes, dhe aty opsionet fitojnë vendin e tyre.
| 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 |
Vetëm rreshti i rinisjes së butë është ajo që ndryshojnë këto dy opsione, dhe puna që anashkalojnë është pjesa e shtrenjtë në një lidhje të zënë. Rihapja e një pajisje rrëzon adresat dhe rrugët e lidhura me të, dhe rindërtimi i tyre mund të hedhë poshtë paketa që ishin në rrugë kur filloi rinisja. Ndalimi shkatërron të njëjtat objekte pa asnjë opsion për t'i ruajtur.
Pse ekzistojnë fare këto opsione
Një server OpenVPN i forcëzuar zakonisht niset si root, hap çelësat dhe pajisjen e tij, pastaj zbret në një përdorues pa privilegje. Pas këtij zbritjeje disa veprime thjesht zhduken. Leximi i një skedari çelësi me modalitetin 0600, krijimi i një ndërfaqeje rrjeti ose ndryshimi i rrugëve mund të refuzohen të gjitha.
Pa opsionet persist, një partner që hesht mjaft gjatë për të shkaktuar ping-restart do të impononte pikërisht ato veprime. Rilidhja do të dështonte edhe pse asgjë në konfigurim nuk ishte ndryshuar. Procesi do të dukej se vdes pa arsye, dhe regjistri do të tregonte një gabim leje në vend të një gabimi rrjeti.
Me to, rinisja e butë ripërdor atë që faza e privilegjuar ka marrë tashmë. Nuk ka magji dhe procesi nuk mbijeton asgjë. Marrja e burimeve thjesht shtyhet.
Lexoni gabimin e parë, jo të fundit
Kur një rinisje dështon, lexoni gabimin e parë në vend të të fundit. Një çelës i mbrojtur, një skedar auth, një ioctl ndërfaqeje dhe një grep i jashtëm janë katër burime të ndryshme. Mbajtja e njërit nuk thotë asgjë për aksesin te të tjerët. Një grep që thërret një mjet firewall ende ka nevojë për privilegjet që kërkon ai mjet.
Grepët kanë çelësin e tyre. Manuali i OpenVPN çifton opsionet persist me up-restart, i cili vendos nëse skriptet up dhe down ekzekutohen përsëri pas një rinisjeje. Një ndërfaqe që qëndroi lart pra nuk ju thotë asgjë nëse integrimi juaj i resolverit u rifreskua.
# 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
Ai çift komandash i ndan dy mënyrat e dështimit brenda sekondave. Një ndërfaqe e pranishme me rrugë që mungojnë është problem grepi ose rruge. Një ndërfaqe që u zhduk do të thotë se procesi vërtet përfundoi.
Një ndërfaqe e mbajtur nuk është kill switch
Nëse kërkesa është që trafiku të mos dalë kurrë jashtë tunelit, një pajisje e mbajtur nuk e ofron atë. Rrugët për familjen tjetër të adresave, një rrugë e dytë e paracaktuar dhe rasti kur procesi del plotësisht mbeten të gjitha jashtë fushës së opsionit.
Trajtoni dy kërkesat veçmas. Mbajtja e objektit të tunelit midis rilidhjeve është komoditet për daemonin. Bllokimi i daljes kur tuneli është jashtë është politikë firewalli me rregullat dhe testin e vet. Përzierja e tyre prodhon një konfigurim që duket mbrojtës dhe sillet si rilidhje me përpjekje më të mirë.
Emërtojeni ngjarjen para se ta diagnostikoni. Një rinisje e butë, një përpjekje e dështuar lidhjeje dhe një ndalim shërbimi janë tre ngjarje me tre sjellje, dhe vetëm e para është ajo që përshkruajnë këto opsione.