Раздельное туннелирование в Streisand: маршруты для приложений и доменов
Разбираем, как в Streisand настроить маршрутизацию: какие приложения и домены направлять через туннель, а какие оставить в локальной сети, и как избежать утечек DNS.
Содержание
Что такое раздельное туннелирование и зачем оно нужно
Раздельное туннелирование (split tunneling) — это режим, при котором только часть трафика направляется через VPN-туннель, а остальной трафик идёт напрямую через локальную сеть. В Streisand это позволяет, например, открывать зарубежные сайты через туннель, а доступ к домашнему NAS или принтеру оставлять в локальной сети.
Без раздельного туннелирования весь трафик уходит в туннель, что может замедлять доступ к локальным ресурсам и создавать лишнюю нагрузку на VPN-сервер. Правильная настройка роутинга помогает сбалансировать скорость и безопасность.
Основные режимы маршрутизации в Streisand
Streisand использует несколько механизмов, в зависимости от выбранного протокола (WireGuard, OpenVPN, Shadowsocks и др.). Однако общие принципы роутинга схожи:
- Глобальный режим — весь трафик идёт через туннель. Подходит, если нужна полная анонимность или доступ к заблокированным ресурсам.
- Раздельный режим — трафик к определённым доменам или IP-адресам идёт через туннель, остальной — напрямую. Настраивается через правила маршрутизации.
- Режим исключений — весь трафик идёт через туннель, кроме указанных адресов, которые остаются в локальной сети.
Выбор режима зависит от ваших задач. Если вы хотите только обойти блокировки для конкретных сайтов, используйте раздельный режим с правилами для доменов.
Как добавить исключения для доменов и приложений
В Streisand исключения обычно задаются через конфигурационные файлы или интерфейс управления. Рассмотрим на примере WireGuard, так как он наиболее гибок.
- Откройте конфигурационный файл клиента (например,
wg0.conf). - Найдите секцию
[Peer]и параметрAllowedIPs. По умолчанию там может быть0.0.0.0/0— это глобальный режим. - Чтобы включить раздельное туннелирование, замените
0.0.0.0/0на список подсетей или IP-адресов, которые должны идти через туннель. Например:AllowedIPs = 1.2.3.4/32, 5.6.7.8/32. - Для доменов потребуется предварительно определить их IP-адреса (через DNS), так как WireGuard работает с IP, а не с доменами. Это неудобно, поэтому часто используют прокси-режимы (например, Shadowsocks с PAC-файлом).
Если вы используете OpenVPN, исключения задаются через директиву route и route-nopull. Например, чтобы не пускать в туннель подсеть 192.168.1.0/24, добавьте:
route 192.168.1.0 255.255.255.0 net_gatewayДля приложений можно использовать правила файрвола на клиенте, но это сложнее и требует прав администратора.
Проверка DNS: как избежать утечек
Одна из главных проблем раздельного туннелирования — утечка DNS-запросов. Если DNS-запросы уходят напрямую, ваш провайдер видит, какие сайты вы посещаете, даже если сам трафик идёт через туннель.
Чтобы проверить, не утекает ли DNS, выполните следующие шаги:
- Подключитесь к VPN с настроенным раздельным туннелированием.
- Откройте сайт, который идёт через туннель, например,
example.com. - Используйте онлайн-сервисы проверки утечек DNS (например, dnsleaktest.com). Если в результатах указан IP вашего провайдера, значит, DNS утекает.
Чтобы исправить утечку, убедитесь, что в конфигурации VPN указан DNS-сервер, который должен использоваться для всех доменов, даже тех, что идут напрямую. В WireGuard это делается через параметр DNS в секции [Interface]. Например:
DNS = 1.1.1.1В OpenVPN используйте директиву dhcp-option DNS.
Также важно, чтобы системные настройки DNS не переопределяли VPN-настройки. На Windows проверьте, что адаптер VPN имеет приоритет.
Как не сломать локальные сервисы
При настройке раздельного туннелирования часто возникает проблема: локальные сервисы (например, принтер, NAS, умный дом) перестают быть доступны. Это происходит, если их подсеть попадает в туннель.
Чтобы избежать этого, всегда добавляйте локальные подсети в исключения. Например, если ваша локальная сеть — 192.168.0.0/24, добавьте правило, чтобы этот трафик шёл напрямую.
В WireGuard это делается автоматически, если вы не включаете 0.0.0.0/0 в AllowedIPs. Но если вы используете глобальный режим, добавьте в конфигурацию клиента маршрут для локальной сети:
PostUp = ip route add 192.168.0.0/24 via 192.168.0.1 dev eth0В OpenVPN используйте route 192.168.0.0 255.255.255.0 net_gateway.
Также проверьте, что ваш VPN-сервер не блокирует локальные запросы. Некоторые серверы имеют настройки firewall, которые запрещают доступ к локальным сетям клиента.
Практические советы и ограничения
Раздельное туннелирование в Streisand имеет свои ограничения:
- Не все протоколы поддерживают гибкую маршрутизацию. Например, Shadowsocks обычно работает через прокси, и разделение настраивается на стороне клиента через PAC-файлы.
- При использовании доменных исключений помните, что IP-адреса могут меняться, и правила могут устареть.
- Некоторые приложения игнорируют системные маршруты и используют собственные настройки прокси. В этом случае раздельное туннелирование не сработает.
Перед изменением конфигурации всегда делайте резервную копию файлов. После внесения изменений перезапустите VPN-клиент и проверьте доступность как внешних, так и локальных ресурсов.
Если вы не уверены в настройках, начните с глобального режима и постепенно добавляйте исключения, тестируя каждое изменение.
Мини-чеклист
- Определите, какие домены и приложения должны идти через туннель, а какие — напрямую.
- Выберите режим маршрутизации: глобальный, раздельный или исключения.
- Настройте AllowedIPs или route-правила в конфигурации клиента.
- Укажите DNS-сервер для всех запросов, чтобы избежать утечек.
- Добавьте локальные подсети в исключения, чтобы не сломать доступ к принтеру или NAS.
- Проверьте утечки DNS и доступность локальных сервисов после изменений.
Частые ошибки
- Использование глобального режима без необходимости, что замедляет доступ к локальным ресурсам.
- Забыли добавить локальную подсеть в исключения — после настройки раздельного туннелирования пропадает доступ к принтеру или NAS.
- Игнорирование DNS-настроек: DNS-запросы уходят напрямую, и провайдер видит посещаемые сайты.
- Указание доменов в правилах WireGuard без преобразования в IP-адреса, из-за чего правила не работают.
- Не проверяют изменения после перезапуска VPN — ошибки всплывают позже.
FAQ
Как в Streisand настроить раздельное туннелирование для конкретных доменов?
В WireGuard нужно указать IP-адреса доменов в AllowedIPs, так как WireGuard не работает с доменами. Для удобства используйте прокси-режимы (например, Shadowsocks с PAC-файлом), где можно задавать домены напрямую.
Почему после настройки раздельного туннелирования не открываются локальные сайты?
Скорее всего, локальная подсеть не добавлена в исключения. Добавьте маршрут для вашей локальной сети (например, 192.168.0.0/24) в конфигурацию клиента, чтобы трафик к ней шёл напрямую.
Как проверить, что DNS не утекает при раздельном туннелировании?
Подключитесь к VPN и используйте онлайн-сервис проверки утечек DNS. Если в результатах виден IP вашего провайдера, значит, DNS утекает. Исправьте, указав DNS-сервер в конфигурации VPN и убедившись, что системные настройки не переопределяют его.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ