Раздельная маршрутизация: российские сайты напрямую
Когда весь трафик идёт через сервер в Германии, многие российские сервисы видят зарубежный IP и ведут себя иначе: банк просит дополнительное подтверждение или не пускает вовсе, Госуслуги показывают ошибку, маркетплейс меняет регион доставки, онлайн-кинотеатр отказывается показывать фильм. Выключать VPN каждый раз неудобно.
Личный VPN на OBLAKO
Reality и другие протоколы для личного VPN на серверах OBLAKO разрешены правилами, если в SNI стоит ваш собственный домен. Поднимите сервер по нашей инструкции, а правила маршрутизации из этой статьи добавьте поверх.
Решение называется раздельной маршрутизацией (split tunneling): российские адреса идут напрямую через вашего провайдера, всё остальное через ваш сервер. Настраивается это один раз.
Где можно делить трафик
| Где | Плюсы | Минусы |
|---|---|---|
| В приложении на устройстве | Быстро, без доступа к серверу | Настраивать на каждом устройстве |
| На сервере-входе в каскаде | Одни правила для всех устройств | Нужен второй сервер в России |
| На роутере | Работает для всей домашней сети | Нужен роутер с поддержкой Xray или sing-box |
Обратите внимание: на сервере в Германии отправить российский трафик «напрямую» не получится. Он и так выходит из Германии, поэтому российский сайт всё равно увидит немецкий IP. Делить трафик нужно до того, как он покинет Россию: на устройстве, на роутере или на российском сервере каскада.
Как устроены правила
Почти все клиенты на ядре Xray и sing-box понимают два вида списков:
- geoip это базы IP-адресов по странам. Правило
geoip:ruозначает «все российские адреса». - geosite это наборы доменов по категориям. Категория
category-ruсодержит российские доменные зоны (.ru,.su,.рфи некоторые другие),category-gov-ruохватывает государственные сайты.
Обычно ставят оба правила: домены ловят сайты в зоне .ru, а база IP подхватывает российские сервисы на других доменах. Для правил по доменам в клиенте должен быть включён sniffing (определение домена по трафику). В большинстве приложений он включён по умолчанию.
Стандартные базы клиентов подходят для начала. Если нужна точнее настроенная выборка, есть сборки, которые обновляются несколько раз в день и учитывают российскую специфику, например runetfreedom/russia-v2ray-rules-dat. Их подключают вместо стандартных файлов geoip.dat и geosite.dat.
Порядок правил важен
Правила проверяются сверху вниз до первого совпадения. Правило «российское напрямую» должно стоять выше правила «всё остальное через сервер», иначе оно не сработает.
Вариант 1. Правила в приложении
Названия пунктов меню меняются от версии к версии, но логика везде одна: найти раздел маршрутизации и добавить правило с действием «напрямую» (direct).
- Hiddify. Откройте Настройки, раздел Маршрутизация, в поле Регион выберите Россия (ru) и включите Обход сайтов региона ru. Российские сайты пойдут напрямую.
- Happ и v2RayTun. В разделе маршрутизации (routing) добавьте правило с
geoip:ruиgeosite:category-ruи действием «напрямую» (direct). Названия пунктов зависят от версии приложения. - v2rayN. Откройте Настройки маршрутизации, нажмите Добавить набор правил и через Добавить правило создайте первым правило с
geosite:category-ruиgeoip:ruи выходомdirect, последним правило для всего остального с выходомproxy. Затем выберите набор и нажмите Установить как активное правило. - NekoBox и другие клиенты на sing-box. Правила задаются наборами
rule_set, о них ниже.
Если вы правите конфиг Xray вручную, правила выглядят так:
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{ "type": "field", "domain": ["geosite:category-ru"], "outboundTag": "direct" },
{ "type": "field", "ip": ["geoip:ru", "geoip:private"], "outboundTag": "direct" }
]
}Трафик, который не попал ни под одно правило, уходит в первый outbound конфига, то есть на ваш сервер. Значение IPIfNonMatch нужно, чтобы клиент проверил IP-адрес сайта, если по домену совпадения не нашлось.
В sing-box базы geoip и geosite подключаются как наборы правил:
"route": {
"rule_set": [
{
"tag": "geoip-ru",
"type": "remote",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-ru.srs"
},
{
"tag": "geosite-category-ru",
"type": "remote",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-category-ru.srs"
}
],
"rules": [
{ "rule_set": ["geoip-ru", "geosite-category-ru"], "outbound": "direct" }
]
}В конфиге должен быть outbound с тегом direct и типом direct.
Вариант 2. На сервере-входе каскада
Если вы собрали каскад из двух серверов с Xray на российском входе, правила удобно держать там. Тогда на телефонах и компьютерах вообще ничего настраивать не нужно.
В конфиге входа уже есть outbound direct с протоколом freedom. Добавьте в корень конфига блок маршрутизации:
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{ "type": "field", "domain": ["geosite:category-ru"], "outboundTag": "direct" },
{ "type": "field", "ip": ["geoip:ru"], "outboundTag": "direct" }
]
},И включите sniffing во входящем подключении, чтобы Xray видел домены:
"sniffing": { "enabled": true, "destOverride": ["http", "tls", "quic"] }Проверьте конфиг командой xray run -test -c /usr/local/etc/xray/config.json и перезапустите systemctl restart xray. Теперь российские сайты увидят адрес вашего российского сервера, а остальные адреса сервера в Германии.
Вариант 3. На роутере
Роутер с поддержкой Xray или sing-box делит трафик для всех устройств дома, включая телевизор и игровую приставку, на которые VPN не поставить. На прошивке OpenWrt для этого есть готовые пакеты с веб-интерфейсом, которые подключаются к серверу по ссылке vless:// и маршрутизируют трафик по спискам доменов. Часть роутеров других производителей умеет то же самое через свои компоненты.
Перед покупкой роутера под эту задачу проверьте, что модель поддерживает нужную прошивку и что у неё хватит памяти и процессора: шифрование на слабом роутере заметно режет скорость.
Как проверить, что всё работает
- Подключите VPN.
- Откройте сервис определения IP в зоне
.ru. Он должен показать адрес вашего провайдера (или российского входа каскада). - Откройте зарубежный сервис определения IP, например
ifconfig.me. Он должен показать адрес сервера в Германии. - Зайдите в приложение банка. Если оно по-прежнему ругается, посмотрите, на какие домены оно ходит, и добавьте их в правило «напрямую» вручную через
domain:example.ru.
Если клиент при запуске пишет, что не нашёл категорию в geosite.dat, проверьте написание категории и обновите файлы баз: в старых сборках нужной категории может не быть.
Что ещё важно
- Банковские приложения проверяют не только IP. Некоторые смотрят, включён ли VPN на устройстве вообще. Здесь раздельная маршрутизация не поможет, такие приложения придётся исключать из VPN целиком через настройку «приложения в обход VPN» на Android.
- DNS тоже маршрутизируется. Если сайт открывается, но выдаёт регион «не Россия», проверьте, через какой DNS-сервер идут запросы. Некоторые сервисы определяют регион по DNS.
- Только для себя. Правила OBLAKO разрешают личный VPN для себя и домашнего круга, подробнее в статье Личный VPN на VPS.