Туннель, который проходит аутентификацию, переносит ping и затем зависает на первой большой передаче, — классический признак отсутствующего сообщения ICMP, а не сломанного VPN. Отправитель так и не узнаёт, что пакет был слишком большим, повторяет тот же размер, а приложение ждёт. Исправление — это решение политики межсетевого экрана, а не переустановка клиента. Порядок важен: измерьте, где находится граница размера, затем сузьте правило, которое проглотило отчёт.

Что ICMP на самом деле переносит на этом пути

Обнаружение MTU пути IPv4 опирается на то, что маршрутизатор сообщает: пакет с установленным битом don't-fragment не удалось переслать. Это сообщение ICMP Fragmentation Needed, и без него у отправителя нет причины уменьшать размер сегмента. IPv6 строже: маршрутизаторы не фрагментируют в транзите, поэтому сообщение ICMPv6 Packet Too Big — единственный сигнал, заставляющий отправителя уменьшаться.

Оба сообщения — обратная связь плоскости управления, и ни одно не является диагностическим эхом. Политика, блокирующая ping, и политика, блокирующая весь ICMP, выглядят похоже в списке правил, но в сети ведут себя совершенно по-разному. Вторая может превратить правильно рассчитанный туннель в односторонний путь для всего, что больше самого малого звена в цепочке.

Некоторые транспорты реализуют собственное обнаружение с помощью зондирующих пакетов, как описывает RFC 4821, и они меньше зависят от этой обратной связи. Это аргумент проверить, какой транспорт вы используете, а не предполагать, что любой туннель невосприимчив.

СообщениеНазначение на путиЕсли заблокировано
ICMPv4 тип 3 код 4Пакет был слишком велик для следующего звенаОтправитель повторяет попытки и зависает
ICMPv6 тип 2Packet Too Big, эквивалент для IPv6То же зависание, без резервной фрагментации
ICMP тип 11Время истекло, используется tracerouteДиагностика теряет переходы, трафик продолжает идти
Запрос и ответ эха ICMPПроверка доступностиPing не проходит, путь может быть в порядке

Сбой зависит от размера

Спросите, связан ли сбой с размером пакета. Страница входа, запрос DNS и короткий вызов API проходят, а загрузка файла, большой ответ или скачивание изображения зависают. Эта картина указывает на ограничение размера где-то между двумя концами, а не на аутентификацию или маршрутизацию. Успешный маленький ping почти ничего не говорит о том, где находится эта граница.

Внутри туннеля нужно учитывать два уровня: пакет полезной нагрузки и внешний инкапсулированный пакет. Внутренний отправитель может вести себя правильно, пока внешний путь меньше, чем предполагает туннель, поэтому важны и собственные настройки MTU туннеля, и физическое звено под ним.

Измерьте перед правкой правил

Зондируйте с битом don't-fragment и выбранным вами размером полезной нагрузки, от неисправного клиента к защищённому адресу:

ping -M do -s 1472 10.20.5.7
ping -M do -s 1300 10.20.5.7

Полезная нагрузка 1472 байта плюс 28 байт заголовков — это пакет 1500 байт. Если большой зонд не проходит с ошибкой фрагментации, а меньший проходит, вы нашли границу; учтите накладные расходы туннеля и повторяйте, пока рабочий размер не станет стабильным.

Затем убедитесь, что разрыв — это сам отчёт. Если зонд не проходит молча, без ошибки и без ответа, сообщение, скорее всего, отбрасывается, а не доставляется, и подозреваемым является правило.

Сузьте правило, затем перепроверьте задачу

Исправление должно разрешать конкретные управляющие сообщения, а не весь протокол. На хосте с iptables форма — это разрешение для конкретного типа; адаптируйте синтаксис к тому, что управляет межсетевым экраном на вашей платформе:

iptables -I INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
ip6tables -I INPUT -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT

Оставьте ответы эха заблокированными, если это местная политика, поскольку пути они не нужны. Затем перепроверьте передачу, которая изначально не удалась, из нового соединения и убедитесь, что счётчики правила показывают приход сообщений.

Если большая передача всё ещё зависает после разрешения сообщений, оставшееся ограничение находится в другом месте: слишком высоко заданный MTU туннеля, прокси, переписывающий пакеты, или промежуточное устройство, которое отбрасывает вместо того, чтобы сообщать. Правило ICMP было необходимым, но не достаточным.

Похожие статьи