Короткий ответ

Идите по лестнице и останавливайтесь на первой красной ступени: (1) UDP до vpn.example.com, (2) туннель/SA/10.8.0.1, (3) маршрут на 10.0.10.0/24 и forwarding, (4) DNS имени, (5) порт сервиса (3389/445/443). Не начинайте с перевыпуска ключей, если ping 10.8.0.1 уже жив. Не отключайте firewall «чтобы локализовать» — tcpdump и counters точнее.

Зафиксируйте стек: WireGuard / IKEv2 / L2TP / OpenVPN 2.6 / Windows RAS (Get-VpnConnection). Дальше команды разные, лестница одна.

Симптомы и как отличить

Хаос в заявке: «не работает VPN» = и иконка, и 1С, и сайт. Разведите: нет Connected; Connected без LAN; LAN по IP без имени; имя есть, RDP нет; всё есть, медленно/рвётся.

Таблица ступеней:

СтупеньПрошёл, еслиСтатья, если нет
1 UDPпакеты на 51820/500/4500/1194WG handshake / IKE P1 / OpenVPN / L2TP
2 туннельping 10.8.0.1, SA/handshakehandshake есть / P2 / OpenVPN log
3 маршрутip route get 10.0.10.10 в туннель, ping хостаLAN, маршруты, overlapping
4 DNSResolve имениDNS, leak
5 сервисTCP портRDP, MTU

Возможные причины

  1. Нет runbook.
  2. GUI Connected врёт (RAS vs реально нет QM SA).
  3. Путают full tunnel «нет интернета» с «нет LAN».
  4. Один overlapping 10.0.10.0/24.
  5. Чинят сервис, пока UDP тишина.

Диагностика

Плейсхолдеры: vpn.example.com, UDP 51820 для WG, пул 10.8.0.0/24, LAN 10.0.10.0/24, хост 10.0.10.10.

Ступень 0. Что за клиент

Get-VpnConnection | Format-List Name, TunnelType, ServerAddress, ConnectionStatus, SplitTunneling

Если пусто, а туннель в трее — WireGuard/OpenVPN, не RAS.

wg show
ip addr show wg0
ip addr show tun0

Ступень 1. UDP / IKE / OpenVPN transport

На сервере:

tcpdump -n -i eth0 udp port 51820 or udp port 500 or udp port 4500 or udp port 1194

Инициация с клиента (Connect / ping 10.8.0.1). Тишина — сеть, DNS endpoint, фильтр. Не ключи LAN.

Resolve-DnsName vpn.example.com

Ступень 2. Overlay

wg show
ping -c 3 10.8.0.1
ip route get 10.8.0.1

IPsec:

swanctl --list-sas

OpenVPN лог: Initialization Sequence Completed. Нет ping внутри overlay — AllowedIPs/интерфейс/фильтр INPUT на wg0, не LAN.

Test-NetConnection 10.8.0.1

Ступень 3. Маршрут и LAN

ip route get 10.0.10.10
sysctl net.ipv4.ip_forward
tcpdump -n -i wg0 host 10.0.10.10
tcpdump -n -i eth1 host 10.0.10.10
ping -c 3 10.0.10.10

Windows:

Find-NetRoute -RemoteIPAddress 10.0.10.10
Get-VpnConnectionRoute -ConnectionName 'Office'
Test-NetConnection 10.0.10.10

dev не туннель — маршруты/overlapping/split. Пакет на wg0 нет на LAN — forward. На LAN нет ответа — хост/обратный маршрут.

Ступень 4. DNS

Resolve-DnsName fileserver.contoso.example -Server 10.0.10.10
Resolve-DnsName fileserver.contoso.example
Get-DnsClientNrptPolicy
dig @10.0.10.10 fileserver.contoso.example +short
resolvectl query fileserver.contoso.example
tcpdump -n port 53

Ступень 5. Сервис и MTU

Test-NetConnection 10.0.10.10 -Port 3389
ping -f -l 1372 10.0.10.10

Мелкий ping ок, TCP нет — firewall хоста. TCP SYN ок, сессия мрёт — MTU.

Не прыгать

Запрещённые движения: отключить firewall на WAN; AllowedIPs 0.0.0.0/0 без запроса; seize чего бы то ни было; переустановка Windows.

Решение

Лечите ту статью, на которой остановились:

Стек не выбран — WG или IPsec.

Пример заполнения тикета

Стек: WireGuard, клиент Windows 11 + wg show. Ступень 1: tcpdump на WAN видит UDP 51820. Ступень 2: handshake 12s ago, ping 10.8.0.1 3/3. Ступень 3: ip route get 10.0.10.10dev wg0, ping хоста 0/3, на eth1 ICMP есть, ответа нет — ступень 3 красная на обратном пути, не ключи. Дальше SNAT/маршрут LAN, статьи LAN/маршруты. Не писать «перевыпустил ключи, не помогло».

Команды-минимум в приложении: wg show или Get-VpnConnection + swanctl --list-sas, ip route get/Find-NetRoute, tcpdump 20 строк, Resolve-DnsName/resolvectl, Test-NetConnection -Port. Без этого эскалация слепая.

Не отключайте firewall на ступени 1 «для чистоты tcpdump». Counters и pcap достаточны. Лестница кончается на сервисе: зелёный 3389 не гарантирует 1С — это уже не VPN, не продолжайте крутить AllowedIPs.

Ступень 0 повторяйте, если в тикете «VPN» смешаны RAS и WG: иначе ступень 1 снимете на 51820, а клиент стучит в 4500. Get-VpnConnection + wg show в одном абзаце. Если обе пустые — OpenVPN лог. Лестница не лечит overlapping сама, но ступень 3 route get это покажет: dev wlan0 при Connected. Не поднимайтесь на ступень 5, пока 3 красная: RDP-ошибки будут ложными.

Как проверить, что проблема устранена

Пройдите лестницу сверху вниз на том же клиенте. Все ступени зелёные: UDP виден, 10.8.0.1 ping, 10.0.10.10 ping, имя резолвится, сервис TCP. Сохраните выводы в заявку.

wg show
ip route get 10.0.10.10
ping -c 2 10.8.0.1
ping -c 2 10.0.10.10
Get-VpnConnection
Test-NetConnection 10.0.10.10 -Port 3389

Если не помогло

  • Ступени зелёные, приложение нет — слой приложения (1С, прокси), не VPN.
  • Симптом плавает — снимайте tcpdump в момент отказа, смотрите разрывы/NAT.
  • Два клиента, один болен — локально (профиль, overlapping, DoH).

Профилактика

  • Этот runbook в первой строке очереди VPN.
  • Канарейка: скрипт ступеней 2–5 раз в 5 минут.
  • Запрет «отключить firewall» в памятке L1.
  • Единые плейсхолдеры в документации.

FAQ

Почему не начать с iperf?

Iperf на 5-й ступени. На 1-й он бесполезен.

GUI Connected, ступень 2 красная

Верьте ping/wg show/list-sas, не иконке.

Нужен ли tcpdump всегда?

На ступени 1 — да, если не очевидно. На ступени 5 — когда порт слушает, а сессия странная.

Можно ли пропустить DNS, если ходим по IP?

Да, до поры. Kerberos/RDP NLA часто требует имя — не удивляйтесь на ступени 5.

Куда смотреть логи секретов?

Не в эту лестницу. Журналирование без PSK в файле.