Развертывание WireGuard Remote Access: настройка разделения трафика Split Tunneling
При настройке удаленного доступа сотрудников через WireGuard возникают проблемы маршрутизации:
- При включении VPN у клиента пропадает доступ к локальным ресурсам (домашний роутер, сетевые принтеры, LAN-шары).
- Весь развлекательный трафик клиента (YouTube, торренты) идет через корпоративный сервер, перегружая канал компании.
- Утечки корпоративных DNS-запросов в сеть локального провайдера клиента (DNS Leaks).
- Конфликты IP-адресации, если домашняя сеть сотрудника совпадает с офисной подсетью (например,
192.168.1.0/24).
1. Принцип раздельного туннелирования (Split vs Full Tunneling)
- Full Tunneling: В конфигурации клиента указано
AllowedIPs = 0.0.0.0/0, ::/0. Абсолютно весь трафик и DNS направляются в туннель. - Split Tunneling: В конфигурации клиента явно перечислены только корпоративные подсети:
AllowedIPs = 10.0.0.0/8, 172.16.0.0/12, 192.168.10.0/24. Весь интернет-трафик идет напрямую через домашнего провайдера.
2. Конфигурация сервера WireGuard (/etc/wireguard/wg0.conf)
[Interface]
Address = 10.200.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIV_KEY
# Включение NAT только для внутренних корпоративных сетей:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.200.0.0/24 -d 10.0.0.0/8 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.200.0.0/24 -d 10.0.0.0/8 -j MASQUERADE
# Клиент 1 (Инженер)
[Peer]
PublicKey = CLIENT1_PUB_KEY
AllowedIPs = 10.200.0.2/323. Конфигурация клиентского профиля со Split Tunneling
[Interface]
PrivateKey = CLIENT1_PRIV_KEY
Address = 10.200.0.2/32
# Корпоративный DNS-сервер (будет использоваться только для VPN):
DNS = 10.10.0.5
[Peer]
PublicKey = SERVER_PUB_KEY
Endpoint = vpn.company.com:51820
# МАРШРУТИЗИРУЮТСЯ ТОЛЬКО ОФИСНЫЕ РЕСУРСЫ:
AllowedIPs = 10.200.0.0/24, 10.10.0.0/16, 172.20.0.0/16
PersistentKeepalive = 254. Защита от пересечения одинаковых подсетей (Overlapping Subnets)
Если корпоративная сеть использует популярную подсеть 192.168.1.0/24, переведите офис на адресацию из пула 10.x.x.x или используйте сетевой 1:1 NETMAP транслятор на VPN-шлюзе:
iptables -t nat -A PREROUTING -i wg0 -d 10.250.1.0/24 -j NETMAP --to 192.168.1.0/24 Частые вопросы (FAQ)
Как при Split Tunneling заставить резолвиться внутренние домены company.local?
В клиентских приложениях WireGuard для Windows/macOS/Linux параметр DNS = 10.10.0.5 подставляет DNS-сервер для всей системы либо использует Split-DNS (в связке со сгенерированными доменами в systemd-resolved).
Почему при Split Tunneling все равно не открываются локальные домашние устройства?
Если в AllowedIPs случайно добавлен диапазон, включающий домашнюю сеть (например, 192.168.0.0/16), WireGuard перехватывает трафик локального интерфейса. Указывайте более точные префиксы (/24).
Безопасен ли Split Tunneling для корпоративной безопасности?
Split Tunneling несет риск: если компьютер сотрудника заражен, злоумышленник может использовать его как шлюз (Pivot Point) для проникновения в офисную сеть. Для минимизации рисков настраивают строгие правила Firewall на VPN-сервере.
Зачем нужен PersistentKeepalive = 25 в конфигурации клиента?
Поскольку клиент обычно находится за домашним NAT/роутером, исходящие UDP-сессии закрываются через 30-60 секунд неактивности. Keepalive пакет каждые 25 секунд удерживает трансляцию портов в таблице NAT роутера открытой.