WireGuard есть handshake, но нет интернета или доступа к локальной сети: что проверить

WireGuard · AllowedIPs · NAT · Firewall · DNS

WireGuard подключён, но трафик не идёт: AllowedIPs, маршруты, NAT, firewall и DNS

Handshake в WireGuard означает только то, что пиры смогли обменяться криптографическими пакетами. Он не гарантирует, что есть правильный маршрут к локальной сети, разрешён forwarding, настроен NAT, работает DNS или отсутствует конфликт подсетей. Поэтому ситуация «handshake есть, но ничего не открывается» встречается очень часто.

HandshakeAllowedIPsRoutingNATFirewallMTU

Handshake есть — что это реально значит

Handshake подтверждает, что ключи подходят, endpoint достижим и два peer способны обменяться служебными пакетами WireGuard. Но пользовательский трафик после этого ещё должен пройти обычную IP-маршрутизацию и firewall.

Handshakeкриптография и endpoint
Route / AllowedIPsкуда отправлять пакеты
Firewall / NATразрешить и вернуть ответ
Поэтому «latest handshake 10 sec ago» не означает, что VPN уже настроен правильно.

AllowedIPs: самый частый источник ошибок

В WireGuard AllowedIPs играет сразу две роли. На отправляющей стороне это определяет, какой трафик относится к конкретному peer. На принимающей стороне адрес источника пакета должен соответствовать AllowedIPs данного peer.

У Linux-инструмента wg-quick маршруты автоматически выводятся из AllowedIPs. Официальная man page прямо указывает, что wg-quick добавляет маршруты из списков allowed IPs peer, а при 0.0.0.0/0 или ::/0 отдельно обрабатывает default route.

Split tunnel: через VPN только нужные сети

[Peer]
AllowedIPs = 192.168.1.0/24

Такой клиент направит через WireGuard только трафик к сети 192.168.1.0/24. Обычный интернет продолжит идти через локальный Wi‑Fi или мобильную сеть.

ПлюсНе меняется обычный интернет

VPN используется только для доступа домой.

МинусНужно перечислить все нужные сети

Например LAN, CCTV, management и другие разрешённые подсети.

Full tunnel: весь интернет через WireGuard

[Peer]
AllowedIPs = 0.0.0.0/0, ::/0

Официальная документация MikroTik также использует 0.0.0.0/0 как пример для отправки всего IPv4-трафика через WireGuard.

Но одного AllowedIPs недостаточно. VPN-шлюз должен:

  • разрешать forwarding WG → WAN;
  • иметь маршрут в интернет;
  • обычно выполнять source NAT/masquerade;
  • предоставить рабочий DNS;
  • корректно обрабатывать IPv6, если он также включён.

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

Если клиент должен попасть в 192.168.2.0/24, такой маршрут должен существовать либо через AllowedIPs, либо быть создан другим способом.

Очень частая ошибка:

в AllowedIPs указан только адрес WireGuard peer, например 10.10.10.1/32, а локальная сеть за ним 192.168.2.0/24 вообще не добавлена.

В site-to-site конфигурации маршруты нужны с обеих сторон, если обе сети должны инициировать соединения друг к другу.

Firewall: input и forward — не одно и то же

Если клиент пингует сам VPN-шлюз, но не видит устройства за ним, часто проблема именно в forwarding.

InputТрафик к самому роутеру

Например DNS или management на адресе роутера.

ForwardТрафик через роутер

Например WireGuard client → NAS в LAN.

Документация MikroTik для IPv6 WireGuard прямо указывает необходимость firewall rule в forward chain для разрешения трафика клиента.

Когда нужен NAT / masquerade

Для full tunnel клиент обычно выходит в интернет через WAN VPN-шлюза. Если upstream не знает маршрута обратно к WireGuard-подсети, source NAT упрощает схему.

WG client10.10.10.2
VPN routermasquerade
Internetвидит WAN IP роутера

OpenWrt управляет masquerading на уровне firewall zone. В документации OpenWrt NAT/MASQUERADE описывается как per-zone настройка исходящего трафика.

Для доступа к LAN NAT не всегда обязателен. Более чистая схема — нормальная маршрутизация и обратный маршрут. Но в небольших сетях masquerade иногда используют, если изменить маршруты на LAN-устройствах нельзя.

IP открывается, а сайты нет — почти наверняка проверяйте DNS

  1. Попробуйте ping по IP.
  2. Попробуйте открыть DNS-сервер по его IP.
  3. Проверьте, какой DNS выдан WireGuard-клиенту.
  4. Проверьте firewall к UDP/TCP 53, если DNS локальный.
  5. Убедитесь, что DNS-сервер принимает запросы из WireGuard subnet.

Если 1.1.1.1 доступен, а доменные имена нет, сам туннель и интернет-маршрут уже, вероятно, работают.

Одинаковые подсети с двух сторон: скрытая причина

Представим, что дома LAN 192.168.1.0/24. Пользователь приходит в гостиницу, где Wi‑Fi тоже использует 192.168.1.0/24.

Клиенту становится неоднозначно, где находится 192.168.1.50.

Локальная connected route может конфликтовать с маршрутом через VPN.

Для домашних сетей, к которым планируется удалённый VPN-доступ, полезно использовать менее типичные приватные подсети, например из диапазона 10.0.0.0/8 или нестандартную сеть 192.168.x.0/24.

Когда виноват MTU

Если ping маленькими пакетами проходит, но сайты зависают, большие загрузки ломаются или отдельные HTTPS-сервисы не открываются, стоит проверить MTU/PMTU.

1420 — распространённое значение WireGuard MTU, но не универсальный закон.

Дополнительный PPPoE, мобильный оператор, вложенный VPN или другой туннель уменьшают доступный MTU.

Не начинайте диагностику с MTU, если вообще не пингуется адрес WireGuard peer или LAN. Сначала исправьте AllowedIPs, маршруты и firewall.

PersistentKeepalive: для NAT, а не для исправления маршрутов

Официальный WireGuard Quick Start рекомендует PersistentKeepalive как механизм поддержания NAT/firewall mapping для peer за NAT. Типичное разумное значение для такого сценария — 25 секунд.

PersistentKeepalive = 25

По умолчанию функция выключена, и большинству peer она не нужна. PersistentKeepalive не исправит неверный AllowedIPs, отсутствующий route или запрещённый forward.

IPv6 может создавать отдельный маршрут мимо IPv4 VPN

Если клиент настроен только с 0.0.0.0/0, но устройство имеет рабочий IPv6 через локального провайдера, часть трафика может идти напрямую по IPv6.

Для полноценного dual-stack full tunnel нужны соответствующие IPv6 addresses, AllowedIPs, routes и firewall rules. MikroTik публикует отдельное руководство по WireGuard IPv6 с добавлением IPv6 allowed-address и forward rule.

MikroTik: что проверять

  • /interface wireguard peers print detail — handshake и Allowed Address;
  • /ip route print — маршруты;
  • /ip firewall filter print — input и forward;
  • /ip firewall nat print — masquerade для full tunnel;
  • /ip dns — DNS, если роутер должен отвечать VPN-клиентам;
  • адрес WireGuard interface и уникальность peer address.

В RouterOS Allowed Address для peer не должен конфликтовать с Allowed Address другого peer на том же интерфейсе.

OpenWrt: чаще всего проблема в firewall zone

На OpenWrt недостаточно создать WireGuard interface. Нужно определить, в какую firewall zone он входит и какие forwarding разрешены.

WG zoneWireGuard clients
LAN / WANforwarding policy
Masqueradeдля выхода в WAN при необходимости

Официальные OpenWrt guides отдельно описывают WireGuard server/client и firewall zone/NAT конфигурацию.

Linux и wg-quick

У wg-quick AllowedIPs автоматически участвует в создании routes. Это удобно, но иногда удивляет при нескольких default routes, policy routing или нескольких VPN одновременно.

ip route
ip rule
wg show

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

Пошаговая диагностика: handshake есть, трафика нет

  1. Проверьте IP WireGuard interface на обеих сторонах.
  2. Проверьте latest handshake.
  3. Пингуйте WireGuard IP противоположного peer.
  4. Проверьте AllowedIPs.
  5. Проверьте route к нужной LAN.
  6. Проверьте firewall input, если обращаетесь к VPN-шлюзу.
  7. Проверьте firewall forward, если идёте через шлюз.
  8. Для full tunnel проверьте NAT/masquerade на WAN.
  9. Проверьте DNS отдельно от IP-связности.
  10. Проверьте конфликт локальной и удалённой подсети.
  11. Если ломаются только большие пакеты, проверьте MTU.
  12. Только затем добавляйте PersistentKeepalive, если peer за NAT.

Три типичных сценария по симптомам

Handshake есть, WG IP не пингуется

AllowedIPs, peer address, firewall input или конфликт адресов.

WG router пингуется, LAN нет

Forwarding, route к LAN, обратный маршрут или LAN firewall.

LAN работает, интернет через VPN нет

Default route, forward WG→WAN, NAT/masquerade или DNS.

IP работает, домены нет

DNS.

Пинг работает, HTTPS зависает

MTU/PMTU становится вероятнее.

Работает дома, не работает в гостинице

Проверьте overlapping subnet или блокировку UDP.

Чего делать не нужно

Сразу ставить AllowedIPs = 0.0.0.0/0

Это меняет весь маршрут интернета и может усложнить диагностику.

Masquerade всё подряд

Так можно скрыть проблему маршрутизации и потерять реальные IP клиентов.

Отключать firewall

Лучше временно добавить точное правило и проверить counters.

Менять MTU наугад

Сначала локализуйте уровень проблемы.

Частые вопросы

Handshake есть, но нет доступа к 192.168.1.0/24. Что проверить первым?

AllowedIPs клиента, маршрут к сети, forward rule на VPN-шлюзе и обратный путь ответа.

Нужен ли masquerade для доступа к домашней LAN?

Не обязательно. При правильной маршрутизации лучше обойтись без него. Masquerade полезен, если LAN не имеет маршрута обратно к WG subnet и изменить это нельзя.

Почему full tunnel подключается, но интернет пропадает?

После 0.0.0.0/0 весь IPv4 трафик уходит в туннель. Шлюз должен разрешить forwarding в WAN, выполнить необходимый NAT и предоставить DNS.

PersistentKeepalive 25 исправит отсутствие интернета?

Нет. Он поддерживает NAT mapping и полезен для peer за NAT, но не исправляет routes, firewall или DNS.

Можно ли иметь одинаковую LAN 192.168.1.0/24 дома и в удалённой сети?

Это создаёт routing conflict. Лучше заранее использовать разные подсети.

Вывод

WireGuard handshake — только первый этап диагностики. После него последовательно проверяйте AllowedIPs, routes, firewall forward, NAT, DNS и только затем MTU или PersistentKeepalive.

Самый полезный диагностический подход — двигаться от ближайшего адреса к дальнему: peer WG IP → VPN router → LAN host → публичный IP → DNS name. В какой точке связь впервые исчезла, там и находится нужный уровень настройки.