Systemd vs NetworkManager: kes käivitab VPN-i alglaadimisel?
Kolm mehhanismi võivad sama Ubuntu profiili üles tõsta, igaühel erinev päästik. Võrrelge neid, jätke üks omanik ja kõrvaldage duplikaat.
Kaks Ubuntu masinat samast kujutisest, üks VPN profiil, vastupidised tulemused sisselogimisel: ühel on tunnel üleval enne, kui töölaud ilmub, teisel ei tõuse see kunagi. Profiil ei ole siin muutuja. Erinevus on selles, millisele kolmest komponendist anti käsk see käivitada, ja need kolm ei jaga ühte lülitit.
Nende kõrvuti võrdlemine on kiirem kui oletamine. Igaüks neist ebaõnnestub äratuntaval viisil ja just seetõttu tasub võrdlemine ära.
Kolm käivitajat kolme erineva päästikuga
Pakendatud openvpn teenus on vanim tee. Selle init-skript loeb automaatkäivituse nimekirja failist /etc/default/openvpn. Kui see nimekiri on kommenteeritud või tühi, käivitab skript iga konfiguratsiooni, mille ta selles kataloogis leiab, mitte ainult selle ühe, mille te lisasite. Ühe tunneli jaoks lisatud fail võib vaikselt üles tõsta mitu.
| 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 |
Teine rida on see, mille inimesed valesti seadistavad. NetworkManager hoiab imporditud profiili ja käivitab selle, kuid ainult teise ühenduse sekundaarseosana, mis tähendab, et päästik kuulub võrgulingile, mitte VPN-ile.
Võrrelge seadistamise kulu ja ulatust
Init-skripti tee maksab ühe rea ja katab kõik masina konfiguratsioonid. See sobib ruuterile ja on vale sülearvutile, mis liitub erinevate võrkudega. NetworkManageri tee maksab UUID otsingu ja seob tunneli ühe põhiühendusega. See tõuseb töö SSID-l ja jääb hotellivõrgus alla.
Käsitsi kirjutatud unit maksab kõige rohkem ja ostab kõige rohkem kontrolli, sealhulgas järjestuse teiste teenuste suhtes. Ulatus on otsustav tegur. Kui masinal on üks võrk ja üks tunnel, on pakendatud teenus aus ja etteaimatav. Kui tunnel peab järgima kindlat Wi-Fi võrku, on sekundaarne ainus kolmest, mis väljendab seda tingimust ilma täiendava skriptimiseta.
Valige üks omanik ja eemaldage teised
Kahe omaniku käivitatud profiil tekitab ajastuse, mis muutub alglaadimiste vahel, mis on hullem kui ükski mehhanism eraldi. Valige omanik ja keelake seejärel konkureeriv tee meelega, mitte kogemata.
# 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"
Kui pensionile saadetakse pakendatud tee, tehke seda õiges järjekorras: seadke AUTOSTART väärtusele none, käivitage systemctl daemon-reload, et genereeritud unitid võtaksid uue nimekirja, ja keelake seejärel mall-instants, mida te enam ei soovi. Uuestilaadimise vahelejätmine jätab vanad unitid aktiivseks ja tundub, nagu muudatusel poleks mingit mõju.
Hanguma jääv peatus on eraldi probleem piiratud vastusega. TimeoutStopSec piirab, kui kaua systemd ootab enne SIGKILLi saatmist. Drop-in on õige koht selle seadmiseks, sest pakendatud uniti muutmine kaob järgmisel uuendamisel.
Kontrollige, mis tegelikult käivitus
Taaskäivitage ja lugege tõendeid, selle asemel et konfiguratsioonifaili usaldada. Tunneli omanik-unit näitab aktiivset olekut ja alglaadimisega sobivat algusaega ning VPN-liides on olemas enne, kui te sisse logite.
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
Siia kuulub veel üks kontroll: veenduge, et uniti ExecStart osutab binaarile, mida te arvate. Kohapeal kompileeritud klient või snap-pakett vajab sageli selget teed või snap run-ümbrist, sest systemd ei päri teie kesta otsingujärjekorda. command -v openvpn võrdlemine uniti failiga lahendab selle sekunditega.
Kirjutage valitud omanik masina märkmetesse profiili nime kõrvale. Järgmine inimene, kes puuduva tunneliga tegeleb, alustab sellest realt, selle asemel et võrdlemist korrata.