Диагностика и исправление Диагностика Обновлено 4 MikroTik

MikroTik: пропадает трафик через WireGuard-клиента

Пропадает трафик через WireGuard на MikroTik? Проверьте MTU, маршруты и firewall. Пошаговая диагностика и настройка, которая решает проблему.

WireGuardMikroTikRouterOSVPNtroubleshootingMTU
Содержание
КороткоЕсли трафик не идёт через WireGuard на MikroTik, проверьте в порядке: счётчики интерфейса, MTU (обычно 1420), маршруты до удалённых сетей, правила firewall и NAT. Часто помогает MSS clamping и persistent keepalive.

WireGuard на MikroTik работает достаточно стабильно, но иногда трафик через VPN-клиента «пропадает»: туннель поднят, пиры видны, а пакеты не идут. Обычно это не проблема самого WireGuard, а ошибки в настройке маршрутизации, firewall или MTU. Разберём, как последовательно найти причину.

Проверьте базовое состояние WireGuard

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

/interface wireguard print
/interface wireguard peers print

Обратите внимание на столбцы rx и tx. Если они не растут при попытке доступа к удалённой сети, значит проблема на уровне туннеля или маршрутизации. Также проверьте, что состояние пира — established, а не handshake.

Если счётчики растут, но до конечного узла трафик не доходит — переходите к следующему пункту.

MTU и MSS: настройте правильно, чтобы пакеты не терялись

WireGuard добавляет к каждому пакету заголовок в 32 байта (IPv4) или 48 байт (IPv6). Если MTU на туннельном интерфейсе оставить по умолчанию 1500, большие пакеты будут фрагментироваться или отбрасываться. Рекомендуется устанавливать MTU 1420 или меньше, в зависимости от вашего соединения. Проверьте текущее значение:

/interface wireguard print

Если MTU больше 1420 — измените его:

/interface wireguard set [find name=wg1] mtu=1420

Кроме того, настройте MSS clamping в файрволле, чтобы TCP-сессии не отправляли пакеты больше допустимого. Пример правила для forward-цепи (адаптируйте под свою схему):

/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=clamp-to-pmtu passthrough=yes

Эту настройку важно проверить для обеих сторон туннеля.

Проверьте маршруты и NAT

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

/ip route print

Для клиента обычно добавляется маршрут на удалённую подсеть с gateway-интерфейсом wg1. Также важно, чтобы ответные пакеты могли вернуться обратно — на серверной стороне должен быть разрешён форвардинг этой сети и настроен NAT (masquerade) для трафика из туннеля, если это нужно.

/ip firewall nat print

Если маршруты есть, но трафик всё равно не проходит, проверьте, не перекрывают ли другие маршруты ваш туннельный маршрут, и настройте более специфичные правила.

Firewall: не блокирует ли он нужный трафик

На MikroTik стандартное правило firewall может отбрасывать трафик из VPN. Проверьте правила forward и input:

/ip firewall filter print

Обычно нужно разрешать established, related и untracked, а также явно разрешать forward-трафик между туннелем и внутренней сетью. Если у вас есть правило drop-all в конце, убедитесь, что перед ним есть разрешающие правила.

Обратите внимание на цепочку input — если вы не разрешили доступ к самому интерфейсу wg1, то WireGuard может не получать handshake. Также проверьте, что порт WireGuard открыт на внешнем интерфейсе, если это сервер.

Keepalive, DNS и другие мелочи

Иногда трафик пропадает только после простоя. Включите persistent keepalive на пире, чтобы туннель не разрывался из-за NAT:

/interface wireguard peers set [find] persistent-keepalive=25s

Если пропадает только DNS, проверьте, какой DNS-сервер используется внутри туннеля. Возможно, вы забыли добавить маршрут для DNS или зарезолвить адрес сервера.

Также стоит проверить, не конфликтует ли адрес локальной сети с адресами внутри VPN, и не совпадают ли подсети. Если всё перечисленное не помогло, посмотрите логи на обеих сторонах туннеля и убедитесь, что версия RouterOS поддерживает WireGuard и не имеет известных ошибок — проверьте для вашей версии.

Мини-чеклист

  • Проверить счётчики интерфейса WireGuard и статус пира (established, rx/tx растут).
  • Установить MTU на wg1 в 1420 и добавить правило MSS clamping.
  • Проверить маршруты до удалённых сетей через интерфейс wg1.
  • Проверить правила firewall (input/forward) и NAT — не блокируют ли VPN-трафик.

Частые ошибки

  • На туннельном интерфейсе оставлен MTU 1500, из-за чего большие пакеты теряются.
  • Не добавлен маршрут на удалённую подсеть через wg1.
  • Firewall разрешает only input, но не разрешает forward между туннелем и LAN.
  • Не настроен NAT (masquerade) на серверной стороне для трафика из туннеля.

Источники и документация

FAQ

Почему WireGuard показывает connected, но трафик не идёт?

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

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

Рекомендуется MTU 1420 для IPv4. Это компенсирует заголовки WireGuard (32 байта). Для IPv6 нужно 1380. Проверьте на своей сети: уменьшайте значение, пока не стабилизируется связь.

Как включить persistent keepalive на MikroTik?

Выполните команду: /interface wireguard peers set [find] persistent-keepalive=25s. Это обычно решает проблему разрыва туннеля при NAT или простое.

Что делать, если после перезагрузки MikroTik туннель WireGuard не поднимается?

Убедитесь, что конфигурация сохранена (system backup и /export). Проверьте, не менялся ли публичный IP сервера, и при необходимости обновите endpoint. Также проверьте автозагрузку интерфейса wg1.

Нужен быстрый рабочий доступ?

Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.

Получить доступ

Дальше по теме

Связанные статьи