vpn.persistent nastavlja pokušavati, ali vas ne drži povezanim
Svojstvo traži od VPN servisa da zadrži tunel kroz promjene veze. Aktivacija, živost, namjera i ponašanje kill-switcha ostaju odvojena pitanja.
NetworkManager izlaže jedno svojstvo, vpn.persistent, a ljudi od njega traže da istovremeno odgovori na četiri različita pitanja. Njegova nadređena dokumentacija je pažljiva: trajnost se primjenjuje kada je VPN servis podržava i profil je omogući, a veza se zatim traži da preživi promjene veze i prekide do izričitog prekida. Ista dokumentacija pokazuje i da svojstvo po defaultu ima vrijednost false, što nije ono što većina planova oporavka pretpostavlja. Čitajte to kao zahtjev za pokušaj, a ne kao obećanje rezultata.
Na šta postavka zapravo obavezuje
Vrijednost pohranjena u profilu je instrukcija za menadžera, a menadžer tu instrukciju mora predati VPN dodatku koji zna šta s njom raditi. Ako instalirani dodatak ignoriše svojstvo, profil se ipak aktivira i dnevnik ostaje tih, što je najgore od oba svijeta za svakoga ko kasnije bude otklanjao greške. Ništa unutar profila ne može natjerati dodatak da implementira ponašanje koje nema, pa je jedini vidljiv rezultat odsustvo.
Zato je uslov u dokumentaciji važniji od prekidača. Provjerite koji dodatak i izdanje zaista imate i napišite verziju pored opisa veze da sljedeća osoba ne mora to ponovo otkrivati. Politika oporavka izgrađena na neimplementiranoj zastavici pada tačno jednom u produkciji i uvijek u najnezgodnijem trenutku.
Tretiranje svojstva kao pokušaja postavlja i ispravno očekivanje za testiranje. Ne provjeravate da li je zastavica postavljena; provjeravate da li se nešto dogodilo kada je veza pala. To su različiti eksperimenti i samo jedan od njih vrijedi jednog poslijepodneva.
Četiri pitanja spojena u jedno
Aktivacija pita šta uopšte podiže VPN. NetworkManager profil može biti vezan za osnovnu vezu, odvojeno upravljani OpenVPN servis ima vlastito pokretanje, a dodavanje trećeg pokretača tom rasporedu daje vam dva vlasnika s različitim idejama o tome ko je glavni. Odlučite koja komponenta posjeduje pokretanje prije nego dodate još jedan okidač.
Oporavak pita šta se dogodi kada se veza promijeni ili nestane, a to je usko pitanje koje vpn.persistent rješava. Živost pita može li klijent prepoznati da je druga strana prestala odgovarati, a to umjesto toga rješava OpenVPN keepalive ili ponašanje ponovnog pokretanja; dva mehanizma često se opisuju istom riječju i implementiraju na različitim mjestima. Testirajte ih odvojeno, različitim alatima, inače ćete jedno ponašanje pripisati drugom.
Namjera pita da li je ponovno povezivanje uopšte željeno, i to je pitanje na koje anketiranje statusa ne može odgovoriti. Namjerno zaustavljanje i prekid daju isto neaktivno stanje, pa sve što se ponovo povezuje na odsustvo nagađa o ljudskoj odluci. Nagađanje je u redu sve do trenutka kada nekoga pregazi.
Kontrolna lista koja ih drži odvojenim
Izvodite događaje po redu umjesto da čitate konfiguraciju i razmišljate o njoj, i zabilježite šta svaki pokazuje s vremenskom oznakom.
Prvo, aktivirajte predviđenu osnovnu vezu i potvrdite da se VPN podigao kroz okidač koji ste očekivali, a ne kroz mehanizam koji ste zaboravili da je instaliran. Drugo, tokom odobrenog prekida uporedite VPN događaje menadžera, stanje oporavka klijenta vlasnika i novi zahtjev prema privatnom resursu. Treće, namjerno se odspojite, sačekajte i potvrdite da ništa ne pokreće profil iza vaših leđa.
Treći korak je onaj koji ljudi preskaču, i on najčešće pronalazi pravi defekt. Čuvar koji anketira za aktivnim profilom i ponovo se povezuje kada ga nema radosno će poništiti korisnikovo namjerno odspajanje. Iz korisnikove stolice to nije otpornost; to je mašina koja neće poslušati. Pitajte ih prije nego dodate jedan.
Upišite rezultate u isti dokument kao i opis veze. Politika oporavka vrijedi onoliko koliko posljednji put kada je neko gledao kako namjerno pada. Vremenske oznake čine razliku vidljivom svakome ko sljedeći pročita bilješke.
Autentifikacija je dio oporavka
Ponovno povezivanje nije samo mrežni čin. Ako odobreni tok zahtijeva novi izazov, jednokratni kod ili tajnu do koje kontekst aktivacije ne može doći, nijedna postavka trajnosti to ne može stvoriti ni iz čega.
To objašnjava poznat obrazac: veza se oporavlja na mašini s otključanim privjeskom ključeva i pada na istoj mašini nakon ponovnog pokretanja. Mrežni sloj je uradio tačno ono što je traženo, a sloj vjerovanja nije imao šta ponuditi.
Popravite tok rada s vjerovanjima umjesto da skraćujete interval ponovnih pokušaja. Brži pokušaji prema upitu na koji niko ne može odgovoriti stvaraju šum u dnevniku i lažni dojam da se nešto pokušava.
Trajnost nije kill switch
Svojstvo pokušava zadržati ili obnoviti VPN odnos. Ono ne odlučuje šta aplikacije smiju raditi dok je VPN isključen i samo po sebi ništa ne blokira.
Ako je zahtjev da nikakav saobraćaj ne izlazi izvan tunela, to je odvojena politika s vlastitim mehanizmom, vlastitim testiranjem i vlastitim načinima kvara. Pretpostavka da trajnost to pokriva pretvara sigurnosnu odluku u nesreću.
Zabilježite obje polovine u bilješkama oporavka: šta je VPN pokušao i koji je aplikacijski saobraćaj bio dozvoljen dok je pokušaj trajao.