Безопасность
Split Tunneling
Режим VPN-клиента, при котором часть трафика идёт через VPN-туннель, а часть — напрямую через сеть оператора. Используется для производительности и доступа к локальным сервисам.
Определение
Split Tunneling — это конфигурация VPN, в которой не весь трафик устройства идёт через туннель: часть трафика (по домену, IP, приложению или их комбинации) направляется напрямую через сеть оператора, минуя VPN. Это противоположность «full-tunnel»: full = всё через VPN, split = часть через VPN.
Реализуется на уровне routing table (по IP/подсетям) или на уровне OS API (по приложениям). В обоих случаях VPN-клиент перехватывает решение о маршрутизации до того, как пакет попадает на дефолтный gateway.
Зачем нужен
Три основных сценария split tunneling в условиях РФ-сетей 2026.
- Доступ к Госуслугам, СБП, российским банкам через прямое соединение, всё остальное — через VPN. Многие зарубежные VPN при подключении блокируют доступ к gosuslugi.ru (антифрод): сайт видит иностранный IP и просит SMS-подтверждение каждый раз. Split tunneling позволяет ходить на gosuslugi.ru напрямую, а YouTube — через VPN.
- Локальная сеть. Доступ к домашнему NAS, принтеру, IoT-устройствам напрямую, а интернет — через VPN.
- Производительность. Видеостриминг (YouTube CDN) через VPN, торренты — напрямую. Или наоборот.
В корпоративной среде split tunneling используется по-другому: корпоративные ресурсы через VPN, всё остальное — напрямую. Это снижает нагрузку на корпоративный VPN-gateway.
Виды реализации
Технически split tunneling делится на три категории.
- Routing-based (по IP/CIDR). Клиент добавляет в routing table только подсети, которые должны идти через VPN; остальные — через дефолтный gateway. Самый универсальный вариант, работает на любом протоколе. WireGuard
AllowedIPs = 1.0.0.0/8, 2.0.0.0/8, ...— это и есть routing split tunneling. - App-based. OS перехватывает трафик по PID процесса и направляет в туннель или вне. На Android —
VpnService.addAllowedApplication() / addDisallowedApplication(). На Windows — через WFP filters или модификацию routing table per process (сложно). На Linux — черезcgroups+iptables -m owner. - Domain-based. Туннель используется только для определённых доменов. Реализация — через DNS-сплит: некоторые домены резолвятся в IP туннеля, другие — в реальные IP. Менее надёжно, легко обходится HSTS.
WireGuard и split tunneling
WireGuard поддерживает routing-based split tunneling «из коробки» через параметр AllowedIPs. Конкретно:
[Peer]
AllowedIPs = 10.0.0.0/24, 192.168.100.0/24
— только эти две подсети идут через туннель, всё остальное — напрямую. Установка AllowedIPs = 0.0.0.0/0 даёт full-tunnel. Это очень удобный механизм: split-tunneling-конфиг — это просто список CIDR’ов.
OpenVPN тоже умеет split tunneling через push "route 10.0.0.0 255.255.255.0" и --route-nopull на клиенте. Менее декларативно.
Split tunneling и кибербезопасность
Split tunneling — это компромисс между производительностью и поверхностью атаки. Риски:
- Прямой трафик идёт через сеть оператора без VPN. Если в split tunneling попадает HTTP без TLS — оператор/ТСПУ видит content.
- DNS-leak. Если DNS не настроен правильно, запросы могут идти через ISP-резолвер, что выдаёт реальный IP пользователя сервисам, которые «должны» быть через VPN.
- Identification через cross-correlation. Сервис видит, что один и тот же пользователь приходит и с реального IP, и с VPN-IP — связь устанавливается.
В сценариях threat model «доступ к контенту в РФ» split tunneling приемлем; в сценариях «полная приватность от провайдера» — нет.
Реализация в коммерческих VPN
Большинство VPN-провайдеров поддерживают split tunneling в Windows/Android, реже на iOS (ограничения NetworkExtension API).
- Mullvad — app-based на всех платформах кроме iOS.
- Proton VPN — app-based + IP-based.
- NordVPN, ExpressVPN, Surfshark — app-based на десктопе и Android.
- AmneziaVPN — позволяет настроить через
AllowedIPsнапрямую в конфиге.
iOS из-за ограничений системы предоставляет split tunneling только через Per-App VPN profiles, требующих MDM. В user-facing VPN-приложениях на iOS split tunneling обычно отсутствует.
Источники
- WireGuard documentation — секция
AllowedIPssemantics. - Android Developer Guide —
VpnService.addAllowedApplication(). - NIST SP 800-77 — guidance on VPN deployment.
Связанные термины
- Kill Switch — обратная функция.
- WireGuard — родная поддержка через AllowedIPs.
- OpenVPN — split tunneling через push route.
- MTU — настройка маршрутизации.