تونل بند دی، خو ماشین لا هم داسې چلند کوي لکه چې خلاص وي: یوه پوښتنه تر مهال پای ته رسېدو پورې ځوړند وي، او یوه لاره هغه انټرفېس ته اشاره کوي چې نور نشته۔ دا د هغې openconnect پروسې نښه ده چې خپل د جلا کېدو مرستندویه نه چلولو سره مړه شوه۔ هغه شبکه یي حالت چې هغې جوړ کړ لا هم نصب دی، او په سیستم کې بل هیڅ شی نه پوهېږي چې څنګه یې لرې کړي۔

ماشین په هغه ترتیب وګورئ چې حالت جوړ شوی و: پروسه، لینک، لاره، resolver۔ هره پښه وایي چې کلاینټ واقعاً ولاړ که یوازې ستاسو له ټرمینل څخه جلا شو، او همدا توپیر ټاکي چې څه سمول پکار دي که نه۔

له پروسې پیل کړئ، نه له ترتیب څخه

ترلاسه چې لارې ته لاس ووهئ، ټرمینل خلاص کړئ او وپوښتئ چې لا هم څه روان دي۔ pgrep -a openconnect هره بېلګه د خپلو دلیلونو سره لیست کوي، چې pid فایل او هغه سکریپټ ښیي چې ورته ورکړل شوی۔ هغه پروسه چې تاسو یې تمه نه لرله، فینټم تونل له هر لاګ څخه ژر تشریح کوي۔

که هیڅ نه روان وي، لینک وګورئ۔ ip link show tun0 وایي چې انټرفېس ژوندی پاتې شو که نه، او ip route show dev tun0 هغه لارې لیست کوي چې لا هم ورسره تړلې دي۔ بیا resolver په دې سره وګورئ resolvectl status۔ له بدلولو دمخه درې واړه پایلې ولیکئ، ځکه همدا ریکارډ دی چې وروسته زوړ ننوتل له نوي جلا کوي۔

هغه انټرفېس چې ولاړ شي، معمولاً خپلې لارې له ځانه وړي۔ هغه لارې چې له لینک وروسته پاتې شي، معمولاً مانا دا ده چې پروسه لا ژوندې ده یا دویم کلاینټ وسیله لري۔

همدا مرستندویه سکریپټ بدلونونه بیرته راګرځوي

openconnect پخپله انټرفېس، لارې یا د resolver ننوتنې نه لرې کوي۔ دا بهرنی مرستندویه بولي، /etc/vpnc/vpnc-script په upstream build کې او /usr/share/vpnc-scripts/vpnc-script په Debian او Ubuntu پیکجونو کې، او غوره کېږي -s سره۔ هغه سکریپټ چې تونل پورته کوي هماغه یې ړنګوي۔

که پروسه د هغه مرستندویه له بلنې پرته ووځي، حالت پاتې کېږي۔ د OpenConnect لارښود په څرګنده وایي چې پرته له سکریپټ څخه روټینګ او د نوم خدمت سم کار نه کوي، او مرستندویه د هغې برخې په توګه بیانوي چې د وتلو پر مهال د انټرفېس حالت ړنګوي۔ نو ځکه لاره مهمه ده کله چې کلاینټ په دې سره پیل کړئ -s۔

کوم سیګنال هغې لارې ته رسېږي دا د نسخو ترمنځ بدل شو۔ د 7.06 لارښود SIGTERM د سکریپټ پرېښودونکي سملاسي وتلو په توګه ګڼي۔ اوسني build INT او TERM د پاک بندګۍ په توګه مستندوي، چېرې چې غونډه وتل کېږي او مرستندویه چلېږي۔ د دوو چلندونو له اټکل کولو پرته د هغې بائنري SIGNALS برخه ولولئ چې واقعاً یې لرئ۔

man openconnect | sed -n '/^SIGNALS/,/^LIMITATIONS/p'

هغه سیګنال واستوئ چې ستاسو build یې مستندوي

کله چې سیګنال وپېژنئ، پروسه د نمونې نه بلکې pid له مخې ودروئ۔

pgrep -a openconnect
sudo kill -INT "$(cat /var/run/openconnect.pid)"

بیا د وتلو حالت باور کولو پرته د لومړي برخې درې ګوتې تکرار کړئ۔ ip link show tun0 باید ناکام شي، ip route show dev tun0 باید هیڅ ونه چاپوي، او resolvectl status باید نور VPN لینک لیست نه کړي۔

SIGHUP د بندولو تڼۍ نه ده: دا جلا کوي، سکریپټ چلوي او غونډه بیا پیل کېدونکې پرېږدي: --cookie۔ SIGUSR2 سملاسي بیا نښلولو ته اړ باسي۔ SIGKILL پاکوالی په بشپړه توګه پرېږدي، او دا مقاله سم هغه حالت ته اشاره کوي۔

resolver پرته له resolv.conf بدلولو سم کړئ

په ډېرو Ubuntu سیستمونو کې /etc/resolv.conf systemd-resolved ته سمبولیک لینک دی، نه هغه فایل چې تاسو یې سمول غواړئ۔ د هغې بدلول د هرې شبکې لپاره د نوم حل ماتوي، نه یوازې VPN۔ پرځای یې د تونل ثبت لرې کړئ:

resolvectl revert tun0
resolvectl query example.com

که سیستم د systemd-resolved پرځای resolvconf کاروي، د هر انټرفېس ریکارډ پاتې کېږي ترڅو چې ورته وویل شي لینک پرېږدي، او resolvconf -d tun0 معادل عمل دی۔ له امر غوره کولو دمخه وګورئ کوم resolver کارول کېږي۔

هغه پوښتنه چې لا هم د مړ لینک شاته سرور ته اشاره کوي تر مهال پای ته رسېدو پورې ځوړند وي، او هغه ځنډ د پاتې لارې پرځای مات DNS سرور ښکاري۔

بل جلا کېدل ستړي کوونکی کړئ

د pid فایل لاره د پیل او بندولو پر مهال ورته وساتئ، هر ځل --pid-file ورکولو سره، یا openconnect د unit لاندې چل کړئ چې KillSignal ستاسو د نسخې له مستند شوي سیګنال سره سمون لري۔ لومړی په مخکنۍ برخه کې ازموینه تاسو ته هغه د بندولو پیغامونه ښیي چې مرستندویه یې چاپوي۔

نښلئ، جلا شئ او درې ګوتې یو ځل وچلوئ۔ پاک وتل نه VPN لینک، نه VPN لاره او نه د VPN resolver ننوتل پرېږدي۔ که له درېیو یوه ژوندې پاتې شوه، اوس پوهېږئ کومه برخه پاکوالی ونه کړ۔ بل تحقیق بیا له ځوړندې پوښتنې نه بلکې له همدې ځواب پیلېږي۔

اړوندې مقالې