EL-Script

General IT knowledge base

Как правильно настроить MTU в WireGuard и когда его нужно уменьшать

Настройка MTU WireGuard: как правильно выбрать и когда уменьшать параметр MTU для стабильного VPN-соединения. Практические проверки и решения.

Коротко: MTU в WireGuard: Корректируйте MTU WireGuard, если сталкиваетесь с потерей пакетов, ошибками handshake или недоступностью отдельных сайтов. Базовое значение — 1420 (1500 минус 80), но при туннелировании через PPPoE, мобильные сети или вложенные VPN уменьшайте до 1300–1400. Точное значение определите командой ping с запретом фрагментации.

MTU в WireGuard: Неправильный MTU WireGuard способен превратить быстрый VPN в источник обрывов и недоступных сайтов. Если одни ресурсы грузятся, а другие нет, или туннель постоянно сбрасывает handshake — причина часто кроется в размере пакетов. Разберём, как вычислить оптимальное значение и когда действительно нужно уменьшать MTU.

Основные причины

Причина Что это значит
Магистральные каналы с ограничением MTU Некоторые интернет-провайдеры принудительно снижают MTU на уровне маршрутизации, из-за чего пакеты WireGuard не помещаются в канал.
PPPoE-соединение Физический MTU при использовании PPPoE обычно равен 1492, а не 1500. Без поправки WireGuard будет генерировать фрагментированные пакеты.
VPN поверх VPN При вложенном туннелировании каждый слой добавляет заголовки, требуя уменьшения MTU на сумму накладных расходов всех обёрток.
Мобильный интернет с жёстким MTU Сотовые операторы часто ограничивают MTU значениями 1300–1400, что ломает стандартные настройки WireGuard.
Промежуточные маршрутизаторы отбрасывают ICMP-сообщения о фрагментации Механизм Path MTU Discovery не работает, и крупные пакеты теряются, так как роутеры не передают сообщения «нужна фрагментация».
Несоответствие MTU на клиенте и сервере Если один пир ожидает больший MTU, а другой настроил меньший, возникают асимметричные проблемы с доставкой данных.
Отсутствие MSS clamping TCP-сессии могут зависать, когда размер сегмента превышает возможности канала, потому что брандмауэр не корректирует MSS в SYN-пакетах.

Что проверить сначала

  • Выполните команду ip link show wg0 и зафиксируйте текущий MTU интерфейса.
  • Отправьте ping через туннель с запретом фрагментации: ping -M do -s 1472 .
  • Медленно уменьшайте размер пакета (на 10–20 байт), пока не получите ответ — это и будет эффективный MTU.
  • Проверьте физический MTU без туннеля: ping -M do -s 1472 .
  • Сравните конфигурации клиента и сервера через wg showconf и найдите различия в MTU.
  • Запустите утилиту mtr до недоступного ресурса и обратите внимание на скачки задержек на определённом узле.
  • Проверьте системные логи WireGuard (journalctl -u wg-quick@wg0) на повторяющиеся сообщения о handshake.
  • Просканируйте трафик на ICMP тип 3 код 4 (нужна фрагментация) с помощью tcpdump -i any 'icmp[0]=3 and icmp[1]=4'.

Пошаговое решение

  1. Измерьте физический MTU канала: ping -c 2 -M do -s 1472 .
  2. Если пинг-пакет на 1472 байт не доходит, уменьшайте размер на 10 байт (например, 1462) и повторяйте до успеха.
  3. Вычислите MTU для WireGuard, отняв 80 байт от физического лимита (60 заголовков туннеля + 20 IP-заголовок).
  4. При использовании PPPoE (физический MTU 1492) установите для wg значение 1412; для мобильного интернета начните с 1300.
  5. Откройте конфигурацию /etc/wireguard/wg0.conf и добавьте строку MTU = в секцию [Interface].
  6. Перезапустите туннель: wg-quick down wg0 && wg-quick up wg0.
  7. Если вы управляете интерфейсом вручную (без wg-quick), выполните ip link set dev wg0 mtu .
  8. Для автоматической подстройки TCP-сессий добавьте правило iptables -A FORWARD -p tcp —tcp-flags SYN,RST SYN -j TCPMSS —clamp-mss-to-pmtu.
  9. Повторите проверку доступности ресурсов: пингом и открытием проблемных сайтов через VPN.
  10. Если проблемы сохраняются, дополнительно уменьшите MTU на 20–40 байт и повторите тестирование.
  11. На Windows-клиенте измените MTU в свойствах виртуального адаптера WireGuard или через PowerShell: Set-NetIPInterface -InterfaceAlias 'wg' -NlMtu .
  12. Убедитесь, что межсетевые экраны пропускают ICMP тип 3 код 4, иначе Path MTU Discovery не сработает.
AI-инструмент

Проверить проблему WireGuard

Введите ошибку, симптом или часть конфигурации: handshake, AllowedIPs, DNS, MTU, Endpoint.

FAQ

Почему после настройки WireGuard не открываются некоторые сайты?

Пакеты могут фрагментироваться, а промежуточные устройства блокируют фрагменты. Уменьшите MTU на интерфейсе wg и включите MSS clamping, чтобы TCP-сессии вписывались в лимиты канала.

Какой MTU ставить для WireGuard при использовании провайдера с PPPoE?

Если физический линк имеет MTU 1492, для WireGuard-интерфейса устанавливайте значение 1412 (1492 минус 80). Это предотвращает фрагментацию на уровне PPPoE.

Можно ли оставить MTU по умолчанию 1420 и не трогать?

В большинстве домашних сетей с прямым Ethernet и MTU 1500 это значение работает без проблем. Но при любых признаках обрывов или недоступности ресурсов стоит подобрать точный MTU.

Как MSS clamping помогает при неправильном MTU?

MSS clamping перехватывает TCP-пакеты с флагом SYN и корректирует Maximum Segment Size, чтобы размер сегментов данных не превышал доступный MTU. Это решает зависания соединений.

Что делать, если handshake проходит, но трафик не идёт?

Проверьте MTU на обоих концах туннеля и выполните тест ping с разными размерами через VPN. Скорее всего, крупные пакеты теряются где-то на маршруте.

Как изменить MTU в Android-клиенте WireGuard?

Откройте приложение, перейдите к редактированию туннеля, нажмите «Дополнительно» и в поле MTU введите нужное значение. После этого сохраните конфигурацию и переподключитесь.

Итог

Правильный MTU в WireGuard исключает потери пакетов, стабилизирует handshake и открывает доступ ко всем ресурсам сети. Регулярно проверяйте значение при смене провайдера или добавлении промежуточных туннелей, и VPN останется надёжным и быстрым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *