AmneziaWG: Ошибка расчета MTU и сброс пакетов из-за фрагментации
- Туннель успешно поднимается, но веб-сайты открываются бесконечно долго или загружаются частично (картинки и скрипты зависают).
- SSH-сессия через VPN зависает сразу после ввода команды и вывода большого объема текста (например,
ls -la /usr/bin). - В
dmesgили клиенте появляются сообщенияpacket too big, need to fragment. - Высокий процент потери пакетов только при передаче больших файлов.
1. Формула расчета MTU для AmneziaWG
AmneziaWG требует большего запаса оверхеда по сравнению с обычным WireGuard из-за дополнительных мусорных байт и смещений S1 / S2. Базовый расчет:
MTU = Base_Physical_MTU (1500) - IPv4_Header (20) - UDP_Header (8) - WireGuard_Header (32) - S1_Padding (до 128) - Safe_Margin (40)
Рекомендуемый MTU для Ethernet = 1360 - 1420 байт
Рекомендуемый MTU для PPPoE / LTE = 1280 байт (минимальный IPv6 MTU)2. Определение Path MTU через ICMP трассировку
# Поиск максимального размера нефрагментированного пакета (Windows)
ping -f -l 1372 <Server_IP>
# Linux / macOS
ping -M do -s 1372 <Server_IP>3. Установка скорректированного MTU в конфиге клиента и сервера
[Interface]
Address = 10.8.0.2/32
PrivateKey = <Key>
# Задайте строгое значение MTU
MTU = 12804. Включение TCP MSS Clamping на сервере
Для автоматической подстройки размера TCP-сессий добавьте правило в iptables на VPN-шлюзе:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu Частые вопросы (FAQ)
Почему стандартный MTU 1420 от WireGuard не работает в AmneziaWG?
Потому что параметры обфускации (S1/S2 и паддинг мусора) увеличивают размер UDP-датаграммы сверх лимита MTU, вызывая фрагментацию IP-пакетов, которые отбрасываются DPI или роутерами.
Снижает ли MTU = 1280 скорость интернет-соединения?
Снижение скорости на уровне оверхеда составляет менее 2-3%, однако это гарантирует стабильную доставку пакетов без фрагментации в любых сотовых и кабельных сетях.
Нужно ли менять MTU на сервере или достаточно изменить его на клиенте?
Рекомендуется выставить одинаковый безопасный MTU (например, 1280) и на интерфейсе сервера awg0, и во всех клиентских файлах конфигурации.
Что делает правило TCPMSS --clamp-mss-to-pmtu?
Оно автоматически переписывает значение MSS в TCP SYN-пакетах под текущий размер MTU туннеля, устраняя зависание веб-страниц без ручной настройки клиентов.