Twee Ubuntu-masjiene uit dieselfde beeld, een VPN-profiel, teenoorgestelde uitkomste by aanmelding: op die een is die tonnel op voordat die lessenaar verskyn, en op die ander kom dit nooit op nie. Die profiel is nie hier die veranderlike nie. Wat verskil, is watter van drie komponente opdrag gekry het om dit te begin, en dié drie deel nie ’n skakelaar nie.

Om hulle langs mekaar te vergelyk is vinniger as om te raai. Elkeen misluk op ’n herkenbare manier, en dit is wat die vergelyking die moeite werd maak.

Drie beginners met drie verskillende snellers

Die verpakte openvpn-diens is die oudste pad. Sy inisiasieskrip lees ’n outostart-lys uit /etc/default/openvpn. As daardie lys uitgekommenteer of leeg gelaat word, begin die skrip elke konfigurasie wat hy in daardie gids vind eerder as die enkele een wat jy bygevoeg het. Een lêer wat vir een tonnel bygevoeg is, kan stilweg verskeie opbring.

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

Die tweede ry is die een wat mense verkeerd opstel. NetworkManager hou die ingevoerde profiel en sal dit begin, maar net as ’n sekondêre van ’n ander verbinding, wat beteken die sneller hoort by die netwerkskakel eerder as by die VPN.

Vergelyk die opstelkoste en die omvang

Die inisiasieskrip-roete kos een reël en dek elke konfigurasie op die masjien. Dit is reg vir ’n router en verkeerd vir ’n skootrekenaar wat by verskillende netwerke aansluit. Die NetworkManager-roete kos ’n UUID-opsoeking en bind die tonnel aan een basisverbinding. Dit kom op by die werk-SSID en bly af op ’n hotelnetwerk.

’n Handgeskrewe eenheid kos die meeste en koop die meeste beheer, insluitend ordening teenoor ander dienste. Omvang is die beslissende faktor. As die masjien een netwerk en een tonnel het, is die verpakte diens eerlik en voorspelbaar. As die tonnel ’n spesifieke Wi-Fi-netwerk moet volg, is die sekondêre die enigste van die drie wat daardie voorwaarde sonder ekstra scripting uitdruk.

Kies een eienaar en verwyder die ander

’n Profiel wat deur twee eienaars begin word, lewer tydsberekening wat tussen herstarts verander, wat erger is as enige meganisme alleen. Kies die eienaar en deaktiveer dan die mededingende pad doelbewus eerder as per ongeluk.

# 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"

As dit die verpakte pad is wat afgetree word, doen dit in die regte volgorde: stel AUTOSTART op none, voer systemctl daemon-reload uit sodat die gegenereerde eenhede die nuwe lys optel, en deaktiveer dan die sjabloon-instantie wat jy nie meer wil hê nie. Om die herlaai oor te slaan, laat die ou eenhede aktief, wat lyk asof die verandering geen effek gehad het nie.

’n Stop wat hang, is ’n aparte probleem met ’n begrensde antwoord. TimeoutStopSec beperk hoe lank systemd wag voordat SIGKILL gestuur word. ’n Drop-in is die regte plek om dit te stel, want om die verpakte eenheid te wysig, verloor die verandering by die volgende opgradering.

Verifieer wat werklik begin het

Herbegin en lees die bewyse in plaas daarvan om die konfigurasielêer te vertrou. Die eenheid wat die tonnel besit, sal ’n aktiewe toestand en ’n begintydstempel wys wat by die opstart pas, en die VPN-koppelvlak sal bestaan voordat jy aanmeld.

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

Nog een kontrol hoort hier: bevestig dat die eenheid se ExecStart na die binary wys wat jy dink dit doen. ’n Plaaslik gekompileerde kliënt of ’n snap-pakket benodig dikwels ’n eksplisiete pad of ’n snap run-wikkel, want systemd erf nie jou skulp se soekorde nie. Om command -v openvpn met die eenheidlêer te vergelyk, beslis dit in sekondes.

Skryf die gekose eienaar in die masjien se notas, langs die profielnaam. Die volgende persoon wat ’n ontbrekende tonnel ontfout, sal by daardie reël begin eerder as om die vergelyking te herhaal.

Verwante artikels