Két Ubuntu gép ugyanabból a lemezképből, egy VPN-profil, ellentétes eredmények bejelentkezéskor: az egyiken az alagút már áll, mielőtt az asztal megjelenik, a másikon soha nem jön fel. A profil itt nem változó. A különbség az, hogy melyik három összetevő kapott utasítást az indítására, és ez a három nem osztozik egy kapcsolón.

Ezek egymás melletti összehasonlítása gyorsabb a találgatásnál. Mindegyikük felismerhető módon vall kudarcot, és éppen ezért éri meg az összehasonlítás.

Három indító három különböző kiváltóval

A csomagolt openvpn szolgáltatás a legrégebbi út. Az init-szkriptje egy automatikus indítási listát olvas a következőből: /etc/default/openvpn. Ha az a lista kikommentelt vagy üres, a szkript az adott könyvtárban talált minden konfigurációt elindít, nem csak azt az egyet, amelyet hozzáadott. Egy alagúthoz hozzáadott fájl csendben többet is felhozhat.

StarterWhat triggers itTypical failure
Init script and templated unitsBoot, plus anything in the autostart listStarts every config, not the one you meant
NetworkManager secondaryActivation of the base Wi-Fi or Ethernet profileNothing happens until that base link comes up
Hand-written unit or wrapperWhatever its WantedBy and ExecStart sayRuns a different binary or environment than your shell

A második sor az, amelyet az emberek rosszul állítanak be. A NetworkManager tartja az importált profilt, és elindítja, de csak egy másik kapcsolat másodlagosaként, ami azt jelenti, hogy a kiváltó a hálózati kapcsolathoz tartozik, nem a VPN-hez.

Hasonlítsa össze a beállítás költségét és a hatókört

Az init-szkript útja egy sort igényel, és lefedi a gépen lévő minden konfigurációt. Ez routernek megfelelő, egy több hálózatot használó laptopnak viszont nem. A NetworkManager útja egy UUID-keresést igényel, és az alagutat egy alapkapcsolathoz köti. A munkahelyi SSID-n feljön, egy szállodai hálózaton lent marad.

A kézzel írt unit a legtöbbe kerül, és a legtöbb irányítást adja, beleértve a más szolgáltatásokhoz viszonyított sorrendet is. A hatókör a döntő tényező. Ha a gépnek egy hálózata és egy alagútja van, a csomagolt szolgáltatás őszinte és kiszámítható. Ha az alagútnak egy adott Wi-Fi-hálózatot kell követnie, a másodlagos az egyetlen a három közül, amely ezt a feltételt extra szkriptelés nélkül fejezi ki.

Válasszon egy gazdát, és távolítsa el a többit

A két gazda által indított profil olyan időzítést ad, amely indításról indításra változik, ami rosszabb, mint bármelyik mechanizmus önmagában. Válassza ki a gazdát, majd szándékosan kapcsolja ki a versengő utat, nem véletlenül.

# who is configured to start something?
grep -v '^#' /etc/default/openvpn
systemctl list-units 'openvpn*'
nmcli -g connection.secondaries connection show 'Work Wi-Fi'

# NetworkManager: attach the tunnel to the base link by UUID
TUNNEL=$(nmcli -g UUID connection show 'Corp Tunnel')
nmcli connection modify 'Work Wi-Fi' +connection.secondaries "$TUNNEL"

Ha a csomagolt utat vonják ki, tegye a megfelelő sorrendben: állítsa a AUTOSTART értékét none-re, futtassa a systemctl daemon-reload parancsot, hogy a generált unitek átvegyék az új listát, majd kapcsolja ki a sablonpéldányt, amelyet már nem szeretne. Az újratöltés kihagyása aktívban hagyja a régi uniteket, és úgy tűnik, mintha a változásnak nem lett volna hatása.

A megakadó leállítás külön probléma, korlátozott válasszal. A TimeoutStopSec korlátozza, mennyi ideig vár a systemd a SIGKILL elküldése előtt. A drop-in fájl a megfelelő hely ennek beállítására, mert a csomagolt unit szerkesztése elveszíti a változást a következő frissítéskor.

Ellenőrizze, mi indult el valójában

Indítsa újra a gépet, és olvassa a bizonyítékokat ahelyett, hogy a konfigurációs fájlban bízna. Az alagutat birtokló unit aktív állapotot és az indításhoz illeszkedő kezdési időbélyeget mutat, a VPN-interfész pedig már a bejelentkezés előtt létezni fog.

systemctl is-enabled openvpn-client@office
systemctl status openvpn-client@office --no-pager
nmcli -f GENERAL.STATE,connection.secondaries connection show 'Work Wi-Fi'
ip -brief link show tun0

Ide tartozik még egy ellenőrzés: győződjön meg arról, hogy az unit ExecStart bejegyzése arra a binárisra mutat, amelyre gondol. A helyben fordított kliens vagy a snap csomag gyakran kifejezett útvonalat vagy snap run burkolót igényel, mert a systemd nem örökli a héja keresési sorrendjét. A command -v openvpn és az unit fájl összevetése másodpercek alatt eldönti ezt.

Írja a kiválasztott gazdát a gép jegyzeteibe, a profil neve mellé. A következő ember, aki egy hiányzó alagutat hibakeres, arról a sorból indul, ahelyett hogy megismételné az összehasonlítást.

Kapcsolódó cikkek