Systemd tàbí NetworkManager: ta ni ó ń dá VPN sílẹ̀ nígbà ìbẹ̀rẹ̀ ẹ̀rọ?
Ọ̀nà mẹ́ta lè gbé profáìlì Ubuntu kan náà ró, ọ̀kọ̀ọ̀kan ní ohun ìdánilẹ́kọ̀ọ́ tí ó yàtọ̀. Fi wọ́n wé, pa olóhun kan mọ́ kí o sì yọ ẹ̀dà àpèyí kúrò.
Ẹ̀rọ Ubuntu méjì láti inú àwòrán kan náà, profáìlì VPN kan, àbájáde òdì kejì nígbà ìwọlé: lórí ọ̀kan, ọ̀nà abẹ́lẹ̀ ti gòkè ṣáájú kí ojú-iṣẹ́ ó farahàn; lórí èkejì, kò gòkè rárá. Profáìlì kì í ṣe ohun tí ó ń yípadà níbí. Ìyàtọ̀ ni pé èwo nínú ẹ̀ka mẹ́ta ni a pàṣẹ fún láti dá a sílẹ̀, àwọn mẹ́ta náà kò sì pín ìtẹ̀ mọ́ra kan.
Fífi wọ́n wé pọ̀ ní ẹ̀gbẹ́ yá kíákíá ju ṣíṣe àfojúsùn. Ọ̀kọ̀ọ̀kan wọn kùnà ní ọ̀nà tí a lè dá mọ̀, ìyẹn sì ni ó mú kí ìfiwéra náà yẹ.
Àwọn olùdásílẹ̀ mẹ́ta pẹ̀lú ohun ìdánilẹ́kọ̀ọ́ mẹ́ta
Iṣẹ́ openvpn tí a kó sínú àpò ni ọ̀nà tí ó pẹ́ jùlọ. Script init rẹ̀ ń ka àkójọ ìbẹ̀rẹ̀ aládàáṣe láti /etc/default/openvpn. Bí àkójọ yẹn bá jẹ́ àṣírí tàbí kí a fi í sílẹ̀ lófò, script yóò dá gbogbo ìṣètò tí ó bá rí nínú àpò yẹn sílẹ̀ dípò ọ̀kan ṣoṣo tí o fi kún. Fáìlì kan tí a fi kún fún ọ̀nà abẹ́lẹ̀ kan lè gbé ọ̀pọ̀ ró ní ìdákẹ́jẹ́.
| 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 |
Ìlà kejì ni àwọn ènìyàn ń ṣètò ní ọ̀nà tí kò tọ́. NetworkManager ń di profáìlì tí a kó wọlé mú yóò sì dá a sílẹ̀, ṣùgbọ́n kìkì gẹ́gẹ́ bí ẹlẹ́ẹ̀kejì ìsopọ̀ mìíràn, ìyẹn ni pé ohun ìdánilẹ́kọ̀ọ́ náà jẹ́ ti ìsopọ̀ nẹ́tíwọ́kì kì í ṣe ti VPN.
Fi iye ìṣètò àti àyíká wé
Ọ̀nà script init ń gba ìlà kan ṣoṣo ó sì bo gbogbo ìṣètò lórí ẹ̀rọ. Ìyẹn dára fún router, kò sì dára fún kọ̀mpútà amóhùnmáwòrán tí ó ń wọ oríṣiríṣi nẹ́tíwọ́kì. Ọ̀nà NetworkManager ń gba wíwá UUID kan ó sì so ọ̀nà abẹ́lẹ̀ mọ́ ìsopọ̀ ìpìlẹ̀ kan. Ó ń gòkè lórí SSID iṣẹ́, ó sì ń wà ní ìsàlẹ̀ lórí nẹ́tíwọ́kì òtẹ́ẹ̀lì.
Unit tí a kọ pẹ̀lú ọwọ́ ń ná jùlọ ó sì ń fúnni ní ìṣàkóso jùlọ, pẹ̀lú ìtòlẹ́sẹẹsẹ sí àwọn iṣẹ́ mìíràn. Àyíká ni ohun tí ó pinnu. Bí ẹ̀rọ bá ní nẹ́tíwọ́kì kan àti ọ̀nà abẹ́lẹ̀ kan, iṣẹ́ tí a kó sínú àpò jẹ́ òtítọ́, a sì lè retí rẹ̀. Bí ọ̀nà abẹ́lẹ̀ yẹn bá ní láti tẹ̀lé nẹ́tíwọ́kì Wi-Fi pàtó kan, ẹlẹ́ẹ̀kejì ni ọ̀kan ṣoṣo nínú mẹ́ta tí ó ń fi ipò yẹn hàn láìsí script àfikún.
Yan olóhun kan kí o sì yọ àwọn yòókù kúrò
Profáìlì tí olóhun méjì ń dá sílẹ̀ ń mú àkókò tí ó ń yípadà láàrín ìbẹ̀rẹ̀ jáde, ìyẹn burú ju ọ̀kọ̀ọ̀kan àwọn ọ̀nà náà lọ. Yan olóhun náà, kí o sì fi àfọwọ́kọ́ pa ọ̀nà ìdíje náà, kì í ṣe lójijì.
# 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"
Bí ọ̀nà tí a ń yọ kúrò bá jẹ́ ti àpò, ṣe é ní ìtòlẹ́sẹẹsẹ tí ó tọ́: ṣètò AUTOSTART sí none, ṣe systemctl daemon-reload kí àwọn unit tí a dá lè gba àkójọ tuntun, lẹ́yìn náà pa ẹ̀dà àwòkọ́ṣe tí o kò nílò mọ́ náà mọ́. Bí a bá fojú fo ìtúnṣe, àwọn unit àtijọ́ yóò wà ní ìgbònú, yóò sì dàbí ẹni pé ìyípadà náà kò ní ipa.
Ìdúró tí ó ń kọ́kọ́rọ́ jẹ́ ìṣòro ọ̀tọ̀ pẹ̀lú ìdáhùn tí ó ní ààlà. TimeoutStopSec ń fi ààlà sí bí systemd yóò dúró pẹ́ tó kí ó tó rán SIGKILL. Fáìlì drop-in ni ibi tí ó tọ́ láti ṣètò rẹ̀, nítorí ṣíṣe àtúnṣe sí unit àpò yóò padánu ìyípadà ní ìgbéga tókàn.
Ṣàyẹ̀wò ohun tí ó kúkú bẹ̀rẹ̀
Tún ẹ̀rọ ṣe kí o sì ka ẹ̀rí dípò gbígbẹ́kẹ̀lé fáìlì ìṣètò. Unit tí ó ni ọ̀nà abẹ́lẹ̀ yóò fi ipò alágbára àti àmì àkókò ìbẹ̀rẹ̀ tí ó bá ìbẹ̀rẹ̀ mu hàn, wíwọlé VPN yóò sì wà kí o tó wọlé.
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
Ìgbéléwọ̀n mìíràn tún yẹ níbí: ṣàyẹ̀wò pé ExecStart unit ń tọ́ka sí binary tí o ń rò. Ẹ̀rọ aláṣẹ́ tí a kó níbílẹ̀ tàbí àpò snap sábà nílò ọ̀nà tí ó ṣe kedere tàbí ìbòjú snap run, nítorí systemd kì í jogún ìtòlẹ́sẹẹsẹ wíwá shell rẹ. Fífi command -v openvpn wé fáìlì unit yóò yanjú rẹ̀ ní ìṣẹ́jú àáyá.
Kọ olóhun tí o yàn sínú àwọn àkọsílẹ̀ ẹ̀rọ, lẹ́gbẹ̀ẹ́ orúkọ profáìlì. Ẹni tókàn tí yóò ṣàtúnṣe ọ̀nà abẹ́lẹ̀ tí ó sọnù yóò bẹ̀rẹ̀ láti ìlà yẹn dípò àtúnṣe ìfiwéra náà.