Set in werferbyningsopdracht yn 'e sliephook en it probleem liket oplost. It is allinnich oplost as de hook rint nei't it netwurk bestiet, as in identiteit dy't de klient werkennt, fia in paad dat de klient wier ymplementearret. De measte flaters nei weromkommen binne ien fan dy trije, en net ien fan harren ferskynt as in flater yn 'e hook sels. De hook jout likegoed súkses werom.

In skript dat mei nul ôfslút, hat dy neat ferteld oer oft in tunnel weromkaam.

De hook rint, en dan?

#!/bin/sh
case "$1" in
  pre)
    vpn-client disconnect
    ;;
  post)
    vpn-client connect
    ;;
esac

Elk barren ropt de hook twa kear op, foar en nei de oergong, en jout him de faze en de barrensnamme. Hy rint as root mei in minimaal omjouwing, dus absolute paden binne nedich en gjin buroblêdsesje-fariabele moat ferwachte wurde. Dat beide oproppen fluch weromkomme, seit allinnich dat it skript rûn. Oft it profyl dêrnei omheech kaam, is in aparte waarnimming en hat syn eigen bewiis yn it log nedich.

Behannel it faze-argumint as diel fan it ûntwerp. In werferbyningspoging yn 'e pre-faze bart wylst de masine op it punt stiet alles te ferliezen, en it kin net slagje.

Root, minimaal omjouwing, ferkearde brûker

As de klient syn oanmeldtoken per brûker hâldt, lit it draaien fan 'e hook as root it sûnder wat te presintearjen. Kontrolearje de tastân ûnder de identiteit dy't de hook wier brûkt, net dy'tsto fan in buroblêdterminal út test hawwe. Guon builds litte ek in daemon efter dy't de ynterface hâldt nei in ferbining, sadat in werferbining yn in ferâldere tastân telâne komt, en it earst skjinmeitsjen fan it proses herstellt it tsjin de priis fan in ûnskjin ôfsluten. Net ien fan beide gedrach is sichtber assto allinnich it lokkige paad testest.

Skriuw de hook mei absolute paden, hâld him yn eigendom fan root en útfierber, en log wat er die. Sûnder dat log begjint it folgjende ûndersyk by nul.

Autoforbining is net it VPN-paad

NetworkManager biedt twa aktivearringsmechanismen: in autoforbiningsflagge op it profyl, en sekundêre ferbiningen dy't begjinne as in primêr profyl aktivearret. Native apparaattypen ymplementearje de earste; VPN-plugins hawwe histoarysk allinnich de twadde ymplementearre, dus it oanfinken fan autoforbining op in OpenVPN-profyl kin hielendal gjin effekt hawwe. Ynspektearje beide eigenskippen, en koppel de VPN dan ynstee as sekundêr oan it Wi-Fi- of Ethernet-profyl.

[Unit]
PartOf=NetworkManager.service
Requires=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service

In WireGuard-ynterface beheard troch in systemd-ienheid hat dat drop-in nedich ynstee fan in hook, oardere nei't it netwurk online is.

Wachtsje op it netwurk, mei in plafond

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"

By weromkommen kin de tunnel frege wurde wylst Wi-Fi noch wer assosjearret, wat elke fêste sliep ta in gissing makket. Wachtsje op in berikbere adres, bring dan it profyl omheech, en behein it wachtsjen sadat in hook it weromkompaad net ûnbeheind iepen hâlde kin. Ferkies de profylnamme boppe in nûmerike yndeks, en as it juste profyl per netwurk ferskilt, lit de sûne tunnel syn kar foarôf yn in bestân skriuwe.

Wapene dy ek tsjin werstartstoarmen, troch pogingen te tellen en te stopjen. In watchdog dy't op elke mislearre prob reagearret, makket fan ien útfal in lus.

Suspindearje ien kear, en lês dan it sjoernaal foar de eigen útfier fan 'e hook. Dat is de iennichste test dy't de oardering bewiist.

Relatearre artikelen