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

Бір тест оларды анық ажыратады, оған он секунд жетеді. Ескі сұраныс ілініп тұрғанда сол мақсатқа жаңа сұраныс жіберіңіз.

Қайта қосылудан не аман қалады, не қалмайды

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

Кейбір клиенттер қайта қосылу кезінде ескірген байланыстарды тастайтын ілгек қосады, көпшілігі қоспайды. Мұндағы мінез-құлық клиентке, платформаға және нұсқаға қарай өзгереді.

Алыс жақ сізді де ұмытып кетті

Алыс ұш өз күйін ұстайды: TLS сессиясы, TCP басқару блогы және мүмкін сіздің мекенжайыңыз бен портыңызды ағынға байланыстыратын салыстыру жазбасы. Жолдағы аударма құрылғысы бұл салыстыруды үзіліс кезінде мерзімінен бұрын бітіруі мүмкін, туннель тез қалпына келсе де. Салыстыру жоғалғаннан кейін пакеттер сервер енді танымайтын ағын үшін келеді, және жауап клиент ешқашан көрсетпейтін reset болуы мүмкін. Қолданбалар мұны қате емес, тоқтау деп хабарлайды, өйткені олар ешқашан жауап бермейтін сокетті әлі күтіп тұр.

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

Жаңа сұраныс — оларды ажырататын тест

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

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

Ескі емес, жаңа байланыспен растаңыз

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

ss -tanp | grep -E ':(443|8443)'
curl -sS -o /dev/null -w '%{http_code} %{time_connect}\n' --max-time 8 https://intranet.example.com/
conntrack -L 2>/dev/null | grep 8443
dig +short intranet.example.com

Қозғалыссыз трафигі бар орнатылған сокет — іздеу керек белгі, ал күй кодын қайтаратын жаңа сұраныс жолдың тірі екенін көрсетеді. Байланыстар кестесі әлі де ағынды салыстыратын нәрсе бар-жоғын жауаптайды, және бұл клиент көре алмайтын бөлік. Шешушіге сұраныс бетті жүктеудің екінші жартысын қамтиды, өйткені атау қатесі мен тоқтаған байланыс браузерде бірдей көрінеді. Бірге алғанда, осы төрт шығыс ескірген сессияны сынған туннельден ажыратады.

Үзіліс уақытын, қайта қосу уақытын және ескі мен жаңа сұраныс арасындағы айырмашылықты жазып алыңыз. Бұл жазба бұлыңғыр шағымды біреу әрекет ете алатын есепке айналдырады.

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