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

Правильный split: в туннель только согласованные префиксы (10.0.10.0/24, 10.8.0.0/24, при необходимости отдельные VLAN), бытовой трафик — локальный WAN. Ошибки: забыли LAN-маршрут; засунули 0.0.0.0/0; пустили подрядчика во всю 10.0.0.0/8; DNS всё ещё полный через офис или наоборот утекает. Сверьте таблицу клиента и AllowedIPs/push. Не чините split включением full tunnel «на всякий».

Windows: SplitTunneling $true и явный Add-VpnConnectionRoute. Одна галка без маршрутов = нет офиса.

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

  • Пользователь жалуется «VPN медленный» при YouTube — скорее full, не split (перегруз, интернет пропал).
  • «VPN не даёт шару» при живом интернете — нет префикса файлового VLAN.
  • Подрядчик пингует принтеры и DC, хотя просили только один хост.

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

  1. AllowedIPs слишком широкий (0.0.0.0/0 или 10.0.0.0/8).
  2. Слишком узкий: забыли 10.0.20.0/24 где живёт 1С.
  3. OpenVPN redirect-gateway вместе с route LAN.
  4. RAS SplitTunneling false.
  5. DNS не согласован со split (все запросы в офис или все на ISP).
  6. GPO/Always On дополняет маршруты сюрпризом.
  7. Второй VPN-клиент добавляет свои префиксы.

Диагностика

ip route
ip -6 route
wg show
ip route get 1.1.1.1
ip route get 10.0.10.10
ip route get 10.0.20.10
Get-VpnConnection | Format-List Name, SplitTunneling
Get-VpnConnectionRoute -ConnectionName 'Office'
Find-NetRoute -RemoteIPAddress 1.1.1.1
Find-NetRoute -RemoteIPAddress 10.0.10.10
Get-DnsClientNrptPolicy

Составьте таблицу: назначение → устройство. Для подрядчика сверните лишние /8.

Захват:

tcpdump -n -i wg0

YouTube IP на wg0 при «split» — split вран.

Решение

Сценарий A. Нужен офис + домашний интернет

WireGuard:

AllowedIPs = 10.8.0.0/24, 10.0.10.0/24

Добавьте другие офисные /24 явно. Windows — SplitTunneling true + маршруты. OpenVPN — без redirect-gateway, только push route.

Сценарий B. Не хватает VLAN

Инвентарь: где живёт сервис (не «вся десятка»). Добавьте один префикс, не /8. Проверьте overlapping у клиента.

Сценарий C. Слишком широко

Уберите 0.0.0.0/0. У подрядчика оставьте /32 бастиона. См. статью подрядчика.

Сценарий D. DNS

NRPT только .contoso.example10.0.10.10. Остальное — бытовой DNS. Проверка утечки — отдельная статья.

Сценарий E. IPv6

Не анонсируйте ::/0, если IPv4 split. Или стройте split IPv6 так же явно.

Стенд: инвентарь префиксов перед правкой AllowedIPs

Соберите таблицу сервисов, не «все 10/8». Пример: файлы 10.0.10.0/24, 1С 10.0.20.0/24, принтеры 10.0.30.0/24, гипервизор 10.0.50.5/32 только админам. Пользовательский WG:

AllowedIPs = 10.8.0.0/24, 10.0.10.0/24, 10.0.20.0/24

Без 10.0.30.0/24 и без 10.0.50.0/24. Проверка: ip route get 10.0.30.10 не в wg0, ip route get 10.0.20.10 в wg0. Подрядчик — ещё уже, см. отдельную статью.

Windows:

Get-VpnConnectionRoute -ConnectionName 'Office'
Find-NetRoute -RemoteIPAddress 10.0.20.10
Find-NetRoute -RemoteIPAddress 1.1.1.1

IPv6: Get-NetRoute -AddressFamily IPv6. Если ::/0 через VPN при IPv4-split, YouTube по AAAA уедет в офис и вы снова получите «slow VPN» при «правильном» IPv4 split. Уберите ::/0 или постройте IPv6-split так же явно.

GPO: сравните Get-VpnConnection до и после gpupdate /force. Если маршруты размножаются — источник GPO, не GUI. Документируйте эталон XML Always On.

Не лечите «не хватает одной шары» добавлением 10.0.0.0/8: у клиента Docker 10.0.0.0/24 и overlapping вернутся. Добавьте один /24 или /32.

Проверка утечки DNS после сужения split обязательна: внутренние имена не должны уехать на ISP. NRPT .contoso.example остаётся, даже если 0.0.0.0/0 сняли.

На OpenVPN не оставляйте redirect-gateway в server.conf «закомментированным иногда». Вынесите full tunnel в CCD админов. Пользовательский client.ovpn без этой строки.

Контрольный лист после смены split

  1. ip route get 1.1.1.1 не через wg0.
  2. Нужные /24 через туннель, лишние VLAN нет.
  3. tcpdump -n -i wg0 без TLS к CDN при открытии youtube.
  4. Resolve-DnsName fileserver.contoso.example через 10.0.10.10.
  5. IPv6 default не в туннеле, если IPv4 split.
  6. Подрядческий шаблон не скопирован с пользовательского.

Повторите на Windows 11 и на одном Linux, не только на вашем стенде. Метрики RAS отличаются от wg-quick. Сохраните эталон Get-NetRoute в git заявки, не в чат.

Если после split «пропал интернет» у одного человека — у него мог остаться kill-switch GUI или старый 0.0.0.0/0 в втором профиле (Always On + WG). Get-VpnConnection и wg show одновременно. Два клиента на одной машине — отдельный класс поломок маршрутов.

OpenVPN: route-metric и redirect-gateway def1 с route LAN одновременно дают два default (0.0.0.0/1 и 128.0.0.0/1) плюс LAN. Это full, как бы вы ни называли файл split.ovpn. Grep redirect-gateway по всем CCD и server.conf.

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

ip route get 1.1.1.1    # не wg0
ip route get 10.0.10.10 # wg0
ping -c 2 10.0.10.10

Speedtest не грузит WAN офиса. Нужные шары/RDP живы. tcpdump на wg0 без бытового HTTPS.

Get-VpnConnection -Name 'Office' | Select-Object SplitTunneling
Get-VpnConnectionRoute -ConnectionName 'Office'

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

  • Маршруты ок, сервиса нет — firewall хоста/ACL.
  • После GPO маршруты вернулись — править GPO, не клиент.
  • Часть сайтов внутренних на публичных IP — их нет в split, добавьте префикс или hosts осознанно (редко).

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

  • Реестр префиксов на VPN в документации.
  • Разные шаблоны: сотрудник / подрядчик / админ.
  • Запрет 10.0.0.0/8 в ревью конфигов.
  • Канарейка: iperf к LAN + Speedtest не через офис.

FAQ

Split опаснее full для утечек?

Для DNS — да, если NRPT нет. Для данных офиса split как раз меньше гоняет их через домашний браузер на офисный прокси. Политика решает. Проверяйте утечку DNS.

Можно ли split только для 3389?

На уровне порта — не AllowedIPs (там сеть). Нужен firewall на шлюзе: даже с /24 режьте кроме 3389. Маршрут /32 + ACL лучше.

Windows сам ставит split на корпоративные сети?

Нет. Always On / GPO могут. Ручной профиль — нет.

AllowedIPs 10.0.10.0/24, а 1С в 10.0.10.0/23

/23 не покрыт /24. Добавьте второй /24 или корректный префикс.

Нужен ли маршрут на 10.8.0.0/24 явно?

Connected на интерфейсе часто хватает для ping шлюза. Для чужих пиров туннеля — да, если политика позволяет пир-пир (обычно нет).