Systemd oder NetworkManager: wien start de VPN beim Booten?
Dräi Mechanismen kënnen deeselwechte Ubuntu-Profil eropbréngen, jiddwereen mat engem aneren Ausléiser. Vergläicht se, behält een Eegentemer a leet den Duplikat of.
Zwou Ubuntu-Maschinnen aus demselben Image, ee VPN-Profil, entgéigegesate Resultater beim Login: op där enger ass den Tunnel erop, ier den Desktop erschéngt, an op där anerer kënnt en ni erop. De Profil ass hei net d’Variabel. Wat sech ënnerscheet, ass wéi eng vun dräi Komponenten den Uerder krut en ze starten, an déi dräi deelen net ee Schalter.
Se niewenteneen ze vergläichen ass méi séier wéi ze roden. Jiddwerengen dovunner feelt op eng erkennbar Manéier, an dat ass wat de Verglach derwäert mécht.
Dräi Startere mat dräi verschiddenen Ausléiser
Den agepakten openvpn-Service ass den eelste Wee. Säin Init-Skript liest eng Autostart-Lëscht aus /etc/default/openvpn. Wann déi Lëscht auskommentéiert oder eidel gelooss ass, startt d’Skript all Konfiguratioun, déi et an deem Verzeechnes fënnt, amplaz vun där eenzeger, déi Dir bäigefüügt hutt. Eng eenzeg Datei, déi fir een Tunnel bäigefüügt gouf, kann ettlech still eropbréngen.
| Starter | What triggers it | Typical failure |
|---|---|---|
| Init script and templated units | Boot, plus anything in the autostart list | Starts every config, not the one you meant |
| NetworkManager secondary | Activation of the base Wi-Fi or Ethernet profile | Nothing happens until that base link comes up |
| Hand-written unit or wrapper | Whatever its WantedBy and ExecStart say | Runs a different binary or environment than your shell |
Déi zweet Zeil ass déi, déi d’Leit falsch konfiguréieren. NetworkManager hält de importéierte Profil a wäert en starten, awer just als Sekundär vun enger anerer Verbindung, wat bedeit, datt den Ausléiser zum Netzwierk-Link gehéiert an net zum VPN.
Vergläicht d’Käschte vun der Astellung an de Geltungsberäich
De Wee iwwer den Init-Skript kascht eng Linn an deckt all Konfiguratioun op der Maschinn of. Dat ass richteg fir e Router a falsch fir e Laptop, deen a verschidden Netzwierker geet. De Wee iwwer NetworkManager kascht eng UUID-Sich an bindt den Tunnel un eng Basisverbindung. En geet an der Aarbechts-Wi-Fi erop a bleift an engem Hotelnetz ënnen.
Eng handgeschriwwen Unit kascht am meeschten a kaaft déi meescht Kontroll, dorënner d’Reiefolleg vis-à-vis vun anere Servicer. De Geltungsberäich ass dee entscheedende Faktor. Wann d’Maschinn een Netz an een Tunnel huet, ass den agepakte Service éierlech a viraussobar. Wann den Tunnel engem bestëmmten Wi-Fi-Netz soll follegen, ass de Sekundär deen eenzegen vun den dräi, deen déi Bedingung ouni zousätzlech Skripten ausdréckt.
Wielt een Eegentemer a entfernt déi anerer
E Profil, deen zwéin Eegentemer starten, produzéiert Timing, deen sech tëschent Boote ännert, wat méi schlëmm ass wéi jiddwereen vun de Mechanismen eleng. Wielt den Eegentemer, an deaktivéiert dann de konkurréierende Wee mat Absicht an net duerch Zufall.
# 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"
Wann dee agepakte Wee ofgeschaaft gëtt, maacht et an der richteger Reiefolleg: setzt AUTOSTART op none, féiert systemctl daemon-reload aus, sou datt déi generéiert Uniten déi nei Lëscht ophuelen, an deaktivéiert duerno d’Schablouninstanz, déi Dir net méi wëllt. Wann d’Noluede iwwersprongen gëtt, bleiwen déi al Uniten aktiv, wat ausgesäit, wéi wann d’Ännerung keen Effekt hätt.
En Halt, deen hänke bleift, ass e getrennte Problem mat enger begrenzter Äntwert. TimeoutStopSec begrenzt, wéi laang systemd waart, ier SIGKILL geschéckt gëtt. En Drop-in ass déi richteg Plaz, fir dat ze setzen, well d’Ännerung vun der agepakter Unit beim nächsten Update verluer geet.
Iwwerpréift, wat tatsächlech gestart gouf
Startt nei a liest d’Beweiser, amplaz der Konfiguratiounsdatei ze vertrauen. D’Unit, déi den Tunnel besëtzt, weist en aktiven Zoustand an en Zäitstempel vum Start, dee mam Booten iwwereneen ass, an d’VPN-Interface existéiert, ier Dir Iech umellt.
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
Eng weider Iwwerpréiwung gehéiert heihinner: bestätegt, datt den ExecStart vun der Unit op déi Binär weist, déi Dir mengt. En lokal kompiléierte Client oder e Snap-Paket brauch dacks en explizite Wee oder en snap run-Wrapper, well systemd d’Sichuerdnung vun Ärer Shell net ierft. Den command -v openvpn mat der Unit-Datei ze vergläichen kläert dat a Sekonnen.
Schreift den ausgewielten Eegentemer an d’Notizen vun der Maschinn, niewent dem Profilnumm. Déi nächst Persoun, déi en fehlenden Tunnel debuggt, fänkt bei där Linn un, amplaz de Verglach ze widderhuelen.