Классическая история: человек включает VPN, и у него перестают открываться банк, госуслуги, маркетплейс и любимый локальный сервис доставки. Или открываются, но требуют «войти из обычной сети». Причина почти всегда одна: VPN отправил весь трафик в одну сторону, и российские сайты увидели иностранный адрес.
Решение — не отключать VPN, а разделить трафик на два маршрута: российский и европейский. Разбираем, как это работает, что видит каждая сторона и как проверить, что у вас включено именно так.
Маршрут — это путь, по которому пакет выходит в интернет. У устройства обычно он один: через домашний роутер и провайдера. Когда поднимается туннель, появляется второй путь — через сервер VPN. Дальше вопрос только в том, какой пакет куда отправить.
Есть три принципиально разных подхода:
| Подход | Как выбирается путь | Что видит сайт |
|---|---|---|
| Всё в туннель | Никак: весь трафик уходит на сервер | Все сайты видят иностранный адрес |
| Split в приложении | Вы выбираете приложения вручную | Зависит от приложения, а не от сайта |
| По адресу назначения | Сервер решает: российская подсеть или нет | Российские сайты — российский адрес, остальные — европейский |
Третий вариант — то, что мы называем «два маршрута». Он не требует, чтобы пользователь что-то настраивал на каждом устройстве.
В конфиге клиента стоит AllowedIPs = 0.0.0.0/0 (и ::/0 для IPv6). Это значит: в туннель уходит весь трафик, без исключений. Так безопаснее — ни один запрос не может «проскочить» мимо шифрования из-за забытого правила в приложении.
А вот дальше решение принимает сервер. Он смотрит на адрес назначения и выбирает выход:
устройство → туннель (шифрование) → сервер Cheburnet
├─ адрес из списка российских подсетей → российский канал
└─ все остальные адреса → европейский канал
Списки российских подсетей — не выдумка на глаз. Основа — официальный реестр распределения адресов (RIPE, список ресурсов, закреплённых за Россией), плюс ручные дополнения: отдельные подсети и домены, которые в реестр не попадают, но по факту работают из России. Списки пересобираются по расписанию, а отдельный сторожевой механизм раз в минуту проверяет, что маршруты на месте, и восстанавливает их, если что-то отвалилось.
Раздельное туннелирование в клиенте (его ещё называют split tunneling) работает, но у него есть три слабых места:
Когда решение принимает сервер, клиенту вообще не нужно ничего знать про маршруты: он просто отправляет всё в туннель. Одинаково на iPhone, Android, Windows, macOS, Linux и телевизоре. Правила меняются в одном месте — на сервере, — и сразу для всех устройств.
| Куда идёт запрос | Маршрут | Какой адрес видит сайт |
|---|---|---|
| Банк, госуслуги, локальные сервисы, российские магазины | Российский | Российский адрес сервера |
| Зарубежные сервисы, магазины приложений, иностранные сайты | Европейский | Европейский адрес |
| DNS-запросы | Внутри туннеля | Собственный DNS, провайдер запросов не видит |
Именно поэтому проверка маршрута показывает два разных адреса: российский и зарубежный. Если адреса совпадают, значит туннель не поднялся или разделение не работает — тогда стоит смотреть, что с подключением.
Можно идеально разделить трафик и всё равно выдать себя: устройство по умолчанию спрашивает «какой адрес у этого домена» у DNS-сервера провайдера — напрямую, мимо туннеля. Провайдер в этом случае видит полный список открываемых доменов.
В наших конфигах в строке DNS указан 10.66.0.1 — собственный DNS-сервер, доступный только изнутри туннеля. Он же фильтрует рекламу и трекеры на уровне доменов. Подробнее — в статье про AdGuard DNS.
У современного интернета две «дороги» — IPv4 и IPv6. Если завернуть в туннель только IPv4, весь IPv6-трафик пойдёт напрямую, в обход. Это классическая утечка, о которой мы подробно писали в статье про утечки DNS и IP.
Поэтому разделение делается для обоих протоколов: российские IPv6-подсети выходят через российский канал, остальные — через европейский. А если у вашего провайдера IPv6 нет вообще, адрес IPv6 в конфиге просто не понадобится.
Маршрутизация по адресу — не магия, она опирается на списки, а списки всегда немного отстают от реальности. Три типичных случая:
Сервис зарегистрирован в России, но отдаётся через зарубежную CDN — его адреса в российском списке нет. Трафик уйдёт через Европу, и сайт может показать капчу, ограничить оплату или попросить «войти из домашней сети». Лечится добавлением подсети или домена в ручной список.
Обратный случай: часть инфраструктуры иностранного сервиса размещена в российских дата-центрах. Такой запрос уйдёт напрямую, и сервис увидит российский адрес. Обычно это безобидно, но иногда влияет на выбор контента или валюты.
Компания сменила провайдера или CDN — адреса изменились, а списки обновились не мгновенно. Именно поэтому пересборка идёт по расписанию, а не «один раз при установке».
Если что-то из этого случилось с вами — напишите в поддержку в боте. Добавить домен или подсеть в список быстрее, чем кажется: это одна строка на сервере, а не новое приложение у вас на телефоне.
Честно о границах:
Ещё одна быстрая проверка — открыть российский сайт, который не любит иностранные адреса (например, госуслуги или банк), и зарубежный сервис. Если оба работают нормально, маршруты на месте.
Потому что трафик выходит через российский канал сервера. Сайт понимает, что запрос из России, но не знает вашего домашнего адреса. Это и есть компромисс: локальные сервисы работают, а конкретный адрес скрыт.
В нашей схеме маршрут выбирается по адресу назначения на сервере, а не в приложении. Если сайт определяется неверно, напишите в поддержку — домен добавят в нужный список.
Нет, наоборот: российский трафик идёт коротким путём, а не кругом через Европу. Обычно именно поэтому пинг к локальным серверам и скорость загрузки российских сайтов становятся лучше, чем при «всё в туннель».
Да, принцип тот же: по адресу назначения. Российские сервисы увидят российский адрес, зарубежные — европейский. Это удобно, когда нужно оставаться «на связи с домом» и одновременно пользоваться местными сервисами.
Идея похожая, но уровень другой: там вы вручную выбираете приложения на каждом устройстве, здесь сервер сам решает по адресу сайта. Подробнее о клиентском варианте — в статье про раздельное туннелирование на Android.
Пересборка идёт по расписанию, а проверка целостности маршрутов — каждую минуту: если маршрут пропал, он восстанавливается автоматически. Ручные дополнения (отдельные домены и подсети) добавляются по запросам пользователей.