Туннель өшіп тұр, бірақ машина әлі де ол қосулы сияқты әрекет етеді: сұраныс уақыты біткенше ілулі тұрады, ал маршрут енді жоқ интерфейске сілтейді. Бұл ажырату көмекшісін іске қоспай өлген 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 тазалауды толығымен өткізіп жібереді, және бұл дәл осы мақала жайлы күй.

resolv.conf-ты ауыстырмай resolver-ді жөндеңіз

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 жазбасын да қалдырмайды. Үшеуінің біреуі аман қалса, қай компонент тазалай алмағанын енді білесіз. Келесі тергеу сонда ілулі сұраныстан емес, сол жауаптан басталады.

Қатысты мақалалар