Viens miega hook VPN neatgriezīs
Hook, kas beidzas ar nulli, pierāda tikai to, ka skripts tika palaists. Ievietojiet to pēc tīkla, izmantojiet pareizo identitāti un pārbaudiet, vai profils vispār ir piemērots.
Ievietojiet atkārtotas savienošanas komandu miega hook un problēma izskatās atrisināta. Tā ir atrisināta tikai tad, ja hook darbojas pēc tam, kad tīkls pastāv, kā identitāte, ko klients atpazīst, pa ceļu, ko klients patiešām ievieš. Lielākā daļa kļūdu pēc pamošanās ir viens no šiem trim, un neviena no tām neparādās kā kļūda pašā hook. Hook jebkurā gadījumā atgriež panākumus.
Skripts, kas beidzas ar nulli, jums neko nav teicis par to, vai tunelis atgriezās.
Hook darbojas, un tad?
#!/bin/sh
case "$1" in
pre)
vpn-client disconnect
;;
post)
vpn-client connect
;;
esac
Katrs notikums izsauc hook divas reizes, pirms pārejas un pēc tās, nododot tam fāzi un notikuma nosaukumu. Tas darbojas kā root minimālā vidē, tāpēc ir vajadzīgi absolūti ceļi un nevajadzētu gaidīt nevienu darbvirsmas sesijas mainīgo. Tas, ka abi izsaukumi ātri atgriežas, saka tikai to, ka skripts tika palaists. Vai profils pēc tam pacēlās, ir atsevišķs novērojums, un tam vajadzīgi savi pierādījumi žurnālā.
Uztveriet fāzes argumentu kā dizaina daļu. Atkārtotas savienošanas mēģinājums pre fāzē notiek tad, kad mašīna grasās zaudēt visu, un tas nevar izdoties.
Root, minimāla vide, nepareizs lietotājs
Ja klients glabā pieteikšanās tokenu katram lietotājam, hook palaišana kā root atstāj to bez nekā, ko uzrādīt. Pārbaudiet stāvokli zem identitātes, ko hook patiešām izmanto, nevis tās, ko pārbaudījāt no darbvirsmas termināļa. Dažas būves pēc atvienošanas arī atstāj dēmonu, kas tur interfeisu, tāpēc atkārtota savienošana nonāk novecojušā stāvoklī, un procesa notīrīšana vispirms to atjauno uz netīras izslēgšanās rēķina. Neviens no abiem uzvedumiem nav redzams, ja pārbaudāt tikai laimīgo ceļu.
Rakstiet hook ar absolūtiem ceļiem, turiet to root īpašumā un izpildāmu, un reģistrējiet, ko tas izdarīja. Bez šī žurnāla nākamā izmeklēšana sākas no nulles.
Automātiskā savienošana nav VPN ceļš
NetworkManager piedāvā divus aktivizācijas mehānismus: automātiskās savienošanas karodziņu profilā un sekundāros savienojumus, kas sākas, kad aktivizējas primārais profils. Vietējie ierīču tipi ievieš pirmo; VPN spraudņi vēsturiski ir ieviesuši tikai otro, tāpēc automātiskās savienošanas atzīmēšana OpenVPN profilā var vispār neietekmēt. Pārbaudiet abas īpašības, pēc tam pievienojiet VPN kā sekundāru Wi-Fi vai Ethernet profilam.
[Unit] PartOf=NetworkManager.service Requires=NetworkManager-wait-online.service After=NetworkManager-wait-online.service
WireGuard interfeisam, ko pārvalda systemd vienība, vajadzīgs šis papildu fails, nevis hook, sakārtots pēc tam, kad tīkls ir tiešsaistē.
Gaidi tīklu, ar augšējo robežu
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"
Pamostoties tunelis var tikt pieprasīts, kamēr Wi-Fi vēl atkārtoti savienojas, kas jebkuru fiksētu miegu pārvērš minējumā. Gaidiet sasniedzamu adresi, pēc tam paceliet profilu, un ierobežojiet gaidīšanu, lai hook nevarētu bezgalīgi turēt pamošanās ceļu atvērtu. Dodiet priekšroku profila nosaukumam, nevis skaitliskam indeksam, un ja pareizais profils atšķiras atkarībā no tīkla, lai veselais tunelis iepriekš ieraksta savu izvēli failā.
Sargieties arī no restartēšanas vētrām, skaitot mēģinājumus un apstājoties. Uzraugs, kas reaģē uz katru neveiksmīgo pārbaudi, pārvērš vienu pārtraukumu cilpā.
Apturiet sistēmu vienreiz, pēc tam izlasiet žurnālā paša hook izvadi. Tas ir vienīgais tests, kas pierāda secību.