Маршрутизация через VPN: как направить только нужный трафик в туннель

Разбираемся, как настроить выборочную маршрутизацию через VPN: статические маршруты, AllowedIPs в WireGuard, списки IP-адресов и инструменты для их сбора. Полезно для обхода блокировок без потери скорости.

Зачем нужна выборочная маршрутизация через VPN

Когда VPN включён на роутере или устройстве, по умолчанию весь трафик уходит в туннель. Это удобно для полной анонимности, но часто создаёт проблемы: скорость падает, онлайн-игры получают высокий пинг, а некоторые локальные сервисы (например, онлайн-банки или стриминговые платформы) начинают работать некорректно из-за смены географического положения. Выборочная маршрутизация решает эту задачу: через VPN идут только те IP-адреса или домены, которые действительно нужны, а остальной трафик остаётся на обычном канале.

Такой подход особенно актуален в России, где часть сервисов (YouTube, Discord, Instagram) замедляется или блокируется. Вместо того чтобы включать и выключать VPN вручную, можно один раз настроить маршруты и пользоваться всеми ресурсами одновременно. Например, вы продолжаете играть в онлайн-игру с низким пингом, а видео на YouTube грузится через туннель без буферизации.

Важно понимать: маршрутизация через VPN — это не только про роутеры. Она работает на уровне операционной системы (Windows, Linux, Android), в клиентах WireGuard и VLESS, а также на сетевых устройствах вроде MikroTik. В каждом случае принцип похож: вы указываете, какие подсети или отдельные адреса должны отправляться в туннель, а какие — напрямую через шлюз провайдера.

Основы IP-адресации и CIDR-нотации

Чтобы правильно настроить маршрутизацию, нужно понимать, как работают IP-адреса и маски подсетей. Каждый IP-адрес (например, 142.250.0.0) может быть частью подсети, которая задаётся через CIDR-нотацию — адрес и число после слэша. Например, 142.250.0.0/16 означает, что в подсеть входят все адреса от 142.250.0.0 до 142.250.255.255. Число после слэша показывает, сколько бит в адресе фиксированы: /32 — это один конкретный адрес, /24 — 256 адресов, /16 — 65 536 адресов, а /0 — вообще все адреса.

В конфигурации WireGuard параметр AllowedIPs определяет, какие адреса должны идти через туннель. Если указать AllowedIPs = 0.0.0.0/0, весь трафик уйдёт в VPN. Если заменить на AllowedIPs = 8.8.8.8, 1.1.1.1, через туннель пойдут только запросы к DNS-серверам Google и Cloudflare. Можно перечислять несколько подсетей через запятую: AllowedIPs = 142.250.0.0/15, 173.194.0.0/16.

При настройке статических маршрутов на роутере (например, TP-Link) используется похожая логика: вы указываете адрес назначения, маску подсети и шлюз (обычно это IP-адрес VPN-интерфейса). Важно правильно указать маску: если вы хотите охватить весь диапазон сервиса, лучше использовать подсеть /16 или /15, а не отдельные /24, иначе часть адресов может остаться вне туннеля.

Настройка маршрутизации в WireGuard: AllowedIPs

WireGuard — один из самых популярных VPN-протоколов благодаря простоте и скорости. В конфигурационном файле клиента есть строка AllowedIPs, которая управляет маршрутизацией. По умолчанию в импортированных конфигах часто стоит 0.0.0.0/0, что заворачивает весь трафик. Чтобы сделать выборочную маршрутизацию, отредактируйте эту строку, перечислив нужные подсети через запятую.

Например, для YouTube можно использовать AllowedIPs = 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. Для Instagram и Facebook — AllowedIPs = 147.75.208.0/20, 185.89.216.0/22, 31.13.24.0/21, 31.13.64.0/19, 31.13.96.0/19, 45.64.40.0/22, 66.220.144.0/20, 69.63.176.0/20, 69.171.224.0/19, 74.119.76.0/22, 102.132.96.0/20, 103.4.96.0/22, 129.134.0.0/16, 157.240.0.0/16, 173.252.64.0/18, 179.60.192.0/22, 185.60.216.0/22, 87.245.208.97.

Удобный приём — создать несколько конфигурационных файлов WireGuard с разными AllowedIPs: один для YouTube, другой для Discord, третий для полного туннеля. Тогда можно быстро переключаться между профилями в зависимости от задачи. Однако помните: если вы используете VPN-клиент на роутере, изменение AllowedIPs в конфиге может потребовать перезагрузки туннеля.

Статические маршруты на роутере: пример TP-Link

На роутерах TP-Link (например, Archer AX5400) есть встроенная поддержка VPN-клиентов, включая WireGuard. Однако стандартный веб-интерфейс часто позволяет только включать VPN для конкретных устройств целиком, без тонкой настройки маршрутов. Чтобы добавить статические маршруты, приходится редактировать конфигурационный файл роутера или использовать командную строку, если она доступна.

В одном из примеров пользователь добавил маршруты для диапазонов IP-адресов YouTube, указав в качестве шлюза адрес VPN-сервера (например, 111.111.111.111). Формально маршруты выглядели правильно, но сервис работал нестабильно: видео грузилось с перебоями, а на телевизоре вообще не запускалось. Причина в том, что YouTube использует множество разных подсетей, и часть из них не была включена в маршруты. Кроме того, некоторые адреса могут меняться динамически.

Если ваш роутер не поддерживает гибкую настройку маршрутов, есть два пути: установить прошивку OpenWRT (если она доступна для модели) или использовать второй роутер, на котором поднят VPN. Второй вариант проще: вы подключаете нужные устройства к Wi-Fi сети второго роутера, и весь их трафик идёт через туннель, а остальные устройства остаются на основном роутере.

Маршрутизация на уровне роутера: MikroTik и OpenWRT

Для продвинутых пользователей роутеры на базе OpenWRT или MikroTik предоставляют гораздо больше возможностей. В MikroTik можно создать Address List с нужными подсетями и затем в правилах маршрутизации (Routing Rules) указать, что трафик к этим адресам должен идти через VPN-интерфейс. Это удобно, потому что список можно обновлять автоматически через скрипты.

OpenWRT также поддерживает настройку политик маршрутизации через пакеты вроде pbr (policy-based routing). Можно указать, что определённые IP-адреса или домены направляются в туннель, а остальные — через обычный шлюз. Однако настройка требует определённых знаний: нужно разбираться в таблицах маршрутизации, правилах iproute2 и конфигурации firewall.

Если вы не готовы к сложной настройке, можно использовать готовые решения, например, скрипты для автоматического обновления списков IP-адресов заблокированных сервисов. Такие скрипты периодически загружают актуальные подсети из открытых источников и обновляют Address List на роутере. Это особенно полезно для YouTube, чьи IP-адреса могут меняться.

Как собрать список IP-адресов для нужного сервиса

Чтобы настроить маршрутизацию, нужно знать, какие IP-адреса использует целевой сервис. Самый простой способ — расширение для браузера IPvFoo. Оно показывает все домены и IP-адреса, к которым обращается сайт при загрузке. Включите VPN полностью, откройте нужный сервис (например, YouTube) и посмотрите, с каких адресов идёт загрузка видео. Затем проверьте эти адреса через whois-сервис (например, 2ip.ru) и возьмите подсеть из поля CIDR.

Для сервисов, использующих UDP (например, голосовые каналы Discord), IPvFoo может не показать адреса. В этом случае используйте инструменты разработчика в браузере: откройте консоль (F12), введите фильтр RTC connected to media server: и зайдите в голосовой канал. Вы увидите IP-адреса медиасерверов, которые можно добавить в маршруты.

Третий способ — анализ сетевого трафика с помощью netstat -aon в Windows или Wireshark. Это более трудоёмко, но позволяет увидеть все подключения конкретного процесса. Найдите PID нужного приложения в диспетчере задач и отфильтруйте его соединения в netstat. Так вы получите полный список внешних IP-адресов, с которыми работает сервис.

Проблемы и ограничения маршрутизации по IP

Главная проблема маршрутизации по IP — неполнота списков. Крупные сервисы, такие как YouTube или Discord, используют множество подсетей, которые могут меняться. Если вы пропустите хотя бы одну подсеть, часть трафика пойдёт напрямую, и сервис может определить ваше реальное местоположение или работать нестабильно. Например, YouTube может отдавать видео с региональных кеширующих серверов, которые находятся в России, и тогда туннель не поможет.

Ещё одна сложность — динамические IP-адреса. Некоторые сервисы используют CDN-провайдеров (Cloudflare, Google Cloud), которые выделяют адреса из огромных диапазонов. Включение таких подсетей в маршруты может привести к тому, что через VPN пойдёт лишний трафик, не относящийся к целевому сервису. Например, в списке для Discord часто попадаются подсети Google и Cloudflare, которые используются и другими сайтами.

Также стоит учитывать, что маршрутизация по IP не решает проблему с DNS. Если DNS-запросы идут через обычный канал, сервис может получить ваш реальный IP через DNS-резолвер. Поэтому рекомендуется использовать DNS-серверы, которые не фильтруют и не подменяют адреса, либо настраивать DNS через VPN.

Альтернативы: маршрутизация по доменам и прокси

Маршрутизация по доменам удобнее, потому что не требует постоянного обновления списков IP. Однако WireGuard не поддерживает домены в AllowedIPs — только IP-адреса. Для доменной маршрутизации можно использовать протокол VLESS (например, в приложении NekoRay), который позволяет указывать домены в правилах. Это особенно полезно для YouTube: достаточно добавить googlevideo.com и youtube.com, и весь трафик к этим доменам пойдёт через туннель.

Ещё один вариант — использовать прокси-сервер (HTTP или SOCKS5) на компьютере или роутере. Вы поднимаете VPN-туннель на одном устройстве и настраиваете прокси, через который браузер или приложения отправляют запросы. Это позволяет гибко управлять тем, какие приложения используют VPN, но требует настройки на каждом устройстве.

Для роутеров с OpenWRT можно использовать пакет dnsmasq с настройкой ipset, чтобы автоматически добавлять IP-адреса доменов в список для маршрутизации. Это работает так: DNS-запросы к определённым доменам разрешаются, и полученные IP-адреса добавляются в ipset, который затем используется в правилах маршрутизации. Такой подход сочетает удобство доменов и эффективность IP-маршрутизации.

Практические советы и типичные ошибки

Начните с малого: выберите один сервис (например, YouTube) и настройте маршрутизацию только для него. Проверьте, что видео грузится без буферизации и ваш IP определяется как зарубежный. Затем постепенно добавляйте другие сервисы.

Не забывайте про DNS. Если вы используете VPN только для части трафика, DNS-запросы могут идти через обычный канал, и сервис увидит ваш реальный IP. Настройте DNS-серверы, которые не фильтруют (например, 8.8.8.8 или 1.1.1.1), или используйте DNS через VPN.

Типичная ошибка — указание слишком узких подсетей. Например, если вы добавите только 142.250.0.0/24, а YouTube использует 142.250.1.0/24, часть трафика не попадёт в туннель. Лучше использовать более широкие диапазоны, но следите, чтобы не захватить лишнее.

Если сервис работает нестабильно, проверьте, все ли подсети включены. Используйте IPvFoo или netstat, чтобы увидеть, к каким адресам идут обращения, и сравните с вашим списком. Возможно, придётся добавить новые подсети или обновить существующие.

Заключение: что выбрать для вашей сети

Выбор метода маршрутизации зависит от ваших задач и технических навыков. Если у вас роутер с поддержкой WireGuard и вы готовы редактировать конфиги, начните с AllowedIPs — это самый простой способ. Для более гибкого управления используйте роутер с OpenWRT или MikroTik, где можно настроить политики маршрутизации и автоматическое обновление списков.

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

В любом случае помните: маршрутизация через VPN — это компромисс между удобством и контролем. Чем точнее вы настроите списки, тем стабильнее будет работать сервис, но тем больше времени уйдёт на поддержку. Начните с готовых списков из интернета и адаптируйте их под свои нужды.

Вопросы и ответы

Что такое AllowedIPs в WireGuard и как он влияет на маршрутизацию?

AllowedIPs — это параметр в конфигурации WireGuard, который определяет, какие IP-адреса должны отправляться через VPN-туннель. Если указать 0.0.0.0/0, весь трафик пойдёт через VPN. Если перечислить конкретные подсети (например, 142.250.0.0/15), только трафик к этим адресам будет идти через туннель, а остальной — напрямую. Это позволяет настроить выборочную маршрутизацию без использования дополнительных инструментов.

Почему YouTube работает нестабильно при маршрутизации по IP?

YouTube использует множество IP-подсетей, которые могут меняться в зависимости от региона и провайдера. Если вы указали не все подсети, часть трафика пойдёт напрямую, и сервис может определить ваше реальное местоположение или использовать региональные кеширующие серверы. Кроме того, некоторые адреса могут быть динамическими. Рекомендуется использовать более широкие диапазоны (например, /16) и периодически обновлять список.

Можно ли маршрутизировать по доменам в WireGuard?

Нет, WireGuard работает только с IP-адресами. Для маршрутизации по доменам нужно использовать другие протоколы, например VLESS (в приложении NekoRay), или настраивать DNS-маршрутизацию на роутере с OpenWRT через ipset. В этом случае DNS-запросы к определённым доменам разрешаются, и полученные IP-адреса автоматически добавляются в правила маршрутизации.

Как собрать список IP-адресов для Discord, если IPvFoo не показывает голосовые серверы?

Для голосовых каналов Discord используйте инструменты разработчика в браузере: нажмите F12, перейдите в консоль и введите фильтр RTC connected to media server:. Затем зайдите в голосовой канал — вы увидите IP-адреса медиасерверов. Эти адреса можно добавить в маршруты. Также можно поискать готовые списки подсетей Discord в интернете.

Что делать, если роутер не поддерживает настройку статических маршрутов для VPN?

Если ваш роутер не позволяет гибко настраивать маршруты, есть несколько вариантов: установить прошивку OpenWRT (если она доступна), использовать второй роутер с VPN для нужных устройств, или настроить прокси-сервер на компьютере. Второй вариант проще: подключите устройства к Wi-Fi сети второго роутера, и весь их трафик пойдёт через VPN.

Влияет ли DNS на маршрутизацию через VPN?

Да, DNS может раскрыть ваш реальный IP, если запросы идут через обычный канал. Сервис может использовать DNS-резолвер для определения вашего местоположения. Чтобы избежать этого, настройте DNS-серверы, которые не фильтруют (например, 8.8.8.8 или 1.1.1.1), или используйте DNS через VPN. В некоторых роутерах можно настроить DNS-запросы через туннель.

Какие типичные ошибки при настройке маршрутизации через VPN?

Частые ошибки: указание слишком узких подсетей (например, /24 вместо /16), неполный список IP-адресов, игнорирование DNS, использование устаревших списков. Также важно правильно указать шлюз в статических маршрутах — обычно это IP-адрес VPN-интерфейса. Если сервис работает нестабильно, проверьте, все ли подсети включены, и обновите список.