Как завернуть трафик конкретного приложения через VPN в Windows

Системный администратор IT и автоматизация бизнеса
← На главную

Часто перед пользователями и системными администраторами встает задача: обеспечить работу конкретной программы (например, TeamViewer, AnyDesk или браузера) через защищенное VPN-соединение, оставив при этом остальной трафик системы (почту, мессенджеры, локальные ресурсы) через обычный интернет-канал. Эта технология называется Split Tunneling (раздельное туннелирование). Рассмотрим подробно, как реализовать эту задачу различными способами — от простых программных решений до сложных скриптов.

Способ 1: Использование VPN-клиентов с функцией Split Tunneling

Самый простой и доступный способ для обычного пользователя — это использование готовых VPN-решений, которые имеют встроенную функцию разделения трафика. Рассмотрим этот процесс на примере программы Windscribe, которая упоминалась в обсуждении.

Для настройки выполним следующие шаги:

  1. Запустим клиент VPN и перейдем в настройки (Settings).
  2. Найдем раздел Connection и пункт Split Tunneling.
  3. Переключим режим в состояние Inclusive (Включить). Это означает, что только выбранные приложения будут использовать VPN.
  4. В список приложений добавим все исполняемые файлы нужной программы. Например, для TeamViewer нужно добавить все файлы .exe из его программной папки.
  5. После включения VPN только указанные процессы будут выходить в сеть под другим IP-адресом.

Способ 2: Использование связки OpenVPN и 3proxy (SOCKS5)

Разберем более продвинутый метод, который позволяет превратить любой VPN в SOCKS-прокси, к которому можно подключить конкретное приложение. Это решение идеально подходит, если ваше приложение поддерживает настройки прокси или если вы используете проксификатор.

Для реализации нам понадобится клиент OpenVPN и небольшая утилита 3proxy. Проанализируем логику настройки конфигурационного файла .ovpn. Нам нужно запретить VPN-клиенту перехватывать весь системный трафик:


route-nopull 
route 0.0.0.0 0.0.0.0 vpn_gateway 
pull-filter ignore "dhcp-option DNS"
script-security 2 
up 'c:\path\to\up.cmd' 
down 'c:\path\to\down.cmd'

Разберем, что делают эти команды:

Текст скрипта up.cmd для запуска прокси-сервера может выглядеть так:


@echo off
echo auth none > 3proxy-openvpn.conf
echo internal 127.0.0.1 >> 3proxy-openvpn.conf
echo external %4 >> 3proxy-openvpn.conf
echo socks >> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf

После запуска такого соединения у вас на локальном компьютере по адресу 127.0.0.1:1080 появится SOCKS5 прокси. Теперь в настройках вашего приложения (например, в том же TeamViewer или Telegram) достаточно указать этот прокси-сервер, и трафик пойдет через VPN-туннель.

Способ 3: Использование специализированных драйверов (WireSock)

Если вы используете протокол WireGuard, то существует отличное бесплатное решение под названием WireSock. Проанализируем его преимущество: оно работает на уровне драйвера и позволяет фильтровать трафик по именам приложений прямо в конфиге.

В обычный конфигурационный файл WireGuard добавляется всего одна строка в секцию [Interface]:

AllowedApps = TeamViewer, chrome

После этого драйвер будет автоматически перехватывать пакеты только от указанных процессов. Это одно из самых производительных и стабильных решений на сегодняшний день, не требующее запуска лишних прокси-серверов.

Способ 4: Настройка статических маршрутов (Routing)

Рассмотрим ситуацию, когда приложение обращается к конкретным IP-адресам или подсетям. В этом случае мы можем обойтись без сложного ПО, настроив таблицу маршрутизации Windows вручную через командную строку.

Выясним IP-адрес шлюза вашего VPN-соединения (допустим, это 192.168.1.14) и целевую сеть приложения (например, 174.14.8.0). Используем команду route:


route add -p 174.14.8.0 mask 255.255.255.0 192.168.1.14

Разберем параметры команды:

Важно: этот способ будет работать только в том случае, если вы знаете точные IP-адреса серверов, с которыми работает программа. Для облачных сервисов с динамическими IP этот метод малоэффективен.

Способ 5: Современные графические проксификаторы (Nekoray / Proxifier)

Для тех, кто предпочитает графический интерфейс и гибкость, разберем использование программ-проксификаторов. Программы типа Nekoray или Proxifier позволяют создавать правила на лету.

Посмотрим, как это работает в режиме TUN:

  1. В программе включается виртуальный сетевой интерфейс (TUN).
  2. В настройках маршрутизации выбирается режим "Whitelist" или "Blacklist".
  3. Вы просто ставите галочку напротив TeamViewer.exe, и программа сама заботится о том, чтобы перенаправить его трафик в выбранный туннель (VLESS, Shadowsocks или WireGuard).

Это решение позволяет также избежать утечек DNS (DNS Leak). Проанализируем этот момент: часто приложение отправляет запрос на определение IP-адреса сайта через системный DNS провайдера, что позволяет отследить вашу активность. Использование Nekoray позволяет принудительно отправлять DNS-запросы через удаленный VPN-сервер.

Резюме и рекомендации

Мы рассмотрели несколько подходов к решению задачи. Выбор конкретного метода зависит от ваших навыков и требований:

Помните, что при использовании VPN важно следить за тем, чтобы не возникало конфликтов маршрутов, особенно если вы используете несколько сетевых интерфейсов одновременно.

← На главную