NetDiag+

Хендшейк WireGuard падает на iOS, а на других устройствах нет

Одна сеть, один и тот же конфиг: ноутбук на Linux и телефон на Android подключаются мгновенно, а iPhone упрямо повторяет handshake did not complete. Переключаешь тот же iPhone на 5G — туннель встаёт сразу. В этот момент почти все хватаются за настройку MTU и почти все тратят вечер впустую: упавший хендшейк не может быть проблемой MTU.

Что проверять и в каком порядке

  1. Перестаньте менять MTU. Инициация хендшейка WireGuard — 148 байт, ответ — 92. Это влезает в любой MTU, который когда-либо применялся, так что фрагментировать тут нечего. Если хендшейк не проходит, пакеты просто не доходят. Верните MTU на 1420 и не трогайте.
  2. Проверьте, выходит ли UDP с устройства. Сделайте STUN-запрос на том Wi-Fi, где не работает. Отвечает — значит UDP наружу идёт, и дело в конкретном порте или эндпоинте. Не отвечает здесь, но отвечает на мобильной связи — эта сеть фильтрует UDP именно для этого устройства.
  3. Сравните, что видят два устройства. Положите рядом IP, маску, шлюз и DNS iPhone и ноутбука. Другая подсеть или другой шлюз означают, что телефон попал в гостевой VLAN либо к нему на роутере привязан отдельный профиль — ограничение живёт там, а не в конфиге.
Скачать в App Store

Бесплатно · 25 инструментов · разовая покупка убирает рекламу · без подписки

Вопросы, которые задают на самом деле

Почему на 5G работает, а на Wi-Fi нет?

Это самая полезная зацепка из всех. Конфиг тот же, сервер тот же, результат разный — значит переменная в сети, а не в туннеле. Оператор хендшейк пропускает, а этот Wi-Fi нет.

Я пробовал MTU 1280, 1200 и 1100. Ничего не изменилось.

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

Может, сеть блокирует UDP-порт?

Это самая вероятная единственная причина, особенно в отелях, кампусах, офисах и на некоторых мобильных точках доступа. Попробуйте перевести порт сервера на 443 или 53 — там трафик обычно проходит, потому что блокировка этих портов сломала бы веб всем.

А Private Relay, «Ограничить отслеживание IP» и приватный адрес Wi-Fi?

Отключить на время проверки стоит, но причиной они бывают редко. Они меняют адрес, с которого вы видны, но не решают, дойдёт ли UDP-пакет до вашего эндпоинта.

Так когда MTU действительно важен для WireGuard?

После хендшейка. Признак — туннель поднимается нормально, а потом встаёт на всём большом: страница грузится наполовину, передача замирает через несколько килобайт. Для IPv4 обычное значение — 1420.

Если туннель поднимается, а потом встаёт на больших передачах — вот там MTU действительно виноват. Как измерить свой реальный Path MTU →