Народный

Безопасность

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 — секция AllowedIPs semantics.
  • Android Developer Guide — VpnService.addAllowedApplication().
  • NIST SP 800-77 — guidance on VPN deployment.

Связанные термины

  • Kill Switch — обратная функция.
  • WireGuard — родная поддержка через AllowedIPs.
  • OpenVPN — split tunneling через push route.
  • MTU — настройка маршрутизации.