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

Відділіть проблему розміру від проблеми політики

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

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

Виміряйте стелю DF-пробами

Виміряйте стелю, а не вгадуйте її. Надсилайте проби, які відмовляються від фрагментації, і знижуйте навантаження крок за кроком, доки не повернеться відповідь, починаючи з команди на кшталт ping -M do -s 1472 host. Відповідь, яка скаржиться на потребу фрагментації при встановленому DF, означає, що значення все ще завелике. Повторіть на 1462, потім на 1452, і зупиніться на першому розмірі, який відповість. Запишіть число разом з хостом, який ви перевіряли, бо відповідь належить цьому шляху, а не протоколу загалом.

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

Застосуйте значення до пристрою тунелю

Застосуйте результат до інтерфейсу, створеного клієнтом, а не до адаптера Wi-Fi. У клієнті Linux це ip link set dev tun0 mtu 1300 , а потім ip link show tun0 , щоб підтвердити, що значення застосовано. Використовуйте те ім'я пристрою, яке повідомляє клієнт, бо воно залежить від реалізації та від того, як побудовано тунель.

Зниження MTU тунелю зменшує навантаження, яке несе кожен пакет, тож загальна пропускна здатність трохи падає, і це ціна того, щоб не відправляти великі відповіді в чорну діру. Менше число не обов'язково безпечніше. Зміна фізичного адаптера натомість розмазує шкоду по всіх з'єднаннях на цьому каналі, а завеликі внутрішні пакети залишаються такими ж великими.

Спершу використайте власні запити MTU клієнта

Коли ви керуєте викликом, клієнт може попросити розмір, а не бути виправленим після. --mtu запитує в сервера MTU тунелю, а --base-mtu оголошує MTU нижчого шляху, щоб шлюз міг вивести число тунелю. Обидва — запити, і посібник клієнта не обіцяє, що шлюз виконає хоч один із них.

Ця різниця визначає порядок роботи. Спершу спробуйте запит і огляньте інтерфейс, який він створює, а потім поверніться до локального налаштування пристрою, якщо вибране шлюзом значення все ще застрягає.

Перевірте передачею, яка не вдалася, і потім зробіть це постійним

Локальна зміна ip link діє, доки клієнт не перебудує тунель, що відбувається при наступному повторному підключенні або відновленні. Помістіть значення туди, де починається з'єднання: обгортка, яка запускає клієнт і потім налаштовує пристрій, юніт systemd з кроком ExecStartPost, або опція клієнта, коли шлюз її приймає. Тримайте її поряд із профілем у системі контролю версій, щоб наступна людина бачила, чому число там.

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

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

Схожі статті