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.

Saistītie raksti