Systemd dhidi ya NetworkManager: nani huanzisha VPN wakati wa kuwasha?
Mbinu tatu zinaweza kuwasha wasifu sawa wa Ubuntu, kila moja na kichocheo tofauti. Zilinganishe, baki na mmiliki mmoja na uondoe nakala.
Kompyuta mbili za Ubuntu kutoka picha moja, wasifu mmoja wa VPN, matokeo kinyume wakati wa kuingia: kwenye moja handaki iko juu kabla ya dawati kuonekana, kwenye nyingine haiji juu kamwe. Wasifu si kigezo hapa. Kinachotofautiana ni sehemu ipi kati ya tatu ilipewa amri kuianzisha, na hizo tatu hazishiriki swichi moja.
Kuzilinganisha bega kwa bega ni haraka kuliko kubahatisha. Kila moja inashindwa kwa namna inayotambulika, na hilo ndilo linafanya ulinganisho kuwa wa maana.
Vianzishi vitatu vyenye vichocheo vitatu tofauti
Huduma ya openvpn iliyowekwa kwenye kifurushi ni njia ya zamani zaidi. Skripti yake ya init husoma orodha ya kuanzisha kiotomatiki kutoka /etc/default/openvpn. Ikiwa orodha hiyo imefungiwa maoni au imeachwa tupu, skripti huanzisha kila usanidi inaoipata katika folda hiyo badala ya ule mmoja ulioongeza. Faili moja iliyoongezwa kwa handaki moja inaweza kuinua kadhaa kimya kimya.
| 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 |
Mstari wa pili ndio ambao watu huusanidi vibaya. NetworkManager inashikilia wasifu ulioingizwa na itauanzisha, lakini tu kama ya pili ya muunganisho mwingine, kumaanisha kichocheo ni cha kiungo cha mtandao na si cha VPN.
Linganisha gharama ya usanidi na wigo
Njia ya skripti ya init inagharimu mstari mmoja na inashughulikia kila usanidi kwenye mashine. Hiyo ni sawa kwa rauta na si sahihi kwa kompyuta ya mkononi inayoungana na mitandao tofauti. Njia ya NetworkManager inagharimu utafutaji wa UUID na inafunga handaki kwenye muunganisho mmoja wa msingi. Hupanda kwenye SSID ya kazini na kubaki chini kwenye mtandao wa hoteli.
Unit iliyoandikwa kwa mkono inagharimu zaidi na inatoa udhibiti mkubwa zaidi, ikiwa ni pamoja na mpangilio kwa huduma nyingine. Wigo ndio kigezo cha maamuzi. Ikiwa mashine ina mtandao mmoja na handaki moja, huduma iliyowekwa kwenye kifurushi ni ya uaminifu na inayotabirika. Ikiwa handaki inapaswa kufuata mtandao maalum wa Wi-Fi, ile ya pili ndiyo pekee kati ya tatu inayoonyesha sharti hilo bila uandishi wa skripti zaidi.
Chagua mmiliki mmoja na uondoe wengine
Wasifu unaoanzishwa na wamiliki wawili huzalisha muda unaobadilika kati ya kuwashe, jambo ambalo ni baya kuliko kila moja ya mbinu hizo peke yake. Chagua mmiliki, kisha uzime njia pinzani kwa makusudi na si kwa bahati mbaya.
# 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"
Ikiwa njia inayostaafishwa ni ile ya kifurushi, fanya kwa mpangilio sahihi: weka AUTOSTART kuwa none, endesha systemctl daemon-reload ili unit zilizozalishwa zichukue orodha mpya, kisha uzime mfano wa kiolezo ambao huna haja nao tena. Kuruka upakiaji upya kunaacha unit za zamani zikiwa hai, na inaonekana kana kwamba mabadiliko hayakuwa na athari yoyote.
Kusimama kunakoning’inia ni tatizo tofauti lenye jibu dogo. TimeoutStopSec hupunguza muda ambao systemd husubiri kabla ya kutuma SIGKILL. Faili ya drop-in ndiyo mahali sahihi pa kuiweka, kwa sababu kuhariri unit ya kifurushi hupoteza mabadiliko kwenye uboreshaji unaofuata.
Thibitisha kilichoanzishwa kwa hakika
Washa upya na usome ushahidi badala ya kuamini faili ya usanidi. Unit inayomiliki handaki itaonyesha hali hai na muhuri wa muda wa kuanza unaolingana na kuwasha, na kiolesura cha VPN kitakuwepo kabla ya kuingia.
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
Hapa kuna ukaguzi mmoja zaidi: thibitisha kwamba ExecStart ya unit inaelekeza kwenye binary unayodhani. Mteja aliyekusanywa kienyeji au kifurushi cha snap mara nyingi huhitaji njia bayana au kifuniko snap run, kwa sababu systemd hairithi mpangilio wa utafutaji wa shell yako. Kulinganisha command -v openvpn na faili ya unit hutatua hilo kwa sekunde.
Andika mmiliki uliyechagua kwenye madokezo ya mashine, kando ya jina la wasifu. Mtu anayefuata kutatua handaki inayokosekana ataanzia mstari huo badala ya kurudia ulinganisho.