Туннель қосылып тұр, қосалқы терминалды жабасыз, ал VPN клиентте бір пернені баспастан-ақ құлайды. Linux үшін AnyConnect клиентінде хабарланған себеп маршруттау емес, сессияларды есепке алу: клиент туннель көтерілген кезде қандай кіру сессиялары болғанын жазып алады және солардың кез келгенінің аяқталуын оны құлату себебі деп санайды. Төмендегі тексерулер ретімен орындалады, ал бірінші сәтсіз тексеру сіздің шынымен осы мінез-құлықты көріп отырғаныңызды білдіреді. Клиенттің әдеттегі шығысында терминал туралы ештеңе айтылмайды, сондықтан бірінші түйсік, концентраторды кінәлау, әдетте бос әурешілік.

Жүйелік файлдарды өңдеуден бастамаңыз. Әр қадам не үзілуді түсіндіреді, не бір үміткерді алып тастайды, ал арзан қадамдар алдымен келеді.

Сессия үзілуін негізгі желі үзілуінен ажыратыңыз

Ажырағаннан кейін бірден қайта қосылыңыз. Бірнеше секунд ішінде қайта оралатын, сол желіде, жаңа тіркелгі деректерінсіз туннель өлген жоғары арнаға, Wi-Fi роумингіне немесе концентратордағы бос тұру таймаутына емес, жабылған сессия сияқты жергілікті триггерге меңзейді. Connecting күйінде тұрып қалатын немесе желіні ауыстырғанша іске қосылмайтын туннель басқа мақала.

Туннель көтерілгенде не ашық болғанын жазыңыз: клиентті қосқан терминал, кез келген екінші shell, графикалық кіру және басқа машинадан келген кез келген SSH сессиясы. Бұл тізім сізге аздан кейін керек болады, ал келесі үзілуден кейін оны жадыдан қайта құру сенімсіз.

Клиент қосылу кезінде нені жазғанын тексеріңіз

Клиент процестердің ата-аналарын да, терминалдың меншігін де тексермейді. Ол қосылу сәтіндегі кіру сессиялары жиынының суретін түсіріп, кейін сол жиынды салыстырады; мүше жоғалса, салыстыру сәтсіз аяқталады және туннель де онымен бірге кетеді. Сондықтан қосылған терезені жабу зиянсыз болуы мүмкін, ал қатысы жоқ қосалқы терминалды жабу байланысты өлтіреді: маңыздысы сол сессия бастапқы жиында болды ма. Тексеру санау емес, жиындарды салыстыру, сондықтан сессияны ауыстыру оны жоғалту сияқты қауіпті болуы мүмкін.

Бірдеңені өзгерту алдында клиент нені көре алғанын тізімдеңіз:

who
w
last -n 10
sudo ls -l /run/utmp

who әр жолы utmp ішіндегі пайдаланушы процесінің жазбасы. Егер сессияңыз екі рет көрінсе, біреуі графикалық кіру үшін, біреуі терминал үшін, онда екі жазба да қосылу кезінде болған және екеуі де үміткер.

utmp-дан тек өз жазбаңызды алып тастаңыз

Жарияланған шешім пайдаланатын сессияңызды клиент іске қосылмай тұрып utmp ішінде көрінбейтін етеді. Кішкентай C бағдарламасы getutent() бойынша жүреді, ut_line стандартты енгізудің TTY-іне тең жазбаны табады, содан кейін сол жазбаны қайта жазады. Рет әдейі: setutent(), жазбаны оқу, оның ut_id көшіру, ut_type мәнін DEAD_PROCESS етіп қою, пайдаланушы мен жол өрістерін тазалау, pututline() арқылы қайта жазу, содан кейін endutent().

Оны компиляциялап, содан кейін клиентті қосатын shell-ден root ретінде іске қосыңыз:

sudo ./utmpremove && /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.edu

Құрал ештеңе істемейді деген хабарлардың көбін сәтсіздіктің екі режимі түсіндіреді. Ол стандартты енгізуге байланған TTY-ге әсер етеді, сондықтан терминалсыз скрипттен немесе cron тапсырмасынан іске қосу оған салыстырар ештеңе қалдырмайды. Ал /run/utmp қарапайым пайдаланушыларға жазылмайды, сондықтан root-сыз іске қосу шығу мәртебесін тексермесеңіз үнсіз сәтсіз аяқталады.

Жабылғаннан кейін туннель аман қалатынын растаңыз

Механизмді болжамдамай, сынап көріңіз. Сақтағыңыз келетін сессиядан қосылыңыз, екінші терминал ашыңыз, екіншісін жабыңыз, содан кейін vpn state және интерфейстер тізіміне көз жүгірту арқылы туннельдің әлі де қосылып тұрғанын растаңыз. Егер туннель аман қалса, триггер әр сессия емес, белгілі бір сессия түрі болған және сіз ашық қалуы тиіс сессияны таптыңыз.

Егер ол әлі де үзілсе, бақыланған сессия басқа жерде болған, көбінесе терминалыңызды тудырған графикалық кіру, ал бір TTY жазбасын алып тастау көмектеспейді. Қосымша хирургия қосудың орнына бақылауды бірінші қадамның толық тізімімен қайталаңыз.

utmp-ны қайта жазу қашан дұрыс емес жауап болады

utmp ортақ есепке алу, жеке кесте емес. Әлі тірі сессияның жазбасын қайта жазсаңыз, who, w және кейбір аудит құралдары оны төмендетіп көрсетеді, ал сол жазбаны кейін жабатын бағдарлама мүлдем сәтсіз аяқталуы мүмкін. Құралды өз сессияңызбен шектеңіз, түпнұсқа файлдың көшірмесін сақтаңыз және оны әр жазбаны жоятын жүктеу қызметіне айналдырмаңыз.

Егер ұйымыңыз сәйкестік үшін сессияларды есепке алуды жинаса, бұл шешім сол талапқа қайшы келеді және қолдау көрсетілетін жауап клиенттің басқа нұсқасы немесе қатынаудың басқа әдісі, жамалған utmp емес. Көпшілік үшін ең аз араласатын түзету клиентті күні бойы ашық тұратын сессиядан қосу және сол терезені тыныш қалдыру.

Тикетті жабпас бұрын клиент туннель көтерілгенде қай сессияны бақылап отырғанын жазып қойыңыз. Дәл сол бір жол жұмбақ ажырауды машинадағы келесі адам үшін қайталанатын шартқа айналдырады.

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