Как настроить VPN только для отдельных сайтов: полное руководство

Узнайте, как направить через VPN только нужные сайты, оставив остальной трафик обычным. Способы для OpenVPN, WireGuard, роутеров и браузеров, а также как получить списки IP-адресов.

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

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

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

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

Основные принципы маршрутизации: IP-адреса и подсети

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

IP-адреса группируются в подсети, которые обозначаются с помощью CIDR-нотации. Например, запись 142.250.0.0/15 означает диапазон адресов от 142.250.0.0 до 142.251.255.255. Чем меньше число после косой черты, тем больше адресов входит в подсеть. Так, /32 — это один конкретный адрес, /24 — 256 адресов, а /0 — все возможные адреса.

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

Настройка OpenVPN для выборочной маршрутизации

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

На стороне клиента в файле конфигурации (например, client.ovpn) необходимо добавить директиву route-nopull. Она запрещает клиенту принимать маршруты, переданные сервером, и позволяет задать свои собственные. После этого нужно перечислить нужные подсети с помощью директивы route. Например:

route-nopull
route 87.240.128.0 255.255.192.0
route 95.213.0.0 255.255.192.0

Эти строки направят через VPN трафик к подсетям ВКонтакте. Важно, чтобы маска подсети была указана в десятичном формате, а не в CIDR.

На стороне сервера можно использовать директиву push "route ...", чтобы передавать маршруты клиентам. Однако если клиент использует route-nopull, эти маршруты будут проигнорированы. Поэтому обычно проще настраивать маршруты на клиенте, особенно если сервер используется несколькими пользователями с разными потребностями.

Одна из частых проблем — после добавления route-nopull перестаёт работать DNS. Это происходит потому, что сервер также передаёт настройки DNS через push "dhcp-option DNS ...". Чтобы решить проблему, нужно вручную указать DNS-серверы в конфигурации клиента или в настройках операционной системы.

WireGuard: простой способ маршрутизации по IP

WireGuard — современный VPN-протокол, который отличается простотой настройки и высокой производительностью. В конфигурационном файле WireGuard есть параметр AllowedIPs, который определяет, какие адреса должны идти через туннель.

По умолчанию в конфиге часто указано AllowedIPs = 0.0.0.0/0, что означает весь трафик. Чтобы направить через VPN только определённые сайты, нужно заменить это значение на список нужных подсетей, разделённых запятыми. Например:

AllowedIPs = 142.250.0.0/15, 172.217.0.0/16

Это направит через туннель трафик к серверам Google, включая YouTube. Все остальные адреса будут обрабатываться обычным способом.

WireGuard удобен тем, что изменения в конфигурации применяются мгновенно после перезапуска интерфейса. Можно создать несколько конфигурационных файлов для разных сценариев: один для YouTube, другой для Discord, третий для полного туннеля. Переключение между ними занимает несколько секунд.

Однако у WireGuard есть ограничение: он не умеет маршрутизировать по доменным именам, только по IP-адресам. Это значит, что если сайт использует динамические IP или CDN с множеством адресов, придётся вручную отслеживать изменения.

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

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

Например, в роутерах MikroTik можно создать список адресов (Address List) и добавить правила, которые направляют трафик к этим адресам через VPN-туннель. Это удобно, когда нужно, чтобы и компьютер, и телевизор, и смартфоны использовали VPN только для определённых сервисов.

Настройка на роутере обычно включает следующие шаги:

  1. Создать VPN-подключение (например, WireGuard или OpenVPN).
  2. Определить список IP-адресов или подсетей, которые должны идти через VPN.
  3. Добавить правило маршрутизации, которое отправляет трафик к этим адресам через VPN-интерфейс.

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

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

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

Самый простой способ — использовать команду nslookup или host в командной строке. Например, nslookup youtube.com покажет IP-адреса, которые использует сайт. Однако крупные сервисы часто используют CDN, и адреса могут меняться в зависимости от региона.

Более точный способ — использовать сервисы whois. Например, можно узнать IP-адрес сайта, а затем через whois определить, какая организация владеет подсетью, и получить все её диапазоны. Это особенно полезно для сервисов, которые используют собственные серверы, таких как VK или Mail.ru.

Для браузеров существует расширение IPvFoo, которое показывает все домены и IP-адреса, к которым обращается сайт при загрузке. Это помогает выявить все подсети, используемые сервисом, включая те, что отвечают за видео, изображения или API.

Ещё один способ — использовать инструменты разработчика в браузере. Например, для Discord можно открыть консоль (F12) и найти сообщения вида RTC connected to media server: IP:port. Это покажет IP-адреса голосовых серверов, которые не видны в обычном списке запросов.

Готовые списки подсетей для популярных сервисов

Для некоторых популярных сервисов уже существуют готовые списки подсетей, которые можно использовать в настройках VPN. Например, для Instagram и Facebook часто используют следующие диапазоны:

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

Для YouTube можно использовать подсети Google, например:

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

Для Discord списки сложнее, так как сервис использует как собственные серверы, так и инфраструктуру Google и Cloudflare. В таких случаях приходится включать большие подсети, что может привести к тому, что через VPN пойдёт и другой трафик, связанный с этими хостингами.

Важно помнить, что эти списки могут устаревать, поэтому перед использованием стоит проверить актуальность адресов.

Ограничения и подводные камни

Выборочная маршрутизация имеет свои ограничения. Главное из них — невозможность маршрутизации по доменным именам в большинстве VPN-клиентов. Если сайт использует CDN, его IP-адреса могут меняться, и список придётся обновлять вручную.

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

Также стоит учитывать, что некоторые сервисы используют разные IP-адреса для разных функций. Например, YouTube может загружать видео с серверов googlevideo.com, которые имеют отдельные подсети. Если не включить их в список, видео будет загружаться медленно или не будет работать вовсе.

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

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

Начните с малого: выберите один сайт, который хотите открывать через VPN, и соберите его IP-адреса. Проверьте, работает ли маршрутизация, прежде чем добавлять другие сервисы.

Используйте несколько конфигурационных файлов для разных сценариев. Например, один для YouTube, другой для Discord, третий для полного туннеля. Это позволит быстро переключаться между режимами без редактирования конфигурации.

Если вы используете OpenVPN, обратите внимание на директиву route-nopull. Она отключает все маршруты, переданные сервером, поэтому убедитесь, что вы добавили все необходимые маршруты вручную, включая маршрут к VPN-серверу, иначе соединение может не установиться.

Для WireGuard проверьте, что параметр AllowedIPs не содержит 0.0.0.0/0, если вы хотите ограничить трафик. Также убедитесь, что DNS-серверы, указанные в конфигурации, доступны через VPN, иначе разрешение имён может не работать.

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

Альтернативные подходы: прокси и PAC-файлы

Вместо VPN можно использовать прокси-серверы или PAC-файлы для выборочного доступа к сайтам. PAC-файл — это JavaScript-скрипт, который браузер использует для определения, через какой прокси отправлять запросы. Он позволяет указать список доменов, для которых нужно использовать прокси, а остальной трафик оставить прямым.

Этот подход проще в настройке, чем VPN, и не требует установки дополнительного программного обеспечения. Однако он работает только в браузерах и не влияет на другие приложения. Кроме того, PAC-файлы могут быть неэффективны, если прокси-сервер недоступен или если браузер неправильно обрабатывает скрипт.

Ещё один вариант — использовать SSH-туннель с динамической маршрутизацией (SOCKS-прокси). Это позволяет направлять через туннель только те приложения, которые настроены на использование прокси. Однако настройка сложнее, и не все приложения поддерживают SOCKS.

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

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

Можно ли настроить VPN только для одного сайта, не затрагивая остальной трафик?

Да, это возможно. Для этого нужно указать в настройках VPN-клиента IP-адреса или подсети, которые использует сайт. В OpenVPN используется директива route с route-nopull, в WireGuard — параметр AllowedIPs. Остальной трафик будет идти обычным путём.

Почему после настройки выборочной маршрутизации не работает DNS?

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

Как узнать IP-адреса сайта для настройки VPN?

Можно использовать команды nslookup или host, сервисы whois, расширение IPvFoo для браузера или инструменты разработчика. Для сервисов с CDN лучше собирать все подсети, которые использует сайт, включая те, что отвечают за видео, изображения и API.

Что делать, если сайт использует CDN и IP-адреса постоянно меняются?

В этом случае нужно регулярно обновлять список подсетей. Можно автоматизировать процесс с помощью скриптов, которые получают актуальные диапазоны через whois или API. Также можно использовать прокси-серверы с PAC-файлами, которые маршрутизируют по доменам, а не по IP.

Можно ли настроить выборочную маршрутизацию на роутере?

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

Какие ограничения у выборочной маршрутизации по IP?

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

Чем отличается выборочная маршрутизация от использования прокси?

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