WireGuard Error: Maximum transmission unit (MTU) too large for outer link — Решение
Исходящие зашифрованные пакеты WireGuard превышают физический MTU внешнего сетевого адаптера, вызывая принудительную фрагментацию IP-уровня, которая блокируется сетевым оборудованием провайдера.
- Сообщения ядра:
wireguard: wg0: Packet size X exceeds MTU Y of device eth0. - Критическая потеря пакетов при передаче файлов по SCP/SFTP или потокового видео через VPN.
- Сетевой трафик падает до нуля при превышении размера полезной нагрузки более 1400 байт.
- Утилита
traceroute --mtuфиксирует отброс пакетов на первом маршрутизаторе оператора.
1. Анализ MTU физического интерфейса (Outer Link)
Определите реальный MTU основного сетевого адаптера, через который отправляется зашифрованный UDP-трафик:
ip link show eth0Если физический интерфейс работает через PPPoE (MTU 1492), VLAN (MTU 1496) или туннелирование VXLAN (MTU 1450), стандартный MTU WireGuard (1420) будет слишком велик.
2. Формула безопасного расчета MTU туннеля
MTU_WireGuard = MTU_Физического_Интерфейса - 80 (для IPv6) или 60 (для IPv4)Пример для канала PPPoE (1492): 1492 - 60 = 1432 (максимум) -> Безопасное: 1360-1380.
Пример для сетей LTE/4G/5G: 1500 - 120 = 1280-1340.
3. Установка безопасного MTU на всех узлах туннеля
Отредактируйте файл конфигурации /etc/wireguard/wg0.conf:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <PrivateKey>
# Задание безопасного размера MTU
MTU = 13604. Включение принудительного TCP MSS Clamping
Добавьте правило ограничения размера сегментов в таблицу mangle:
iptables -t mangle -I POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --clamp-mss-to-pmtu5. Применение настроек
wg-quick down wg0 && wg-quick up wg0 Частые вопросы (FAQ)
Чем опасна фрагментация UDP-пакетов WireGuard?
Многие межсетевые экраны и NAT-роутеры провайдеров блокируют фрагментированные UDP-дейтаграммы (смещение фрагмента > 0), что приводит к полной потере 100% зашифрованного трафика.
Почему по умолчанию wg-quick выбирает MTU 1420?
Значение 1420 рассчитано исходя из стандартного Ethernet MTU 1500 за вычетом 60 байт оверхеда IPv4/UDP/WireGuard и 20 байт запаса. Но оно не учитывает вложенные протоколы (PPPoE, L2TP, GRE).
Как влияет слишком низкий MTU (например, 1280) на скорость передачи данных?
Снижение MTU незначительно увеличивает относительный процент заголовков к полезным данным (около 1-2% оверхеда по bandwidth), но полностью исключает проблемы с потерей пакетов и задержками.
Как динамически проверить MTU канала до удаленного сервера?
Используйте утилиту tracepath: tracepath -p 51820 vpn.example.com. Она покажет точный Path MTU на каждом узле маршрута.