«Підключено» — найменш інформативний факт у заявці на VPN. Він фіксує, що дві сторони завершили рукостискання, і нічого не каже про ім’я, яке запитувалося, інтерфейс, через який пішов пакет, його розмір або чи прийняла його далека сторона. Тому одна служба може не працювати, поки всі інші застосунки на тому самому ноутбуці працюють. Пройдіть етапи по порядку, і перший збійний етап назве несправність.

Почніть з імені, а не з тунелю

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

resolvectl query host.internal
getent hosts host.internal

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

Запитайте ядро, який шлях воно обрало

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

ip route get 10.20.30.40
ip -brief address show

Читайте поля dev, via і src саме в цьому порядку, бо кожне знімає іншу підозру. Цей етап відповідає і за стан, який встановив клієнт, адже правила фаєрвола й маршрути можуть залишитися після аварійного виходу. Тому «немає інтернету без тунелю» і «немає інтернету, доки не запущено клієнт» — одна родина несправностей, а не дві.

Перевірте розмір пакета

Маленька відповідь, що повертається, поки велике передавання завмирає, передусім указує на MTU шляху. Один зонд із встановленим бітом do-not-fragment, надісланий зсередини тунелю, відокремлює цей етап від інших. Піднімайте навантаження, доки зонд не збійне, і ви матимете число, яке має значення.

ping -M do -s 1400 10.20.30.40

Маленькі зонди проходять, поки перелік каталогу або завантаження висить, — це підпис цього етапу. Скарга звучить як облікові дані або правило фаєрвола, і це ні те ні те.

Число — властивість шляху, а не клієнта, тому значення, що працює на офісному з’єднанні, може збійнути на мобільному каналі. Тримайте команду зонда разом із заявкою, бо наступній людині потрібне те саме вимірювання. Якщо проходить менше навантаження, рішення — clamp або нижчий MTU тунелю, а не новий шифр.

Перевірте далеку сторону

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

curl -sv http://10.20.30.41:8080/health
nc -vz -w 3 10.20.30.41 3389
ss -lnt 'sport = :8080'

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

Зіставте скаргу з одним етапом

Більшість повідомлень зводяться до однієї з п’яти форм, і кожна форма називає етап. Один сайт, що працює лише через тунель, — це відповідь імені або політика, прив’язана до адреси джерела. Оновлення збійнуть без тунелю, поки перегляд працює, — це проблема імені або маршруту для того клієнта.

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

Запишіть етап, що дав перший збій, разом із виводом команди. Заявка, де сказано, що адреса джерела була неправильна, з доданим рядком маршруту, варта дій, а та, що повідомляє про зламаний VPN, — ні.

Схожі статті