Маршрутизация ВПН-трафика по чёрным спискам (Часть 2)
Гоша Котён-кинРедакция 1.5 03.03.26
текст распространяется под лицензией Creative Commons (CC BY-SA).
Продолжу обзор ВПН-клиентов и рекомендации по их настройке в режиме маршрутизации трафика по "Чёрным спискам" (Часть 1) для российских пользователей.
Оглавление части 2:
Happ (Android)
V2BOX (iOS/MacOS)
Утечки DNS, что это и как не допустить
Happ-Proxy
(Android 5.0+)
Однокнопочник, умеющий в маршрутизацию и не только (видимо форк V2rayNG). Есть версия и для iOS, но с гео-файлами от runetfreedom и правилами там какой-то глюк, который разрабы устранять не собираются («и так хорошо» говорят). Для десктопов версии в процессе разработки.

Главный экран - ВПН-соединение запущено 22с и активный ключ протестирован успешно. Плюсиком можно добавлять подписку (Название и ссылка), ключ из буфера (SS, trojan, vmess, vless, WG), JSON-профиль (импорт и экспорт), профиль с ручным заполнением полей.
Настройка очень проста и удобна - жмём шестерёнку, потом выбираем «Маршрутизация...», «Включить...», три точки вверху - «Импортировать с буфера», предварительно в буфер копируем следующий профиль:
(обновлено 03.03.26)
happ://routing/add/eyJibG9ja2lwIjpbXSwiYmxvY2tzaXRlcyI6WyJnZW9zaXRlOmNhdGVnb3J5LWFkcy1hbGwiXSwiZGlyZWN0aXAiOltdLCJkaXJlY3RzaXRlcyI6W10sImRuc2hvc3RzIjp7ImNsb3VkZmxhcmUtZG5zLmNvbSI6IjEuMS4xLjEiLCJkbnMuZ29vZ2xlIjoiOC44LjguOCJ9LCJkb21haW5zdHJhdGVneSI6IklQSWZOb25NYXRjaCIsImRvbWVzdGljZG5zZG9tYWluIjoiaHR0cHM6Ly9kbnMuZ29vZ2xlL2Rucy1xdWVyeSIsImRvbWVzdGljZG5zaXAiOiI4LjguOC44IiwiZG9tZXN0aWNkbnN0eXBlIjoiRG9IIiwiZmFrZWRucyI6ZmFsc2UsImdlb2lwdXJsIjoiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3J1bmV0ZnJlZWRvbS9ydXNzaWEtYmxvY2tlZC1nZW9pcC9yZWxlYXNlL2dlb2lwLXJ1LW9ubHkuZGF0IiwiZ2Vvc2l0ZXVybCI6Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ydW5ldGZyZWVkb20vcnVzc2lhLWJsb2NrZWQtZ2Vvc2l0ZS9yZWxlYXNlL2dlb3NpdGUtcnUtb25seS5kYXQiLCJnbG9iYWxwcm94eSI6ZmFsc2UsIm5hbWUiOiJSdW5GcmVEbS1CbG9AUnUoT25seSkiLCJwcm94eWlwIjpbImdlb2lwOnJ1LWJsb2NrZWQiLCJnZW9pcDpydS1ibG9ja2VkLWNvbW11bml0eSJdLCJwcm94eXNpdGVzIjpbImdlb3NpdGU6cnUtYmxvY2tlZCIsImRvbWFpbjp1YSIsImRvbWFpbjoyaXAuaW8iXSwicmVtb3RlZG5zZG9tYWluIjoiaHR0cHM6Ly9kbnMucXVhZDkubmV0L2Rucy1xdWVyeSIsInJlbW90ZWRuc2lwIjoiOS45LjkuOSIsInJlbW90ZWRuc3R5cGUiOiJEb0giLCJyb3V0ZW9yZGVyIjoiYmxvY2stZGlyZWN0LXByb3h5In0=
Загрузятся такие правила, DNS и гео-файлы:
{"blockip":[],"blocksites":["geosite:category-ads-all"],"directip":[],"directsites":[],"dnshosts":{"cloudflare-dns.com":"1.1.1.1","dns.google":"8.8.8.8"},"domainstrategy":"IPIfNonMatch","domesticdnsdomain":"https://dns.google/dns-query","domesticdnsip":"8.8.8.8","domesticdnstype":"DoH","fakedns":false,"geoipurl":"https://raw.githubusercontent.com/runetfreedom/russia-blocked-geoip/release/geoip-ru-only.dat","geositeurl":"https://raw.githubusercontent.com/runetfreedom/russia-blocked-geosite/release/geosite-ru-only.dat","globalproxy":false,"name":"RunFreDm-Blo@Ru(Only)","proxyip":["geoip:ru-blocked","geoip:ru-blocked-community"],"proxysites":["geosite:ru-blocked","domain:ua","domain:2ip.io"],"remotednsdomain":"https://dns.quad9.net/dns-query","remotednsip":"9.9.9.9","remotednstype":"DoH"}
В результате получим следующее:

Экран - Профиль маршрутизации Rf-BlackLst (открывается по стрелке >)
*теперь будет называться RunFreDm-Blo@Ru(Only):

Продолжение экрана - Профиль маршрутизации Rf-BlackLst
*теперь называется RunFreDm-Blo@Ru(Only):

Экран «Редактировать правила»:

Правила для раздела «Прокси»:

Маршрутизация настроена, легко и просто!
Профилей маршрутизации может быть несколько, но активный только один. Есть онлайн конфигуратор/генератор профилей.
[⚠️ Add 03.03.26 Кнопка со спидометром запускает тестирование ключей ("Пинг").
Если потянуть ключ влево, появится кнопка удалить (корзина), а вправо - кнопки "тест/пинг" и "поделиться".
"Пинг" тест настраивается (⚙️Настройки, Расширенные, Пинг). Можно выбрать методы
"via Proxy GET" или "HEAD" для заданного тестового URL,
"TCP" или "ICMP" для сервера ВПН,
а также тестовый URL.
"via Proxy GET" или "HEAD" - более точные, но очень медленные; "TCP" - быстрый тест (рекомендую), но может не отражать реальной работоспособности. Хотя после подключения можно уточнить, нажав "Проверить текущее"- покажет реальную задержку по url-тесту.
Ещё в Расширенных настройках (может очень помочь!) - в разделе "Настройки VPN" стоит сделать следующее:
включить "Анализ пакетов" если не;
"Включить резолвинг сервера" и заполнить две следующие строки например так:
8.8.8.8
tls://dns.google
Тут можно указать любой сервер DoT или DoH, смотря что у вас лучше доступно
Всё готово!
Жмём на Старт/ВКЛ на Главном экране (большая кнопка) и запускаем туннель. При успехе пойдёт отсчёт времени и появиться строка "Проверить текущее подключение".
Есть недостаток - в списке не отображается номер ключа. Но ключи/профили сортируются по итогам теста.
Если попадается заблокированный ресурс, ещё не включённый в "Чёрные списки", включаем ненадолго режим "Глобал" - см. предпоследний скрин. Или добавляем его в Проксируемые - последний скрин.
⁉️По сообщениям, есть одна проблема с Happ - он гонит телеметрию на свой одноимённый сайт (happ[.]su). Причём этот сайт не заблокирован и доступен напрямую! Тем самым клиент выдаёт факт своего использования ‼️
Указанная проблема упорно игнорируется разработчиками 🤦🏼♂️
Каринг поступает примерно так же, но его сайт заблокирован и поэтому обмен идёт только через туннель, в зашифрованном виде (или не так явно, как минимум)⚠️].
V2BOX
(iOS14+ и MacOS11+)
Простой и удобный ВПН-клиент для поклонников Apple (для Android он тоже есть, конфиг правил маршрутизации аналогичен V2rayNG, т. к. это его форк скорее всего).
/Теперь Может показывать рекламу и не всегда пробивает блокировки!/

Чтобы настроить правила маршрутизации, нужно перейти в раздел Routing (Маршрутизация) из главного экрана Home (Главная <upd 07.10.25>). Там активируйте переключатель Enable Routing.

Установите domainStrategy в значение IPifNonMatch!
На странице Geo Assets загрузите гео-файлы, указав имя файла в поле Name (но без расширения! /Оно добавится само/) и ссылку в поле Url (те же, что и для V2rayNG):
Name:
geosite-ru-only
Url:
https://raw.githubusercontent.com/runetfreedom/russia-blocked-geosite/release/geosite-ru-only.dat
Name:
geoip-ru-only
Url:
https://raw.githubusercontent.com/runetfreedom/russia-blocked-geoip/release/geoip-ru-only.dat

Следующий набор правил (для режима «чёрного списка») можно импортировать на экране Routing через буфер обмена, нажав вверху кнопку со стрелкой внутрь:
v2box://routes?multi=W3sibWF0Y2hNb2RlIjoiZG9tYWluIiwidGFnIjoicHJveHkiLCJ0eXBlIjoiRG9tYWluIiwiaXNFbmFibGUiOnRydWUsInJlbWFyayI6IlByb3h5IFBsdXMiLCJuYW1lIjoicm91dGUuMTMwMjdBNDUtNTcxNy00OEE3LTgwNDItQkQ1NkRDRTU5QkQ0IiwibGlzdCI6WyJ3aXJlLmNvbSIsInVhIiwiMmlwLmlvIl0sImxpc3RJUCI6W119LHsibWF0Y2hNb2RlIjoia2V5d29yZCIsInRhZyI6InByb3h5IiwidHlwZSI6IklQIiwiaXNFbmFibGUiOnRydWUsInJlbWFyayI6IlJmLUJsb2NrZWQgSVBzIiwibmFtZSI6InJvdXRlLjA1OTE5QkQzLTJDNEItNDIxRS1BNzc3LTA2RkJGQzcyQUM0OSIsImxpc3QiOltdLCJsaXN0SVAiOlsiZXh0Omdlb2lwLXJ1LW9ubHkuZGF0OnJ1LWJsb2NrZWQtY29tbXVuaXR5IiwiZXh0Omdlb2lwLXJ1LW9ubHkuZGF0OnJ1LWJsb2NrZWQiXX0seyJtYXRjaE1vZGUiOiJkb21haW4iLCJ0YWciOiJwcm94eSIsInR5cGUiOiJEb21haW4iLCJpc0VuYWJsZSI6dHJ1ZSwicmVtYXJrIjoiUmYtQmxvY2tlZCBETnMiLCJuYW1lIjoicm91dGUuMzgzREY1ODYtRUJDMC00NjVELTk3REMtNzcwOUI2RjNFNDc5IiwibGlzdCI6WyJleHQ6Z2Vvc2l0ZS1ydS1vbmx5LmRhdDpydS1ibG9ja2VkIl0sImxpc3RJUCI6W119LHsibWF0Y2hNb2RlIjoia2V5d29yZCIsInRhZyI6ImRpcmVjdCIsInR5cGUiOiJJUCIsImlzRW5hYmxlIjp0cnVlLCJyZW1hcmsiOiJGaW5hbC1CeXBhc3MiLCJuYW1lIjoicm91dGUuMkYxNTQwQTktMzNGMC00OERBLTkxNUYtRjU5RURFNjI3NTMwIiwibGlzdCI6W10sImxpc3RJUCI6WyIwLjAuMC4wXC8wIiwiMDo6MFwvMCJdfV0=
Загрузятся такие правила (без блокировки рекламы, но с проксированием для wire.com, ua и 2ip.io):
{"matchMode":"domain","tag":"proxy","type":"Domain","isEnable":true,"remark":"Proxy Plus","name":"route.13027A45-5717-48A7-8042-BD56DCE59BD4","list":["wire.com","ua","2ip.io"],"listIP":[]},{"matchMode":"keyword","tag":"proxy","type":"IP","isEnable":true,"remark":"Rf-Blocked Ips","name":"route.05919BD3-2C4B-421E-A777-06FBFC72AC49","list":[],"listIP":["ext:geoip-ru-only.dat:ru-blocked-community","ext:geoip-ru-only.dat:ru-blocked"]},{"matchMode":"domain","tag":"proxy","type":"Domain","isEnable":true,"remark":"Rf-Blocked Dns","name":"route.383DF586-EBC0-465D-97DC-7709B6F3E479","list":["ext:geosite-ru-only.dat:ru-blocked"],"listIP":[]},{"matchMode":"keyword","tag":"direct","type":"IP","isEnable":true,"remark":"Final-Bypass","name":"route.2F1540A9-33F0-48DA-915F-F59EDE627530","list":[],"listIP":["0.0.0.0\/0","0::0\/0"]}

Правила можно выключать (и включать обратно). Если выключить правило Final-Bypass, активируется режим «Глобал» (т.е всё в Прокси).
Вот как выглядит страница редактирования правила Rf-blocked DNs:

[⚠️ Add 07.10.25 Выберите сервер DNS от Google с шифрованием - DoT: 8.8.8.8 на странице DNS

На странице DNS Options рекомендуется делать такой выбор:

Про утечки DNS
Очень важно, используя ВПН-клиент, правильно задавать адреса DNS-серверов. И вот почему.
Обычно при обращении к системе доменных имен трафик не шифруется (используется протокол UDP, DOU – Dns Over Udp), а значит ваш локальный провайдер (работодатель или любой перехватчик трафика) может составить список посещенных вами ресурсов и сервисов. Злоумышленники могут использовать эти сведения для организации фишинговых атак или внедрения вредоносного кода. Данные DNS-запросов иногда используют для цензуры в некоторых странах, блокируя доступ к определенным ресурсам.
При использовании ВПН мы ожидаем, что весь трафик (в том числе DNS) идёт через сервер ВПН (в туннель) в зашифрованном виде. Однако так случается не всегда. Если допустить ошибки при настройке DNS в клиенте ВПН, могут происходить так называемые «утечки DNS», когда трафик DNS идёт к вашему локальному провайдеру мимо ВПН-туннеля. Кроме всего, утечка DNS может раскрывать ваше реальное географическое положение, лишая вас анонимности.
Существуют протоколы DNS с шифрованием (и серверы/службы DNS их поддерживающие) — DOH (Dns Over Https), DOT (Dns Over Tls) и некоторые другие. Желательно использовать эти шифрованные протоколы. Для этого есть специальные настройки в основных браузерах, в новых версиях Android (начиная с 9), в некоторых роутерах, в настройках некоторых ВПН-клиентов.
В сети Интернет есть специальные ресурсы, проводящие тестирование вашего браузера на «утечки DNS». Например:
https://dnsleaktest.com (результаты теста могут блокироваться в РФ),
https://browserleaks.com/dns (может быть заблокирован в РФ),
https://whoer.net/ru/dns-leak-test (заблокирован в РФ).
Результаты тестов на этих ресурсах при использовании ВПН не должны содержать локальные DNS-серверы. В противном случае имеется утечка DNS.
Google добавил поддержку DNS через TLS (DoT) в Android, представив функцию Private DNS (Частный DNS). Он доступен в Android 9 (Pie) и выше и шифрует весь DNS-трафик на телефоне, в том числе из приложений. Можно указать Частный DNS например так:
dns.google
Исследования показали, что ВПН-клиент v2rayNG не поддерживает DOH/DOT-формат указания адреса DNS, поэтому если указать в его настройках такое:
https://8.8.8.8/dns-query
или
tls://8.8.8.8
он не поймёт, но проглотит и даст утечку DNS (если браузер или роутер не настроен на шифрование dns и/или не установлен Частный DNS в Android). Т.е. будут использоваться сервера DNS, полученные от вашего локального провайдера!
Правильным будет задать ему адреса DNS без указания протокола или урл. Неизвестно, использует ли при этом клиент и его форки шифрованные протоколы DNS, но утечки перестанут фиксироваться.
============
Технически тестирование вашего браузера на «утечки DNS» на вышеуказанных сайтах происходит так:
- Когда вы заходите на такой сайт, он инициирует ряд DNS-запросов с вашего устройства к разным доменным именам, специально подготовленным для теста.
- Сайт затем анализирует, с каких DNS-серверов пришли ответы на эти запросы, то есть какие DNS-серверы использовались вашим устройством для разрешения доменных имён.
К статьям
"Выбор, установка и настройка VPN-клиентов на разных устройствах"