Systemd tsjin NetworkManager: wa begjint de VPN by it opstarten?
Trije meganismen kinne itselde Ubuntu-profyl omheech bringe, elk mei in oare trigger. Fergelykje se, hâld ien eigner en helje it duplikaat fuort.
Twa Ubuntu-masines út deselde image, ien VPN-profyl, tsjinoerstelde resultaten by it oanmelden: by de iene stiet de tunnel oer ein foardat it buroblêd ferskynt, by de oare komt er nea omheech. It profyl is hjir net de fariabele. Wat ferskilt, is hokker fan trije komponinten opdracht krige om it te begjinnen, en dy trije diele gjin ien skeakel.
Se neist elkoar fergelykje is flugger as riede. Elk fan harren mislearret op in werkenbere manier, en dat is wat de fergeliking de muoite wurdich makket.
Trije begjinners mei trije ferskillende triggers
De ferpakte openvpn-tsjinst is it âldste paad. It init-skript lêst in autostart-list út /etc/default/openvpn. As dy list útkommentearre of leech litten is, begjint it skript elke konfiguraasje dy’t it yn dy map fynt, ynstee fan de iene dy’t jo tafoege hawwe. Ien bestân tafoege foar ien tunnel kin stil mear as ien omheech bringe.
| 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 |
De twadde rige is dy’t minsken ferkeard ynstelle. NetworkManager hâldt it ymportearre profyl en sil it begjinne, mar allinnich as sekundêr fan in oare ferbining, wat betsjut dat de trigger by de netwurkkeppeling heart en net by de VPN.
Fergelykje de opsetkosten en de omfang
It paad fan it init-skript kostet ien rigel en dekt elke konfiguraasje op ’e masine. Dat is goed foar in router en ferkeard foar in laptop dy’t him by ferskillende netwurken oanslút. It paad fan NetworkManager kostet in UUID-syksyk en bynt de tunnel oan ien basisferbining. Hy komt omheech op it SSID fan it wurk en bliuwt del op in hotelnetwurk.
In hânskreaune unit kostet it meast en keapet de measte kontrôle, ynklusyf oarderjen tsjin oare tsjinsten. Omfang is de beslissende faktor. As de masine ien netwurk en ien tunnel hat, is de ferpakte tsjinst earlik en foarsisber. As de tunnel in spesifyk Wi-Fi-netwurk folgje moat, is de sekundêre de iennichste fan ’e trije dy’t dy betingst sûnder ekstra scripting útdrukt.
Kies ien eigner en ferwiderje de oaren
In profyl dat troch twa eigners begûn wurdt, jout timing dy’t tusken opstarts feroaret, wat minder is as ien fan beide meganismen allinnich. Kies de eigner en skeakelje dan it konkurrearjende paad mei opsetsin út, net by ûngelok.
# 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 it it ferpakte paad is dat ôfstjitten wurdt, doch it dan yn ’e juste folchoarder: set AUTOSTART op none, rin systemctl daemon-reload sadat de generearre units de nije list ophelje, en skeakelje dan de sjabloan-ynstânsje út dy’t jo net mear wolle. It oerslaan fan it werladen lit de âlde units aktyf, wat derút sjocht as hie de feroaring gjin effekt.
In stop dy’t hinget is in apart probleem mei in beheind antwurd. TimeoutStopSec beheint hoefolle systemd wachtet foardat SIGKILL stjoerd wurdt. In drop-in is it juste plak om it te setten, want it bewurkjen fan ’e ferpakte unit ferliest de feroaring by de folgjende upgrade.
Kontrolearje wat eins begûn is
Start opnij en lês it bewiis ynstee fan it konfiguraasjebestân te fertrouwen. De unit dy’t de tunnel besit, sil in aktive steat en in begjintiidstimpel sjen litte dy’t by it opstarten past, en de VPN-ynterface sil bestean foardat jo oanmelde.
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
Ien kontrôle mear heart hjir: befêstigje dat de ExecStart fan ’e unit nei it binêre bestân wiist dat jo tinke. In lokaal kompilearre klant of in snap-pakket hat faak in eksplisyt paad of in snap run-wrapper nedich, want systemd erft de sykfolchoarder fan jo shell net. command -v openvpn fergelykje mei it unit-bestân makket dat yn sekonden klear.
Skriuw de keazen eigner yn ’e notysjes fan ’e masine, njonken de profylnamme. De folgjende persoan dy’t in ûntbrekkende tunnel debugt, begjint by dy rigel ynstee fan ’e fergeliking te werheljen.