Щоб дізнатися, чи тримає блокувальний вимикач, справжній акаунт не потрібен; під загрозою опиняється саме акаунт. Перевірка створює коротке вікно, коли трафік може вийти за межі тунелю, а може й не вийти, тому корисним навантаженням має бути те, що не шкода втратити. Зараз я роблю це з приманкою та запасним профілем браузера, і відповідь виходить яснішою, ніж за попередньої схеми з браузером і вебпоштою. Далі я йду в тому самому порядку, який пропонує клієнт: налаштування, призначення, перехід, потім доказ.

Тест відповідає лише на одне вузьке питання: під час цього переходу чи може цей застосунок вийти в мережу за межами тунелю? він нічого не каже про те, чи розумна решта політики. Тримайте рамки такими вузькими, і результат варто записати.

Знайдіть вимикач і його область дії в клієнті

Відкрийте клієнт і знайдіть налаштування блокування, перш ніж змінювати мережевий стан. Виробники називають його по-різному: вимикач, режим блокування, мережевий замок, блокування трафіку поза тунелем. Назва каже менше, ніж параметри всередині. Важливо, чи застосовується блокування завжди чи лише коли застосунок вирішить, що тунель щойно відмовив, і чи охоплює воно всі застосунки чи вибраний список.

Потім перелічіть переходи, які ваш клієнт справді вміє виконувати. Відключення з ініціативи користувача, вихід із застосунку та втрата зв'язку із сервером у більшості клієнтів є трьома різними шляхами в коді, і вони не поділяють одну політику блокування. Одні знімають блокування під час виходу із застосунку. Інші залишають правила фільтра, доки щось їх не видалить. Прочитайте довідник налаштувань виробника для вашої збірки, а не припускайте, і запишіть, який із трьох випадків ви перевіряєте.

Профіль теж запишіть: протокол, родини адрес і чи ввімкнено роздільний тунель. Заява про захист усього пристрою безглузда, якщо профіль навмисно виключає кілька застосунків, а виключення, яке ви налаштували самі, не є витоком. Довідник налаштувань OpenVPN Connect — саме та сторінка, де вказано, який перемикач змінює яку поведінку, хоча назви в різних клієнтах різняться.

Виберіть приманку, яка працює й без тунелю

Приманці потрібні дві властивості, і пропуск будь-якої з них дає нечитабельний результат. Вона має бути доступною напряму, коли тунель опущений і блокування вимкнене, інакше те, що вона перестала відповідати, може означати просто зникнення хоста. І їй не потрібні вхід, кукі чи оплата, щоб витік коштував рядка журналу, а не сесії.

Статична сторінка на хості, який ви контролюєте, — найчистіший вибір. Запасна віртуальна машина з простим HTTP-сервером майже така сама добра, а публічна сторінка перевірки зв'язку годиться, якщо ви приймаєте, що її доступність поза вашим контролем. Запишіть адресу, порт, родину адрес і чи потребує запит пошуку імені, бо кожен із цих пунктів стане змінною, яку пізніше, можливо, доведеться ізолювати.

Встановіть базову лінію, перш ніж торкатися вимикача. Коли тунель піднятий, приманка має відповідати через тунель, що доводить працездатність маршруту за політикою. Коли тунель опущений і блокування вимкнене, вона має відповідати напряму, що доводить, що призначення живе. Лише тоді збій у заблокованому стані щось вам скаже.

Виконуйте переходи у фіксованому порядку

Робіть переходи по одному й давайте кожному кілька секунд на стабілізацію, бо клієнти часто зносять і заново будують правила саме в цей проміжок. Один і той самий короткий тест щоразу робить спостереження зіставними:

curl -sS -o /dev/null -w 'http=%{http_code}\n' --max-time 5 http://decoy.example/
echo "curl_exit=$?"
dig +short decoy.example
curl -6 -sS -o /dev/null -w 'v6_http=%{http_code}\n' --max-time 5 http://decoy.example/
echo "curl_v6_exit=$?"
TransitionExpected with the block onFailure signature
Manual disconnectDecoy stops answering within secondsDecoy still returns 200
Server or path failureBlocked, with no exemption for the old endpointDirect access during the gap
Quit the appClient-dependent; record what happensBlock disappears with the process
Wi-Fi to EthernetBlock holds until the tunnel returnsTraffic flows mid-change

Рядок із виходом із застосунку заслуговує окремого прогону, навіть якщо у звичайному використанні ви ніколи не закриваєте клієнт. Якщо блокування знімається під час виходу, падіння або примусове оновлення дають ту саму експозицію, і це факт про розгортання, а не про ваше терпіння. У Windows еквівалентні проби — Resolve-DnsName decoy.example і curl.exe -s -o NUL -w "%{http_code}" http://decoy.example/.

Відрізніть блокування від зламаного резолвера

У сторінки, яка не завантажується, кілька причин, і лише одна з них — робота вимикача. Якщо ім'я не розв'язується, ви дізналися, що DNS заблоковано або зламано, а не те, що заблоковано шлях даних. Перевірте й літеральну адресу, щоб відповідь узагалі не залежала від розв'язання імен.

Коди виходу curl розділяють ці випадки. 6 — збій розв'язання імені, 7 — з'єднання відхилено, 28 — тайм-аут. Заблокований маршрут зазвичай проявляється як тайм-аут або відмова за літеральною адресою, а блокування лише DNS залишає 6 і приховує все інше. Кешована сторінка або портал авторизації обманюють око, тому доказ — код виходу, а не екран.

Повторіть пробу за IPv6 з літеральною адресою. Блокування, яке покриває IPv4 і ігнорує IPv6, досить поширене, щоб заслужити окремий рядок у нотатках, а клієнт, який вимикає IPv6 поза тунелем, має чисто падати на обох родинах.

Запишіть область, яку покриває результат

Коли тунель повернеться, підтвердьте відновлення: приманка відповідає через тунель, резолвер повертає відповіді, а політика стоїть там, де ви її залишили. Потім скасуйте експерименти. Тимчасове правило брандмауера, налагоджувальний маршрут або тестовий профіль, залишені на місці, заплутають наступний прогін і можуть пережити застосунок.

Один прохід покриває одну збірку клієнта, один профіль, один перехід і одну родину адрес. Запишіть ці чотири пункти разом із результатом:

  • Збірка клієнта й платформа, а також чи застосовується налаштування до профілю чи глобально.
  • Профіль, протокол і будь-які виключення роздільного тунелю.
  • Перевірений перехід і те, як ви його викликали.
  • Родини адрес і DNS, з кодами виходу curl для заблокованого й незаблокованого станів.

Якщо хоч один рядок порожній, тест не завершено. Роумінг означає повтор рядка зі зміною мережі. Перезавантаження без нагляду означає перевірку того, що правила повертаються, а це питання порядку відновлення, а не вимикача. Повторюйте послідовність після оновлення клієнта, бо перемикачі змінюються рідко, а поведінка за ними — часто. Приманку тримайте напохваті: міняти нічого, а наступна перевірка займає п'ять хвилин.

Схожі статті