Зачем нужна маршрутизация в VPN-панелях
Маршрутизация определяет, какой трафик идёт через прокси, а какой — напрямую или блокируется. Без неё весь трафик уходит через VPN-сервер, что замедляет доступ к локальным ресурсам и увеличивает нагрузку. В 3x-ui и Happ маршрутизация настраивается через правила, которые сопоставляют домены, IP-адреса, порты и другие параметры с исходящими соединениями.
В 3x-ui маршрутизация реализована в конфигурации Xray: вы редактируете JSON-блок routing, а панель перезагружает ядро. В Happ маршрутизация вынесена в отдельные профили, которые привязываются к подпискам и управляются через JSON или специальные ссылки. Оба подхода позволяют гибко распределять трафик, но имеют свои особенности.
Правильная маршрутизация решает несколько задач: обход блокировок для зарубежных сервисов, ускорение доступа к локальным сайтам, блокировка рекламы и трекеров, а также экономия трафика. Например, можно направить Netflix через прокси, а банковские приложения — напрямую.
Основные компоненты маршрутизации в 3x-ui
В 3x-ui маршрутизация строится на трёх элементах: исходящие соединения (outbounds), правила (rules) и балансировщики (balancers). Исходящие соединения определяют, куда отправлять трафик: напрямую (freedom), в блок (blackhole) или на прокси-сервер (VLESS, VMess, Trojan, Shadowsocks).
Правила — это сопоставители, которые проверяют домены, IP, порты, протоколы и другие поля. Каждое правило направляет трафик на конкретный outbound или балансировщик. Правила проверяются сверху вниз, и первое совпадение выигрывает. Поэтому важно размещать специфичные правила выше общих.
Балансировщики группируют несколько исходящих соединений и распределяют нагрузку между ними. Стратегии: random (случайный), roundRobin (по кругу), leastPing (наименьшая задержка), leastLoad (наименьшая нагрузка). Для leastPing и leastLoad требуется монитор состояния (observatory), который проверяет доступность серверов.
Настройка исходящих соединений в 3x-ui
Каждое исходящее соединение — это JSON-объект с тегом (tag), протоколом и настройками. Тег используется в правилах и балансировщиках. Базовые outbounds: direct (freedom) и block (blackhole). Для проксирования добавляются VLESS, VMess, Trojan, Shadowsocks, WireGuard и другие.
Пример VLESS-исходящего:
{
"tag": "proxy",
"protocol": "vless",
"settings": {
"address": "example.com",
"port": 443,
"id": "uuid",
"flow": "",
"encryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"fingerprint": "chrome",
"serverName": "www.microsoft.com"
}
}
}3x-ui также поддерживает Cloudflare WARP, NordVPN и PIA WireGuard. WARP можно зарегистрировать прямо из панели, а NordVPN/PIA — через токены доступа. Эти сервисы добавляются как отдельные outbounds с тегами warp, nord-, pia--.
Правила маршрутизации: как написать и применить
Правила маршрутизации в 3x-ui задаются в блоке routing.rules. Каждое правило — объект с полями type, domain, ip, port, network, protocol, inboundTag, sourceIP и другими. Направление задаётся через outboundTag или balancerTag.
Пример блока правил:
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
}
]
}
}domainStrategy определяет, как Xray сопоставляет домены с IP: AsIs (не резолвить), IPIfNonMatch (резолвить, если нет совпадения по домену), IPOnDemand (всегда резолвить). Для большинства случаев подходит IPIfNonMatch — он экономит DNS-запросы.
Правила можно комбинировать: например, сначала блокировать рекламу, потом направлять приватные IP напрямую, а остальное — через прокси. Важно помнить, что порядок правил влияет на результат.
Балансировщики и мониторинг состояния
Балансировщики позволяют распределять трафик между несколькими прокси-серверами. В 3x-ui они настраиваются в блоке routing.balancers. Каждый балансировщик имеет тег, селектор (список тегов outbounds) и стратегию.
Пример балансировщика с leastPing:
{
"routing": {
"balancers": [
{
"tag": "balancer",
"selector": ["proxy"],
"strategy": { "type": "leastPing" }
}
]
},
"observatory": {
"subjectSelector": ["proxy"],
"probeURL": "https://www.google.com/generate_204",
"probeInterval": "1m",
"enableConcurrency": true
}
}Для стратегий leastPing и leastLoad нужен observatory, который периодически проверяет доступность серверов. probeURL — адрес для проверки, probeInterval — интервал. Панель 3x-ui может показывать статус балансировщика и переопределять его на конкретное исходящее для тестирования.
Балансировщики особенно полезны, когда у вас несколько серверов в разных странах: можно автоматически выбирать самый быстрый или наименее загруженный.
Маршрутизация в Happ: профили и геофайлы
Happ использует профили маршрутизации, которые привязываются к подпискам. Каждый профиль содержит правила, DNS-настройки и ссылки на геофайлы (GeoIP, GeoSite). Геофайлы поставляются с приложением и обновляются через ядро.
Профиль маршрутизации в Happ — это JSON, который можно импортировать через ссылки happ://routing/add/{base64} или happ://routing/onadd/{base64}. Первый добавляет профиль, второй — добавляет и активирует. Ссылки можно передавать через HTTP-заголовки или тело подписки.
Основные параметры профиля: GlobalProxy (весь трафик через прокси или напрямую), RemoteDNS и DomesticDNS (удалённый и локальный DNS), DirectSites, ProxySites, BlockSites (списки доменов), GeoipUrl, GeositeUrl (ссылки на геофайлы), DomainStrategy, FakeDNS и другие.
Happ поддерживает децентрализованное управление: каждая подписка имеет свой набор правил. Изменения применяются только после перезапуска соединения (Reconnect).
Настройка DNS в маршрутизации: Happ и 3x-ui
DNS играет ключевую роль в маршрутизации. В 3x-ui DNS настраивается в блоке dns конфигурации Xray. Можно задать несколько DNS-серверов, правила для доменов и стратегию разрешения. Например, для прокси-доменов использовать удалённый DNS, а для локальных — системный.
В Happ DNS разделён на Remote (для прокси-трафика) и Domestic (для прямого). Для каждого можно указать тип (DoH, DoU), домен и IP. По умолчанию RemoteDNS — Cloudflare (1.1.1.1), DomesticDNS — Google (8.8.8.8). Также есть DnsHosts — ручные соответствия «домен: IP», работающие как hosts-файл.
FakeDNS — функция, которая подменяет реальные IP-адреса виртуальными, чтобы все запросы шли через Xray. Это предотвращает утечки DNS и ускоряет обработку. В 3x-ui FakeDNS настраивается в блоке dns с параметром queryStrategy.
Правильная настройка DNS важна для обхода блокировок и предотвращения утечек. Рекомендуется использовать DoH или DoT для шифрования запросов.
Практические примеры: WARP, Netflix, блокировка рекламы
Рассмотрим несколько типовых сценариев.
WARP для обхода блокировок: добавьте outbound warp через панель 3x-ui, затем создайте правило, направляющее определённые домены (например, OpenAI) на warp. В Happ можно использовать профиль с ProxySites для этих доменов.
Netflix через прокси: создайте правило с доменом geosite:netflix и направьте его на прокси-сервер в нужной стране. В 3x-ui это делается в блоке routing.rules, в Happ — в ProxySites.
Блокировка рекламы: используйте geosite:category-ads-all и направьте на block (blackhole). Это снизит загрузку страниц и защитит от трекеров. В Happ аналогично — добавьте домены в BlockSites.
Разделение трафика: например, локальные IP (192.168.0.0/16) направляйте напрямую, а остальное — через прокси. В 3x-ui это правило с geoip:private и outboundTag: direct. В Happ — DirectIp с приватными подсетями.
Эти примеры показывают, как гибко можно настроить маршрутизацию под свои задачи.
Ограничения и особенности JSON-подписок в Happ
В Happ для JSON-подписок действует Restricted Mode: у подписки может быть только 0 или 1 профиль маршрутизации, и он не может быть создан вручную или изменён. Профиль приходит только от провайдера. Это предотвращает рассинхронизацию настроек.
Пользователь не может отключить или изменить такой профиль: главный тогл маршрутизации заблокирован, а геофайлы и правила не редактируются. Tunnel DNS настраивается локально и не инжектируется в JSON.
Если загрузка геофайлов не завершается за 3 минуты, появляется ошибка, и профиль помечается красным восклицательным знаком. Ошибка исчезает после удаления проблемного профиля или успешной загрузки.
Эти ограничения стоит учитывать при использовании JSON-подписок: вы не сможете гибко настроить маршрутизацию, если провайдер не предоставил профиль.
Сравнение 3x-ui и Happ: что выбрать
3x-ui — это серверная панель для управления Xray-core. Она предоставляет веб-интерфейс для создания inbound/outbound, управления пользователями, мониторинга и настройки маршрутизации через JSON. Подходит для администраторов, которые хотят полный контроль над сервером.
Happ — это клиентское приложение для подключения к VPN-серверам. Оно поддерживает подписки, профили маршрутизации и геофайлы. Happ больше ориентирован на конечных пользователей, которые хотят простое управление подключениями.
Если вы администрируете сервер, выбирайте 3x-ui. Если вы пользователь, которому нужен удобный клиент с гибкой маршрутизацией, — Happ. Оба инструмента поддерживают популярные протоколы и могут работать вместе: 3x-ui на сервере, Happ на клиенте.
Важно помнить, что маршрутизация в 3x-ui настраивается на сервере, а в Happ — на клиенте. Это разные уровни, и их можно комбинировать для достижения оптимальной конфигурации.
Вопросы и ответы
Как в 3x-ui направить трафик Netflix через прокси?
Создайте правило в блоке routing.rules с доменом geosite:netflix и укажите outboundTag вашего прокси-сервера. Например:
{
"type": "field",
"domain": ["geosite:netflix"],
"outboundTag": "proxy"
}Убедитесь, что правило размещено выше общих правил, чтобы оно сработало первым.
Что такое domainStrategy и какой выбрать?
domainStrategy определяет, как Xray сопоставляет домены с IP-адресами при маршрутизации. Варианты: AsIs — не резолвить домены, IPIfNonMatch — резолвить, если нет совпадения по домену, IPOnDemand — всегда резолвить. Рекомендуется IPIfNonMatch для баланса скорости и точности.
Как в Happ добавить профиль маршрутизации через ссылку?
Используйте ссылку вида happ://routing/add/{base64}, где {base64} — это JSON-профиль, закодированный в base64. Ссылку можно передать через HTTP-заголовок routing или добавить в тело подписки. Профиль будет привязан к подписке и активирован после загрузки геофайлов.
Можно ли в 3x-ui использовать несколько балансировщиков?
Да, в блоке routing.balancers можно определить несколько балансировщиков с разными тегами и селекторами. Каждое правило может ссылаться на конкретный балансировщик через balancerTag. Это позволяет, например, один балансировщик для прокси-трафика, другой — для WARP.
Как заблокировать рекламу в Happ?
В профиле маршрутизации Happ добавьте домены рекламных сетей в список BlockSites. Например, можно указать geosite:category-ads-all или конкретные домены. Трафик на эти домены будет направлен в блокировку (blackhole).
Что такое FakeDNS и зачем он нужен?
FakeDNS подменяет реальные IP-адреса виртуальными, чтобы все DNS-запросы шли через Xray. Это предотвращает утечки DNS и ускоряет обработку запросов, так как не требуется обращение к системному DNS. Включается в настройках DNS в 3x-ui или Happ.
Как в 3x-ui настроить WARP для обхода блокировок?
Добавьте outbound с тегом warp через панель (Xray → Исходящие → WARP). Затем создайте правило, направляющее нужные домены на warp. Например, для OpenAI: {"type":"field","domain":["openai.com"],"outboundTag":"warp"}.