Картичката сѐ уште ја прикажува контролната табла од пред тунелот да умре. Броевите на состојбата замрзнуваат, мал вртеж продолжува да се врти, а адресната лента сѐ уште ја носи апликацијата што ја отворивте пред еден час. Не сте допреле ништо по прекинот, а сепак страницата може сѐ уште да се обидува да стигне до својот сервер по сопствениот распоред. Тоа е делот што луѓето го пропуштаат: страница што е само видлива и страница што сѐ уште испраќа барања изгледаат исто однадвор, и само една од нив се појавува во мрежниот дневник.

Работа што страницата ја започнува без вас

Четири механизми држат вчитан документ зафатен. Повторувачки тајмер може повторно да изврши повик за состојба на секои неколку секунди. 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, потоа прочитајте ја колоната за иницијатор: запис започнат од тајмер или скрипта, без забележана навигација пред него, е позадински обид, а не повторно вчитување. Споредете го неговото време на започнување со моментот кога тунелот падна. Ако записот сѐ уште е во чекање кога тунелот го нема, барањето чека патека што повеќе не постои.

Доказите од страната на серверот се посилни од сѐ што покажува прелистувачот. Дневник на барања со временска ознака и изворна адреса докажува дека пакетот пристигнал. Записите во прелистувачот можат да носат колачиња, токени и целосни URL-а, затоа задржете ги само полињата што му се потребни на вашето прашање и заматете го остатокот пред да ги залепите каде било.

Што да правите со одговорот

Ако позадинските обиди продолжуваат да успеваат додека тунелот е спуштен, блокот е потесен отколку што претпоставувавте, и таа празнина вреди да се затвори пред да му го доверите клиентот за чувствителна работа. Ако не успеваат, политиката ја врши својата работа и замрзнатата страница е козметичка. Во секој случај, затворањето на една картичка не е контрола на целото уред: други картички, други прелистувачи и други апликации секој си го планира своето работење.

Следни чекори што вреди да се преземат: наведете кои исклучоци сте ги додале и зошто, потврдете дали клиентот блокира само сообраќај во опсегот на тунелот или целиот сообраќај, и набљудувајте едно позадинско барање од почеток до крај со отворен дневник на серверот. Тие три одговори покриваат најголем дел од она што извештајот „VPN падна и нешто сѐ уште е поврзано“ навистина го содржи.

Поврзани статии