Systemd د NetworkManager په وړاندې: د بوټ پر مهال VPN څوک پیلوي؟
درې میکانېزمونه کولای شي هماغه Ubuntu پروفایل پورته کړي، هر یو خپل جلا محرک لري. دوی پرتله کړئ، یو مالک وساتئ او تکرار لرې کړئ.
د یوې ورته انځور دوه Ubuntu ماشینونه، یو VPN پروفایل، د ننوتلو پر مهال مخالفې پایلې: پر یوه کې تونل د ډیسکټاپ له ښکارېدو مخکې پورته دی، پر بل کې هېڅکله نه پورته کېږي۔ دلته پروفایل بدلېدونکی عامل نه دی۔ توپیر په دې کې دی چې د درې برخو له څخه کومې ته د هغه د پیلولو امر شوی، او دا درې یو سویچ شریک نه کوي۔
د دوی څنګ په څنګ پرتله کول له اټکل څخه ګړندي دي۔ هر یو په پېژندل کېدونکې طریقه ناکامېږي، او همدا پرتله کول ارزښتناکوي۔
درې پیلوونکي د درې جلا محرکونو سره
بسته شوې openvpn خدمت تر ټولو زوړ لار ده۔ د هغې init سکریپټ د /etc/default/openvpn څخه د اتوماتیک پیل لیست لولي۔ که هغه لیست تبصره شوی یا تش پرېښودل شوی وي، سکریپټ په هغه فولډر کې موندل شوې هر ترتیب پیلوي، نه یوازې هغه یو چې تاسو اضافه کړی۔ یو فایل چې د یو تونل لپاره اضافه شوی وي کولای شي په غلې مانا څو پورته کړي۔
| 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 |
دوهمه کرښه هغه ده چې خلک یې غلط ترتیبوي۔ NetworkManager وارد شوی پروفایل ساتي او هغه به پیل کړي، خو یوازې د بلې اړیکې د دوهمې برخې په توګه، یعنې محرک د شبکې لینک پورې اړه لري نه VPN ته۔
د ترتیب لګښت او د پوښښ حد پرتله کړئ
د init سکریپټ لار یوه کرښه لګښت لري او پر ماشین باندې هره ترتیب پوښي۔ دا د روټر لپاره سمه ده او د لپ ټاپ لپاره غلطه چې مختلفو شبکو ته نښلېږي۔ د NetworkManager لار د UUID پلټنې لګښت لري او تونل له یوې بنسټیزې اړیکې سره تړي۔ دا د کار په SSID کې پورته کېږي او د هوټل په شبکه کې لاندې پاتې کېږي۔
په لاس لیکل شوی unit تر ټولو ډېر لګښت لري او تر ټولو ډېر کنټرول ورکوي، په شمول د نورو خدمتونو په وړاندې ترتیب۔ د پوښښ حد فیصله کوونکی عامل دی۔ که ماشین یوه شبکه او یو تونل ولري، بسته شوې خدمت رښتینی او د وړاندوینې وړ دی۔ که تونل باید یوه ځانګړې Wi-Fi شبکه تعقیب کړي، دوهمه برخه له درېیو څخه یوازینی ده چې هغه شرط پرته له اضافي سکریپټ لیکنې څرګندوي۔
یو مالک وټاکئ او نور لرې کړئ
هغه پروفایل چې دوه مالکان پیلوي د بوټونو تر منځ بدلېدونکی وخت رامنځته کوي، چې له هر یو میکانېزم څخه په جلا توګه بدتر دی۔ مالک وټاکئ، بیا سیالې لار په ناڅاپي نه، بلکې په قصد بند کړئ۔
# 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"
که هغه لار چې تقاعد کېږي بسته شوې لار وي، په سم ترتیب یې کړئ: AUTOSTART پر none وټاکئ، systemctl daemon-reload چل کړئ تر څو رامنځته شوي unit نوی لیست واخلي، بیا هغه ټیمپلیټ انسټنس چې نور نه غواړئ بند کړئ۔ د بیا لوستنې پرېښودل زاړه unit فعالې ساتي، او داسې ښکاري چې بدلون هېڅ اغېزه نه لرله۔
هغه ودرېدل چې ځوړند پاتې کېږي جلا ستونزه ده او محدود ځواب لري۔ TimeoutStopSec محدودوي چې systemd د SIGKILL له لېږلو مخکې څومره انتظار وکړي۔ drop-in فایل د دې د ټاکلو سم ځای دی، ځکه چې بسته شوي unit سمول به په راتلونکي تازه کې بدلون له لاسه ورکړي۔
وګورئ چې واقعاً څه پیل شول
بیا بوټ کړئ او د ترتیب فایل ته د باور پر ځای شواهد ولولئ۔ د تونل مالک unit به فعال حالت او د بوټ سره سمون لرونکی د پیل وخت ښکاره کړي، او VPN انټرفېس به ستاسو له ننوتلو مخکې موجود وي۔
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
یو بل کنټرول هم دلته ځای لري: ډاډ ترلاسه کړئ چې د unit ExecStart هغه باینري ته اشاره کوي چې تاسو یې فکر کوئ۔ په سیمه کې کمپایل شوی کلاینټ یا snap بسته اکثراً روښانه لار یا snap run پوښ ته اړتیا لري، ځکه چې systemd ستاسو د شل د پلټنې ترتیب نه ارثي کوي۔ command -v openvpn د unit فایل سره پرتله کول دا په ثانیو کې حل کوي۔
ټاکل شوی مالک د پروفایل نوم تر څنګ د ماشین په یادښتونو کې ولیکئ۔ بل څوک چې ورک تونل ډیبګ کړي به پرتله تکرار نه کړي، بلکې له هماغې کرښې پیل کړي۔