Ihò náà ti dúró, ṣùgbọ́n ẹ̀rọ náà ṣì ń hùwà bí ẹni pé ó wà lókè: ìwádìí kan ń dúró títí àkókò rẹ̀ yóò fi parí, ipa-ọ̀nà kan sì ń tọ́ka sí interface tí kò sí mọ́. Èyí ni àmì ìlànà openconnect tí ó kú láìṣe ìrànlọ́wọ́ ìpínyà rẹ̀. Ipo nẹ́tíwọ́kì tí ó dá kò yẹ̀, kò sì sí nǹkan mìíràn nínú ẹ̀rọ tí ó mọ bí a ti lè yọ ọ́ kúrò.

Tẹ̀lé ẹ̀rọ náà ní ìtòlẹ́sẹẹsẹ tí a ti dá ipò náà: ìlànà, ìsopọ̀, ipa-ọ̀nà, resolver. Ìgbésẹ̀ kọ̀ọ̀kan sọ fún ọ bóyá alátìlẹ́yìn ti lọ ní tòótọ́ tàbí ó kàn ti yà kúrò lórí terminal rẹ, ìyàtọ̀ yẹn sì pinnu bóyá ó yẹ kí o tún nǹkan kan ṣe.

Bẹ̀rẹ̀ pẹ̀lú ìlànà, kì í ṣe ìṣètò

Ṣí terminal kan kí o sì béèrè ohun tí ó ṣì ń ṣiṣẹ́ kí o tó fi ọwọ́ kan ipa-ọ̀nà. pgrep -a openconnect ń ṣe àtòjọ gbogbo ìṣẹ̀lẹ̀ pẹ̀lú àwọn àríyànjiyàn rẹ̀, èyí tí ó fi fáìlì pid àti script tí a fún un hàn. Ìlànà tí o kò retí ń ṣàlàyé ihò ẹ̀mí náà kíákíá ju log èyíkéyìí lọ.

Bí kò bá sí nǹkan tí ń ṣiṣẹ́, wo ìsopọ̀ náà. ip link show tun0 sọ fún ọ bóyá interface náà yè, àti ip route show dev tun0 ń ṣe àtòjọ àwọn ipa-ọ̀nà tí ó ṣì so mọ́ ọn. Lẹ́yìn náà ṣàyẹ̀wò resolver pẹ̀lú resolvectl status. Kọ gbogbo àwọn ìjáde mẹ́ta náà kí o tó yí wọn padà, nítorí ìkọ̀wé yẹn ni ọ̀nà tí ìwọ yóò fi yà ákọsílẹ̀ àtijọ́ kúrò nínú tuntun nígbà tí ó bá yá.

Interface tí ó lọ máa ń gbé àwọn ipa-ọ̀nà rẹ̀ pẹ̀lú. Àwọn ipa-ọ̀nà tí ó yè lẹ́yìn ìsopọ̀ máa ń túmọ̀ sí pé ìlànà ṣì wà láàyè tàbí pé alátìlẹ́yìn kejì ni ó ni ẹ̀rọ náà.

Script olùrànlọ́wọ́ ni ó ń mú àwọn àyípadà padà

openconnect kò yọ interface, ipa-ọ̀nà tàbí àkọsílẹ̀ resolver kúrò fúnra rẹ̀. Ó pe olùrànlọ́wọ́ òde, /etc/vpnc/vpnc-script nínú build upstream àti /usr/share/vpnc-scripts/vpnc-script nínú àwọn àpò Debian àti Ubuntu, tí a yàn pẹ̀lú -s. Script kan náà tí ó gbé ihò náà ró ni ó wó o.

Bí ìlànà bá jáde láìpe olùrànlọ́wọ́ yẹn, ipò náà yóò wà. ìwé ìtọ́sọ́nà OpenConnect sọ ní kedere pé ìtọ́nisọ́nà àti iṣẹ́ orúkọ kò ní ṣiṣẹ́ dáadáa láìsí script, ó sì ṣàpèjúwe olùrànlọ́wọ́ gẹ́gẹ́ bí ẹ̀yà tí ó ń wó ipò interface nígbà ìjáde. Ìdí ni pé ọ̀nà náà ṣe pàtàkì nígbà tí o bá bẹ̀rẹ̀ alátìlẹ́yìn pẹ̀lú -s.

Àmì wo ni ó dé ọ̀nà yẹn yí padà láàrín àwọn ẹ̀dà. Ìwé ìtọ́sọ́nà 7.06 gba SIGTERM gẹ́gẹ́ bí ìjáde lẹ́sẹ̀kẹsẹ̀ tí ó fò script kọjá. Àwọn build lọ́wọ́lọ́wọ́ ń ṣe àkọsílẹ̀ INT àti TERM gẹ́gẹ́ bí ìdúró mímọ́, níbi tí a ti yọ ìpàdé kúrò tí olùrànlọ́wọ́ sì ń ṣiṣẹ́. Ka apá SIGNALS ti binary tí o ní ní tòótọ́ dípò kí o gbà ọ̀kan nínú àwọn ìhùwàsí méjì náà.

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

Fi àmì tí build rẹ ṣe àkọsílẹ̀ ránṣẹ́

Nígbà tí o bá mọ àmì náà, dá ìlànà náà dúró pẹ̀lú pid kì í ṣe pẹ̀lú àwòrán.

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

Lẹ́yìn náà tún àwọn àyẹ̀wò mẹ́ta ti apá àkọ́kọ́ ṣe dípò kí o gbẹ́kẹ̀ lé ipò ìjáde. ip link show tun0 yẹ kí ó kùnà, ip route show dev tun0 kò yẹ kí ó tẹ̀wé kankan jáde, àti resolvectl status kò yẹ kí ó tún ṣe àtòjọ ìsopọ̀ VPN.

SIGHUP kì í ṣe bọ́tìnì ìdúró: ó ń já ìsopọ̀, ó ń ṣiṣẹ́ script, ó sì ń fi ìpàdé sílẹ̀ tí ó lè tún bẹ̀rẹ̀ pẹ̀lú --cookie. SIGUSR2 fipá mú ìsopọ̀ padà lẹ́sẹ̀kẹsẹ̀. SIGKILL fò ìmọ́tótó kọjá pátápátá, ìyẹn sì ni ipò tí àpilẹ̀kọ yìí ń sọ̀rọ̀ nípa rẹ̀.

Tún resolver ṣe láìyí resolv.conf padà

Lórí ọ̀pọ̀lọpọ̀ ẹ̀rọ Ubuntu /etc/resolv.conf jẹ́ ìsopọ̀ àmì sí systemd-resolved, kì í ṣe fáìlì tí o yẹ kí o ṣàtúnṣe. Yíyí rẹ̀ padà ń ba ìpinnu orúkọ jẹ́ fún gbogbo nẹ́tíwọ́kì, kì í ṣe VPN nìkan. Dípò bẹ́ẹ̀, yọ ìforúkọsílẹ̀ ihò náà kúrò:

resolvectl revert tun0
resolvectl query example.com

Bí ẹ̀rọ bá ń lo resolvconf dípò systemd-resolved, àkọsílẹ̀ fún interface kọ̀ọ̀kan yóò wà títí a ó fi sọ fún un pé kí ó já ìsopọ̀ náà sílẹ̀, àti resolvconf -d tun0 jẹ́ ìgbésẹ̀ tí ó dọ́gba. Ṣàyẹ̀wò irú resolver tí a ń lò kí o tó yan pàtàkì ọ̀rọ̀ náà.

Ìwádìí tí ó ṣì ń tọ́ka sí server kan lẹ́yìn ìsopọ̀ tí ó kú yóò dúró títí àkókò rẹ̀ yóò fi parí, àti pé ìdádúró yẹn dàbí server DNS tí ó ti bàjẹ́ dípò ipa-ọ̀nà tí ó kù.

Jẹ́ kí ìjáde tí ó tẹ̀le kí ó jẹ́ aláìní ìtara

Pa ọ̀nà fáìlì pid mọ́ bákan náà ní ìbẹ̀rẹ̀ àti ní ìdádúró nípa fífúnni ní --pid-file ní gbogbo ìgbà, tàbí ṣe openconnect lábẹ́ unit kan tí KillSignal bá àmì tí ẹ̀dà rẹ ṣe àkọsílẹ̀ mu. Ṣíṣe àyẹ̀wò ní iwájú àkọ́kọ́ ń fi àwọn ìfiránṣẹ́ ìdádúró tí olùrànlọ́wọ́ ń tẹ̀wé hàn ọ́.

Sopọ̀, já, kí o sì ṣe àwọn àyẹ̀wò mẹ́ta lẹ́ẹ̀kan. Ìjáde mímọ́ kò fi ìsopọ̀ VPN, ipa-ọ̀nà VPN tàbí àkọsílẹ̀ resolver VPN sílẹ̀. Bí ọ̀kan nínú mẹ́ta bá yè, o ti mọ ẹ̀yà wo ni kò ṣe ìmọ́tótó. Ìwádìí tí ó tẹ̀le yóò bẹ̀rẹ̀ láti ìdáhùn yẹn, kì í ṣe láti ìwádìí tí ó dúró.

Àwọn àpilẹ̀kọ tó jọra