Зачем направлять только часть трафика через VPN
Многие пользователи включают VPN глобально, но это не всегда удобно. Постоянно активный туннель может снижать скорость, мешать работе с локальными сервисами и приводить к нежелательным последствиям, например, когда торрент-клиент начинает качать через зарубежный сервер и провайдер получает жалобы на раздачу контента. Частичная маршрутизация решает эти проблемы: вы выбираете, какие сайты, приложения или IP-адреса пойдут через VPN, а остальной трафик останется прямым.
Такой подход особенно полезен, когда нужно одновременно пользоваться заблокированными сервисами и ресурсами, которые плохо работают через VPN, или играть в онлайн-игры с минимальным пингом. Вместо того чтобы постоянно включать и выключать VPN, вы настраиваете правила один раз и забываете о ручном переключении.
Как работает маршрутизация VPN: таблицы, шлюзы и метрики
Когда вы подключаетесь к VPN, операционная система создаёт виртуальный сетевой адаптер (TUN или TAP) и добавляет новые записи в таблицу маршрутизации. По умолчанию большинство клиентов добавляют маршрут по умолчанию 0.0.0.0/0, который направляет весь трафик в туннель. Этот маршрут получает более низкую метрику, чем обычный, поэтому пакеты уходят на виртуальный интерфейс, шифруются и отправляются на VPN-сервер.
Метрика — это числовой параметр, определяющий приоритет маршрута: чем меньше число, тем предпочтительнее путь. Если VPN-клиент не установит правильную метрику, часть трафика может уйти напрямую к провайдеру, что приведёт к утечке. Также добавляется маршрут до самого VPN-сервера через обычный интерфейс, иначе соединение не установится.
Для частичной маршрутизации вы можете либо вручную добавить статические маршруты для нужных подсетей, либо использовать встроенные функции раздельного туннелирования, которые делают то же самое автоматически.
Full-tunnel и split tunneling: сравнение режимов
Существует два основных режима маршрутизации трафика в VPN.
Full-tunnel (глобальный туннель) — весь трафик устройства идёт через VPN. Плюсы: максимальная приватность, скрытие всей активности от провайдера. Минусы: скорость может быть ниже, возможны проблемы с локальными сервисами (принтер, NAS), а также с сервисами, которые определяют ваше местоположение.
Split tunneling (раздельное туннелирование) — только часть трафика идёт через VPN, остальное — напрямую. Плюсы: высокая скорость для локального контента, экономия трафика, одновременный доступ к локальным ресурсам. Минусы: риск утечки, если неправильно настроены исключения.
Раздельное туннелирование может быть реализовано на уровне приложений (выбираете, какие программы используют VPN), на уровне IP-адресов или доменов. Многие современные VPN-клиенты, такие как AdGuard VPN, Windscribe, а также решения на базе WireGuard и VLESS, поддерживают этот режим.
Настройка частичной маршрутизации в WireGuard: AllowedIPs
WireGuard — популярный протокол, который позволяет гибко управлять маршрутизацией через параметр AllowedIPs в конфигурационном файле. По умолчанию там стоит 0.0.0.0/0, что означает «весь трафик через туннель». Вы можете заменить это значение на список конкретных IP-адресов или подсетей, например:
AllowedIPs = 8.8.8.8, 1.1.1.1Это направит через туннель только запросы к DNS-серверам Google и Cloudflare. Для нескольких адресов используйте запятую. Маска подсети указывается через слэш: /32 — конкретный IP, /16 — подсеть из 65536 адресов, /0 — все адреса.
Удобный подход — создать несколько конфигурационных файлов: один с полным туннелем, другой с маршрутами только для нужного сервиса (например, YouTube). Переключаясь между ними, вы быстро меняете режим работы без ручного редактирования.
Маршрутизация по IP-адресам и доменам: что выбрать
Маршрутизация по IP-адресам — самый распространённый способ. Вы добавляете в список подсети, принадлежащие нужному сервису, и весь трафик к ним идёт через VPN. Однако у этого метода есть нюансы: IP-адреса могут меняться, особенно у CDN-сервисов, и вы рискуете захватить лишний трафик, если подсеть используется несколькими сервисами.
Маршрутизация по доменам работает на уровне DNS: VPN-клиент или специальный DNS-сервер сопоставляет домен с IP-адресом и направляет только нужные запросы. Это удобно, когда сервис использует множество IP-адресов, которые часто меняются. Например, проект «АнтиЗапрет» использует собственный DNS-резолвер, который отдаёт клиенту адреса из внутренней подсети, и маршрутизирует только заблокированные домены.
В WireGuard маршрутизация по доменам невозможна, но в VLESS и некоторых других протоколах она поддерживается. Если вам нужна маршрутизация по доменам, выбирайте соответствующий VPN-клиент или используйте прокси-файл PAC.
Как найти IP-адреса нужных сервисов: практические инструменты
Чтобы настроить частичную маршрутизацию, вам нужно знать IP-адреса или подсети, которые использует целевой сервис. Вот три проверенных способа.
1. Расширение IPvFoo для браузера. Показывает все домены и IP-адреса, к которым обращается сайт. Включите VPN полностью, откройте нужный сайт (например, YouTube) и посмотрите, с каких адресов идёт загрузка видео. Затем проверьте подсеть через whois-сервис (например, 2ip.ru) и добавьте её в список маршрутизации.
2. Инструменты разработчика в браузере. Для сервисов, использующих UDP (например, голосовые каналы Discord), откройте консоль (F12) и введите фильтр RTC connected to media server:. Вы увидите IP-адреса медиасерверов, которые можно добавить в маршруты.
3. Просмотр сетевых подключений. На Windows используйте команду netstat -aon, чтобы увидеть все активные соединения и связать их с PID процесса. Или используйте Wireshark для глубокого анализа трафика, хотя это более сложный инструмент.
Маршрутизация на уровне роутера: Mikrotik, OpenWRT и встроенные функции
Если вы хотите, чтобы частичная маршрутизация работала для всех устройств в домашней сети, настройте её на роутере. Это особенно удобно, если VPN-клиент на каждом устройстве настраивать не хочется.
На роутерах Mikrotik можно создать два соединения: основное и VPN, а затем с помощью правил маршрутизации (policy-based routing) направлять трафик для определённых IP-адресов или доменов в VPN-туннель. Аналогично работает OpenWRT — прошивка с открытым исходным кодом для многих роутеров.
Многие современные роутеры (например, Xiaomi, Redmi) имеют встроенную функцию VPN по списку адресов. Вы указываете домены или IP-адреса, и роутер автоматически направляет их через VPN. Однако стоит учитывать, что такая маршрутизация часто работает на основе IP-адресов, которые резолвятся при запуске, поэтому при смене адресов у домена могут возникнуть проблемы.
Готовые решения для частичной маршрутизации: сервисы и приложения
Если не хочется возиться с ручной настройкой, можно воспользоваться готовыми VPN-сервисами с поддержкой split tunneling. Например, AdGuard VPN предлагает раздельное туннелирование для приложений и белые/чёрные списки сайтов, а также собственные DNS-серверы. Windscribe также поддерживает раздельное туннелирование на мобильных клиентах и имеет функцию GPS Spoofing.
Для обхода блокировок можно использовать расширения браузера, например «Обход блокировок Рунета», которые автоматически направляют заблокированные сайты через прокси. Также существуют проекты типа «АнтиЗапрет», которые предоставляют готовые списки заблокированных IP-адресов и доменов, а также VPN-клиенты с нестандартной маршрутизацией на основе DNS.
При выборе сервиса обращайте внимание на наличие kill switch, поддержку IPv6 и возможность настройки исключений для локальной сети.
Как избежать утечек трафика и DNS-запросов
Частичная маршрутизация может привести к утечкам, если настроена неправильно. Самые распространённые проблемы:
- Утечка DNS-запросов. Даже если IP-трафик идёт через VPN, DNS-запросы могут уходить напрямую провайдеру. Используйте DNS-серверы внутри VPN или настройте систему так, чтобы все DNS-запросы шли через туннель.
- Утечка IPv6. Многие VPN не поддерживают IPv6, и трафик IPv6 может уходить мимо туннеля. Отключите IPv6 на устройстве или используйте VPN с поддержкой IPv6.
- Неправильные метрики маршрутов. Если маршрут по умолчанию не добавлен или имеет более высокую метрику, часть трафика пойдёт напрямую. Проверяйте таблицу маршрутизации после подключения.
Для проверки утечек используйте сервисы ipleak.net или dnsleaktest.com. Если они показывают ваш реальный IP или DNS-сервер провайдера, значит, маршрутизация настроена неверно. Включите Kill Switch — функцию, которая блокирует интернет при обрыве VPN, чтобы предотвратить утечки.
Практические примеры: настройка для YouTube, Discord и других сервисов
Рассмотрим, как настроить частичную маршрутизацию для популярных сервисов.
YouTube. Список подсетей Google, которые часто используются для YouTube, включает 74.125.0.0/16, 172.217.0.0/16, 173.194.0.0/16, 142.250.0.0/15, 64.233.160.0/19, 108.177.0.0/17, 216.58.192.0/19, 209.85.128.0/17. Однако для каждого региона адреса могут отличаться, поэтому лучше использовать IPvFoo для определения актуальных подсетей.
Discord. Для голосовых каналов Discord используйте подсети 162.158.0.0/15 (Cloudflare) и 66.22.196.0/22, 66.22.243.0/24 и другие из диапазона 66.22.0.0/16. Учтите, что часть трафика может идти через Google Cloud, и тогда придётся добавить и его подсети.
Instagram и Facebook. Список подсетей Meta включает 31.13.24.0/21, 31.13.64.0/19, 157.240.0.0/16, 173.252.64.0/18 и другие.
Вносите эти адреса в конфигурацию WireGuard, в Address List роутера или в настройки VPN-клиента с поддержкой split tunneling.
Вопросы и ответы
Можно ли настроить VPN так, чтобы он включался автоматически только для заблокированных сайтов?
Да, это возможно. Один из способов — использовать файл proxy.pac, который автоматически определяет, какие сайты должны идти через прокси, а какие напрямую. Такой файл можно сгенерировать на основе списка заблокированных IP-адресов и доменов, например, из проекта «АнтиЗапрет». Другой вариант — настроить маршрутизацию на роутере с использованием списков доменов, которые обновляются автоматически. Также существуют VPN-сервисы с функцией автоматического включения для определённых приложений или сайтов.
Что такое split tunneling и чем он отличается от обычного VPN?
Split tunneling (раздельное туннелирование) — это режим, при котором только часть трафика направляется через VPN, а остальной идёт напрямую к провайдеру. В отличие от обычного VPN (full-tunnel), где весь трафик шифруется и идёт через туннель, split tunneling позволяет повысить скорость для локальных сервисов, снизить нагрузку на VPN-сервер и избежать проблем с доступом к локальной сети. Настройка может быть выполнена на уровне приложений, IP-адресов или доменов.
Как проверить, что мой трафик действительно идёт через VPN, а не утекает?
Используйте сервисы ipleak.net или dnsleaktest.com. Они показывают ваш IP-адрес и DNS-серверы. Если вы подключены к VPN, IP должен принадлежать VPN-серверу, а DNS-серверы — также должны быть в зоне VPN. Если вы видите IP вашего провайдера или его DNS, значит, есть утечка. Также можно проверить таблицу маршрутизации: на Windows команда route print, на Linux/macOS — ip route. Активный маршрут по умолчанию должен вести на виртуальный адаптер VPN.
Почему при подключении к VPN я теряю доступ к локальной сети (принтеру, NAS)?
Это происходит потому, что маршрут по умолчанию 0.0.0.0/0 направляет весь трафик в туннель, включая локальные адреса. Чтобы исправить, добавьте исключения для локальных подсетей, например 192.168.0.0/24. В большинстве VPN-клиентов есть опция «Разрешить локальный доступ» или «Исключить локальную сеть», которая автоматически добавляет такие маршруты. Если такой опции нет, можно вручную добавить статический маршрут для локальной сети через обычный интерфейс.
Какие VPN-сервисы поддерживают частичную маршрутизацию?
Многие современные VPN-сервисы поддерживают split tunneling. Например, AdGuard VPN позволяет выбирать приложения, которые будут работать через VPN, а также настраивать белые и чёрные списки сайтов. Windscribe также имеет функцию раздельного туннелирования на мобильных устройствах. Для продвинутых пользователей подойдут WireGuard (настройка AllowedIPs) и VLESS с поддержкой маршрутизации по доменам. Также можно использовать роутеры с OpenWRT или Mikrotik для настройки частичной маршрутизации на уровне всей сети.
Что делать, если после настройки частичной маршрутизации некоторые сайты не открываются?
Проверьте, не попали ли адреса этих сайтов в список маршрутизации случайно. Если сайт использует CDN, его IP-адреса могут меняться, и часть из них может идти через VPN, а часть напрямую. Убедитесь, что вы добавили все подсети, которые использует сервис. Также проверьте DNS-запросы: возможно, они уходят напрямую провайдеру, и сайт определяет ваше реальное местоположение. Попробуйте временно отключить VPN и посмотреть, работает ли сайт напрямую. Если проблема сохраняется, обратитесь к документации вашего VPN-клиента или на форумы.