Диагностика и исправление troubleshooting Обновлено 7 мин linux

WireGuard не пингуется: диагностика маршрутов и AllowedIPs

Пошаговая диагностика, когда WireGuard-туннель поднят, но ping не проходит. Фокус на AllowedIPs, маршрутах, firewall и MTU.

wireguardallowedipsдиагностикамаршрутизацияping
Содержание
КороткоСначала проверьте рукопожатие, затем AllowedIPs на обеих сторонах, маршруты через wg0, форвардинг и firewall. Потом MTU и внешние лимиты.

1. Почему WireGuard не отвечает на ping

WireGuard — это простой VPN, но даже при успешном рукопожатии пакеты могут не доходить. Основная причина — неверные AllowedIPs на одной из сторон или отсутствие маршрута к удалённой подсети. Диагностика должна идти от проверки состояния интерфейса до правил фильтрации.

2. Проверка состояния туннеля

Убедитесь, что интерфейс WireGuard активен и рукопожатие состоялось. Выполните wg show. В выводе должна быть строка latest handshake не слишком старая. Если рукопожатия нет — проблема в доступе к порту UDP, ключах или Endpoint.

3. AllowedIPs — ключевой подозреваемый

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

  • На сервере: wg set wg0 peer <pubkey> allowed-ips <IP клиента>/32
  • На клиенте: AllowedIPs = <IP сервера>/32 или если нужно ходить в другие подсети — укажите их.

Типичная ошибка: на клиенте указывают AllowedIPs = 0.0.0.0/0, а на сервере забывают разрешить ответный трафик. Внимательно проверьте маски.

4. Маршруты в таблице

WireGuard автоматически добавляет маршруты на основе AllowedIPs, но если используется сложная маршрутизация (Policy-based routing), маршрут может отсутствовать. Проверьте ip route get <туннельный IP>. Если маршрут не указывает на dev wg0, добавьте его вручную: ip route add <IP>/32 dev wg0. Для постоянности настройте в конфигурации wireguard или через сетевой менеджер.

5. Firewall, форвардинг и sysctl

Даже если всё с маршрутами в порядке, пакеты может блокировать firewall. Проверьте:

  • sysctl net.ipv4.ip_forward — на сервере должно быть 1.
  • Правила iptables/nftables для интерфейса wg0 — разрешите вход и выход.
  • Если есть политика по умолчанию DROP, проверьте цепочку FORWARD.

Пример правила для NAT (если клиенты выходят в интернет): iptables -t nat -A POSTROUTING -s <VPN_SUBNET> -o eth0 -j MASQUERADE — но это уже за рамками ping.

6. MTU и другие сетевые нюансы

Иногда пакеты ping не проходят из-за фрагментации. WireGuard по умолчанию использует MTU 1420, но если промежуточное звено имеет меньшее значение, пакеты теряются. Попробуйте уменьшить MTU до 1400 или найти подходящее значение. Также проверьте настройки ICMP — некоторые провайдеры блокируют ping.

7. Сводная диагностика

Итак, алгоритм:

  1. Проверка рукопожатия.
  2. Проверка AllowedIPs на обеих сторонах.
  3. Проверка таблицы маршрутов.
  4. Проверка firewall и форвардинга.
  5. Проверка MTU и внешних ограничений.

Следуя этой последовательности, вы быстро найдёте причину. Если ничего не помогло, посмотрите логи WireGuard и tcpdump на интерфейсе.

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

  • Проверьте, что handshake состоялся через wg show
  • Сравните AllowedIPs на клиенте и сервере
  • Выполните ip route get и убедитесь, что маршрут идёт через wg0
  • Проверьте sysctl net.ipv4.ip_forward и firewall

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

  • Указание AllowedIPs = 0.0.0.0/0 без необходимости
  • Забыли включить ip_forward на сервере
  • Слишком строгий firewall, блокирующий ICMP
  • Несоответствие MTU

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

FAQ

Почему ping до туннельного адреса идёт, а до внутренней сети нет?

Проверьте AllowedIPs на клиенте: укажите подсеть внутренней сети, например 192.168.1.0/24.

Что делать, если wg show показывает handshake, но ping не проходит?

Проверьте маршруты и firewall. Возможно, пакеты уходят не в туннель или блокируются правилами.

Как быстро проверить, что проблема в AllowedIPs?

Временно установите AllowedIPs = 0.0.0.0/0 на клиенте и проверьте связь. Если помогает — сузьте диапазон до нужного.

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

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

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

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

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