Короткий ответ
Идите по лестнице и останавливайтесь на первой красной ступени: (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/1194 | WG handshake / IKE P1 / OpenVPN / L2TP |
| 2 туннель | ping 10.8.0.1, SA/handshake | handshake есть / P2 / OpenVPN log |
| 3 маршрут | ip route get 10.0.10.10 в туннель, ping хоста | LAN, маршруты, overlapping |
| 4 DNS | Resolve имени | DNS, leak |
| 5 сервис | TCP порт | RDP, MTU |
Возможные причины
- Нет runbook.
- GUI Connected врёт (RAS vs реально нет QM SA).
- Путают full tunnel «нет интернета» с «нет LAN».
- Один overlapping
10.0.10.0/24. - Чинят сервис, пока 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.1IPsec:
swanctl --list-sasOpenVPN лог: 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.10Windows:
Find-NetRoute -RemoteIPAddress 10.0.10.10
Get-VpnConnectionRoute -ConnectionName 'Office'
Test-NetConnection 10.0.10.10dev не туннель — маршруты/overlapping/split. Пакет на wg0 нет на LAN — forward. На LAN нет ответа — хост/обратный маршрут.
Ступень 4. DNS
Resolve-DnsName fileserver.contoso.example -Server 10.0.10.10
Resolve-DnsName fileserver.contoso.example
Get-DnsClientNrptPolicydig @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.
Решение
Лечите ту статью, на которой остановились:
- нет UDP WG → handshake отсутствует;
- handshake есть, overlay нет → трафика нет;
- нет IKE → Phase 1;
- LAN → LAN недоступна, маршруты, overlapping;
- DNS → DNS;
- RDP → RDP;
- MTU → MTU;
- медленно/рвётся → соответствующие статьи.
Стек не выбран — 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.10 → dev 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.10Get-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 в файле.