VPN бет ортасында үзілді: фондық сұраулар әлі шыға ма?
Ашық қалдырылған бет туннель өлгеннен кейін де сұрау жіберуді, қайта қосылуды және синхрондауды жалғастырады. Қай әрекеттердің әлі шығатынын және оны қалай дәлелдеу керектігін қараңыз.
Қойынды әлі де туннель өлмес бұрынғы бақылау тақтасын көрсетіп тұр. Күй сандары қатып қалады, кішкене айналдырғыш айналып тұрады, ал мекенжай жолағында бір сағат бұрын ашқан қолданба тұр. Үзілістен кейін ештеңеге қол тигізбедіңіз, бірақ бет әлі де өз кестесі бойынша серверіне жетуге тырысып жатқан болуы мүмкін. Адамдар осыны өткізіп жібереді: тек көрінетін бет пен әлі де сұрау жіберетін бет сырттан бірдей көрінеді, ал олардың тек біреуі ғана желі журналында көрінеді.
Бет сізсіз бастайтын жұмыс
Төрт механизм жүктелген құжатты босатпайды. Қайталанатын таймер әр бірнеше секунд сайын күй шақыруын қайта іске қоса алады. Сіз қайта оралғаннан кейін қойынды қайта көрінгенде fetch іске қосылуы мүмкін. WebSocket немесе сервер жіберетін оқиғаларға негізделген тікелей арна өзінің шегіну кестесі бойынша қайта қосылуды талпынуы мүмкін. Сайт тіркеген service worker сіздің алдыңызда қойынды болмаса да, кезекке қойылған синхрондау үшін оянуы мүмкін.
Олардың ешқайсысы басуды қажет етпейді және ешқайсысы құжатты қайта жүктемейді. Мекенжай жолағы, жылжыту орны және көрсетілген мәндер бәрі өз орнында қалады. Тек желі жағы өзгереді: әрбір жаңа әрекет — басталған сәтте қабылданған жаңа шешім.
Бұл айырма маңызды, өйткені көрінетін бет жергілікті сақталады. Бұрын салынған пиксельдер келесі сұраудың сәтті болғанын білдірмейді. Айналдырғышы бар қатып қалған график — сұраулары қазір сәтсіздікке ұшырайтын беттің әдеттегі көрінісі. Экранды оқу сізге сервердің бірнеше минут бұрын не дегенін айтады, браузердің қазір не істеп жатқанын емес.
Неліктен бұрынғы бет жүктеуі маршрутты ұстап тұрмайды
Бет жүктеуіндегі ештеңе құжатты туннельге байламайды. Маршруттау әр пакет үшін, жіберу сәтінде, пакет шыққан кезде бар кестеден шешіледі. Туннель интерфейсі жоғалғанда, бұл іздеу енді туннель маршрутына сәйкес келмейді. Ол не физикалық адаптерге түседі, не мүлдем ештеңе таппайды, клиенттің артында қалдырғанына байланысты.
Қайталанатын кері шақырулар — қарапайым жоспарланған тапсырмалар. HTML стандартының таймерлер бөлімі олардың кезекке қалай қойылатынын сипаттайды және аралықты дәл ырғақ уәдесі емес, ең аз кідіріс деп қарастырады, сондықтан фондық қойынды коды талап еткеннен әлдеқайда сирек сұрау жібере алады. Аз әрекет — мүлдем әрекетсіздік емес, ал қойындыны қайта алдыға шығару олардың лап етуінің әдеттегі сәті.
Сәтсіздік саясаты қайда түседі
Клиенттің бұғаттауы бет алынған кезде емес, қосылымға әрекет жасалған кезде бағаланады. Егер қарапайым қатынас әлі рұқсат етілсе, қайта әрекет физикалық байланыс арқылы ашық түрде шығуы мүмкін. Егер саясат бұл трафикті туннель қайтқанша ұстап тұрса, әрекет қосылу сәтінде сәтсіз аяқталады және бет бірнеше секундтан кейін қайталауға болатын қатені көрсетеді.
Қайсысын алатыныңызды екі бөлшек шешеді. Біріншісі — клиент қолдайтын қолдану аясы: бүкіл құрылғыны бұғаттау, туннель адаптерімен шектелген бұғаттау немесе ерекшеліктері бар ережелер жиынтығы. Екіншісі — барар жер бұрын жергілікті принтер, тұтқын портал немесе ағындық қызмет үшін қосқан ерекшеліктің ішінде қала ма.
Қолданба деңгейіндегі шифрлау мұның ешбірін өзгертпейді. HTTPS браузер мен сервер арасындағы байттарды қорғайды; оларды қай интерфейс тасымалдайтыны туралы ештеңе айтпайды. Бет толық шифрланған болып, бәрібір дұрыс емес жолмен шығуы мүмкін, ал тар бұғаттау дәл соған жол береді.
Тасталатын бетпен бақыланатын тексеру
Өзіңіз бақылайтын хост пен оны шақырудан басқа ештеңе істемейтін бет пайдаланыңыз, сонда нақты деректер ойында болмайды. Терминалдан үзілістен бұрын және кейін жолдың үлгісін алыңыз:
curl -sS --max-time 5 -o /dev/null -w '%{http_code} %{remote_ip}\n' https://probe.example.net/pingОны туннель қосулы кезде іске қосыңыз, содан кейін туннельді өшіріп, қайта іске қосыңыз. Туннель өшірулі кезде ашық мекенжайдан келген жауап тікелей жолдың ашық екенін айтады. Уақыттың бітуі немесе қабылданбаған қосылым саясаттың ұстап тұрғанын айтады. Клиент қайта қосылғаннан кейін тағы бір рет қайталаңыз, туннель жолының қайта оралғанын болжаудың орнына көріңіз.
Браузерде Желі панелі екі сұрақты ажыратады. Fetch/XHR-ге сүзгілеп, содан кейін бастаушы бағанын оқыңыз: таймер немесе скрипт бастаған, оның алдында ешқандай навигация тіркелмеген жазба — қайта жүктеу емес, фондық әрекет. Оның басталу уақытын туннель үзілген сәтпен салыстырыңыз. Егер туннель кеткенде жазба әлі күтіп тұрса, сұрау енді жоқ жолды күтіп тұр.
Сервер жағындағы дәлелдер браузер көрсететіннің бәрінен де күшті. Уақыт белгісі мен бастау мекенжайы бар сұрау журналы пакеттің келгенін дәлелдейді. Браузер жазбаларында cookie, токендер және толық URL болуы мүмкін, сондықтан сұрағыңызға қажет өрістерді ғана қалдырып, қалғанын бір жерге қоймас бұрын жасырыңыз.
Жауаппен не істеу керек
Егер туннель өшірулі кезде фондық әрекеттер сәтті бола берсе, бұғаттау сіз ойлағаннан тар, және бұл олқылықты сезімтал жұмысты клиентке сеніп тапсырудан бұрын жапқан жөн. Егер олар сәтсіз болса, саясат өз жұмысын істеп тұр, ал қатып қалған бет тек көрініс. Қалай болғанда да, бір қойындыны жабу — бүкіл құрылғыға бақылау емес: басқа қойындылар, басқа браузерлер және басқа қолданбалар өз жұмыстарын өздері жоспарлайды.
Жасауға тұрарлық келесі қадамдар: қандай ерекшеліктерді және неге қосқаныңызды тізімдеңіз, клиент тек туннель аясындағы трафикті ме, әлде барлық трафикті ме бұғаттайтынын растаңыз, және сервер журналы ашық күйде бір фондық сұрауды басынан аяғына дейін бақылаңыз. Осы үш жауап «VPN үзілді, ал бірдеңе әлі қосылып тұр» деген есептің шын мәнінде неден тұратынының көбін қамтиды.