Samo hook za spavanje neće vratiti VPN
Hook koji izađe s nulom dokazuje samo da je skripta radila. Poredajte ga nakon mreže, upotrijebite ispravan identitet i provjerite je li profil uopće podoban.
Stavite naredbu za ponovno povezivanje u hook za spavanje i problem izgleda riješen. Riješen je samo ako se hook izvrši nakon što mreža postoji, kao identitet koji klijent prepoznaje, putem kojim klijent doista raspolaže. Većina kvarova nakon buđenja jedan je od ta tri, a nijedan se ne pojavljuje kao greška u samom hooku. Hook u svakom slučaju vraća uspjeh.
Skripta koja izađe s nulom nije vam rekla ništa o tome je li se tunel vratio.
Hook se izvrši, i što onda?
#!/bin/sh
case "$1" in
pre)
vpn-client disconnect
;;
post)
vpn-client connect
;;
esac
Svaki događaj poziva hook dvaput, prije i poslije prijelaza, predajući mu fazu i naziv događaja. Izvodi se kao root s minimalnim okruženjem, pa su apsolutne putanje nužne i ne treba očekivati nijednu varijablu radne sesije. To što se oba poziva brzo vraćaju govori samo da je skripta radila. Je li se profil nakon toga podigao zasebno je opažanje i traži vlastiti dokaz u dnevniku.
Tretirajte argument faze kao dio dizajna. Pokušaj ponovnog povezivanja u fazi pre događa se dok je stroj na pragu gubitka svega i ne može uspjeti.
Root, minimalno okruženje, pogrešan korisnik
Ako klijent čuva token za prijavu po korisniku, pokretanje hooka kao root ostavlja ga bez ičega za predstavljanje. Provjerite stanje pod identitetom koji hook doista rabi, a ne pod onim koji ste testirali iz terminala na radnoj površini. Neke gradnje također ostavljaju demona koji drži sučelje nakon prekida, pa ponovno povezivanje dospije u zastarjelo stanje, a čišćenje procesa najprije ga obnavlja uz cijenu nečistog gašenja. Ni jedno se ponašanje ne vidi ako testirate samo sretan put.
Pišite hook s apsolutnim putanjama, držite ga u vlasništvu roota i izvršivim, i bilježite što je učinio. Bez tog dnevnika sljedeća istraga počinje od nule.
Automatsko povezivanje nije put VPN-a
NetworkManager nudi dva mehanizma aktivacije: zastavicu automatskog povezivanja na profilu i sekundarne veze koje počinju kad se aktivira primarni profil. Izvorne vrste uređaja izvode prvi; VPN dodaci povijesno su izvodili samo drugi, pa označavanje automatskog povezivanja na OpenVPN profilu može uopće ne imati učinka. Pregledajte oba svojstva, pa umjesto toga pripojite VPN kao sekundarnu vezu Wi-Fi ili Ethernet profila.
[Unit] PartOf=NetworkManager.service Requires=NetworkManager-wait-online.service After=NetworkManager-wait-online.service
WireGuard sučelje kojim upravlja systemd jedinica treba tu dodatnu datoteku umjesto hooka, poredanu nakon što mreža postane dostupna.
Pričekajte mrežu, s gornjom granicom
timer=1 while ! ping -c1 -n -w1 203.0.113.1 >/dev/null; do sleep 1; timer=$((timer+1)) [ $timer -ge 300 ] && exit 0 done nmcli connection up "work-vpn"
Pri buđenju tunel može biti zatražen dok se Wi-Fi još ponovno pridružuje, što svako fiksno spavanje čini nagađanjem. Pričekajte dostupnu adresu, zatim podignite profil i ograničite čekanje da hook ne može držati put buđenja otvorenim neograničeno. Preferirajte naziv profila pred brojčanim indeksom, a ako se ispravan profil razlikuje po mreži, neka zdravi tunel unaprijed zapiše svoj izbor u datoteku.
Čuvajte se i oluja restarta, brojenjem pokušaja i zaustavljanjem. Nadzornik koji reagira na svaku neuspjelu provjeru pretvara jedan prekid u petlju.
Suspendirajte jednom, zatim pročitajte dnevnik za vlastiti izlaz hooka. To je jedini test koji dokazuje redoslijed.