DevOps

Настройка правил маршрутизации в 3x-ui для разделения трафика

Пошаговое руководство по правильной настройке правил маршрутизации в 3x-ui для разделения трафика между российскими и зарубежными ресурсами.

2 ответа 10 просмотров

Как правильно настроить правила маршрутизации в 3x-ui для разделения трафика между российскими и зарубежными ресурсами? У меня есть сервер в Санкт-Петербурге, подключенный к серверу в Амстердаме. Мобильные устройства подключаются к питерскому серверу по VLESS, а роутеры - к амстердамскому по WireGuard. Нужно, чтобы трафик к российским ресурсам (например, Gosuslugi) не маршрутизировался через Амстердам. Текущая конфигурация с outbound wg первым и Routing rule ext:geoip_RU.dat:ru последним не работает корректно.

Правильная настройка правил маршрутизации в 3x-ui для разделения трафика между российскими и зарубежными ресурсами требует корректной конфигурации outbound и routing правил, а также включения Sniffing для точной идентификации назначения трафика. Для вашего случая с двухсерверной инфраструктурой необходимо создать отдельные outbound для российского и зарубежного трафика, а затем настроить routing правила, чтобы российский трафик миновал сервер в Амстердаме.

Баннер статьи о двойном туннелировании трафика

Содержание


Основные принципы маршрутизации в 3x-ui

3x-ui основан на Xray-core и использует гибкую систему маршрутизации трафика, которая позволяет детально управлять потоком данных. Основные компоненты системы маршрутизации включают outbound (выходные соединения), inbound (входящие соединения) и routing rules (правила маршрутизации). Правильная настройка этих элементов критически важна для эффективного разделения трафика между российскими и зарубежными ресурсами.

В отличие от простых VPN-решений, 3x-ui поддерживает сложные сценарии маршрутизации, включая условное перенаправление трафика на основе геолокации, доменных имен, протоколов и других параметров. Это делает идеальным выбором для вашей задачи с двухсерверной инфраструктурой.

Ключевым аспектом работы маршрутизации в 3x-ui является механизм sniffing (анализа трафика), который позволяет определить реальное назначение соединения, даже если оно обфусцировано. Для корректной работы разделения трафика необходимо включить этот режим во всех inbound настройках.


Настройка правил маршрутизации для разделения трафика

Для решения вашей задачи с разделением трафика между российскими и зарубежными ресурсами необходимо выполнить несколько шагов по настройке правил маршрутизации в 3x-ui:

1. Создание отдельных outbound-соединений

Сначала создайте отдельные outbound для российского и зарубежного трафика:

  1. В панели 3x-ui перейдите в раздел “Outbounds”
  2. Создайте два outbound:
  • Outbound для России (например, spb-outbound)
  • Outbound для зарубежья (например, amsterdam-outbound)

2. Настройка правил маршрутизации

В разделе “Routing” настройте правила в следующем порядке:

json
{
 "routing": {
 "domainStrategy": "IPIfNonMatch",
 "rules": [
 {
 "type": "field",
 "outboundTag": "direct",
 "domain": [
 "ext:geoip:private"
 ]
 },
 {
 "type": "field",
 "outboundTag": "spb-outbound",
 "geoip": [
 "ext:geoip_RU.dat:ru"
 ]
 },
 {
 "type": "field",
 "outboundTag": "amsterdam-outbound",
 "domain": [
 "geosite:cn"
 ]
 },
 {
 "type": "field",
 "outboundTag": "amsterdam-outbound",
 "ip": [
 "ext:geoip:cn"
 ]
 }
 ]
 }
}

3. Включение Sniffing

Для корректной работы маршрутизации обязательно включите sniffing в настройках inbound. Перейдите в раздел “Inbounds” и для каждого inbound добавьте:

json
{
 "sniff": true,
 "sniffOverrideDestination": true
}

Эта настройка позволит 3x-ui анализировать трафик и определять его реальное назначение, что критически важно для корректной работы правил маршрутизации.


Конфигурация для российских и зарубежных ресурсов

Для вашего конкретного случая с сервером в Санкт-Петербурге и Амстердаме необходимо настроить более детальную конфигурацию маршрутизации. Проблема вашей текущей настройки с outbound wg первым и Routing rule ext:geoip_RU.dat:ru последним заключается в том, что трафик сначала проходит через WireGuard, а затем уже происходит проверка геолокации.

Правильная последовательность правил маршрутизации

В разделе “Настройки Xray -> Расширенный шаблон” добавьте следующую конфигурацию:

json
{
 "inbounds": [
 {
 "sniff": true,
 "sniffOverrideDestination": true
 }
 ],
 "routing": {
 "domainStrategy": "IPIfNonMatch",
 "rules": [
 {
 "type": "field",
 "outboundTag": "direct",
 "domain": [
 "ext:geoip:private",
 "geosite:private",
 "geosite:cn",
 "geosite:telegram"
 ]
 },
 {
 "type": "field",
 "outboundTag": "spb-outbound",
 "geoip": [
 "ext:geoip_RU.dat:ru",
 "ext:geoip:ru"
 ],
 "domain": [
 "geosite:ru",
 "geosite:category-gov-ru"
 ]
 },
 {
 "type": "field",
 "outboundTag": "amsterdam-outbound",
 "domain": [
 "ext:domain-list:foreign"
 ]
 }
 ]
 }
}

Специальная обработка российских сервисов

Для сервисов вроде Gosuslugi добавьте отдельные правила с повышенным приоритетом:

json
{
 "routing": {
 "domainStrategy": "IPIfNonMatch",
 "rules": [
 {
 "type": "field",
 "outboundTag": "spb-outbound",
 "domain": [
 "domain:gosuslugi.gov.ru",
 "domain:gosuslugi.ru",
 "domain:*.gosuslugi.ru",
 "domain:*.gov.ru",
 "domain:*.ru"
 ]
 }
 ]
 }
}

Эта конфигурация гарантирует, что трафик к российским государственным сервисам будет направляться напрямую на сервер в Санкт-Петербурге, минуя Амстердам.


Интеграция с VLESS и WireGuard

В вашей инфраструктуре мобильные устройства подключаются к питерскому серверу по VLESS, а роутеры - к амстердамскому по WireGuard. Для корректной работы этой схемы необходимо правильно настроить оба протокола.

Настройка VLESS для мобильных устройств

Для VLESS-подключений к серверу в Санкт-Петербурге используйте следующую конфигурацию:

json
{
 "inbounds": [
 {
 "type": "vless",
 "tag": "vless-in",
 "listen": "0.0.0.0",
 "port": 443,
 "settings": {
 "clients": [
 {
 "id": "ваш-uuid",
 "level": 0,
 "email": "user@example.com"
 }
 ],
 "decryption": "none"
 },
 "streamSettings": {
 "network": "ws",
 "wsSettings": {
 "path": "/ваш-путь"
 }
 },
 "sniff": true,
 "sniffOverrideDestination": true
 }
 ]
}

Настройка WireGuard для роутеров

Для WireGuard-подключений к серверу в Амстердаме используйте:

json
{
 "inbounds": [
 {
 "type": "wireguard",
 "tag": "wg-in",
 "listen": "0.0.0.0",
 "port": 51820,
 "settings": {
 "clients": [
 {
 "privateKey": "private-key-роутера",
 "allowedIPs": ["10.0.0.2/32"]
 }
 ],
 "secretKey": "secret-key-сервера"
 },
 "sniff": true,
 "sniffOverrideDestination": true
 }
 ]
}

Общая конфигурация с разделением трафика

Для объединения обоих протоколов в единую систему используйте следующую конфигурацию в разделе “Расширенный шаблон”:

json
{
 "inbounds": [
 {
 "type": "vless",
 "tag": "vless-in",
 "sniff": true,
 "sniffOverrideDestination": true
 },
 {
 "type": "wireguard",
 "tag": "wg-in",
 "sniff": true,
 "sniffOverrideDestination": true
 }
 ],
 "outbounds": [
 {
 "tag": "spb-outbound",
 "protocol": "vless",
 "settings": {
 "vnext": [
 {
 "address": "ip-сервера-в-петербурге",
 "port": 443,
 "users": [
 {
 "id": "uuid-сервера-в-петербурге",
 "encryption": "none"
 }
 ]
 }
 ]
 }
 },
 {
 "tag": "amsterdam-outbound",
 "protocol": "wireguard",
 "settings": {
 "secretKey": "secret-key-сервера-в-амстердаме",
 "peers": [
 {
 "publicKey": "public-key-сервера-в-амстердаме",
 "endpoint": "ip-сервера-в-амстердаме:51820"
 }
 ]
 }
 }
 ],
 "routing": {
 "domainStrategy": "IPIfNonMatch",
 "rules": [
 {
 "type": "field",
 "inboundTag": ["vless-in", "wg-in"],
 "outboundTag": "spb-outbound",
 "geoip": ["ext:geoip_RU.dat:ru"]
 },
 {
 "type": "field",
 "inboundTag": ["vless-in", "wg-in"],
 "outboundTag": "amsterdam-outbound",
 "geoip": ["ext:geoip:cn"]
 }
 ]
 }
}

Проверка и отладка правил маршрутизации

После настройки правил маршрутизации необходимо проверить их корректность работы. Вот несколько методов для проверки и отладки:

1. Использование тестовых инструментов

Для проверки маршрутизации используйте следующие команды:

bash
# Проверка маршрутизации к российскому ресурсу
curl -v https://gosuslugi.gov.ru

# Проверка маршрутизации к зарубежному ресурсу 
curl -v https://google.com

2. Анализ логов 3x-ui

В панели 3x-ui перейдите в раздел “Логи” и наблюдайте за процессом маршрутизации трафика. Обратите внимание на сообщения, связанные с правилами маршрутизации и ошибками подключения.

3. Использование утилиты xray

Если у вас есть доступ к командной строке сервера, используйте утилиту xray для анализа:

bash
# Проверка конфигурации xray
xray api dump

# Мониторинг трафика
xray api stats

4. Тестирование с разными устройствами

Проверьте работу маршрутизации с разных типов устройств:

  • Мобильные устройства (VLESS-подключение)
  • Роутеры (WireGuard-подключение)
  • Компьютеры (оба типа подключений)

5. Использование сервисов определения IP

Для проверки реального IP-адреса, с которого происходит подключение, используйте сервисы типа:

Эти сервисы помогут убедиться, что российский трафик действительно идет через сервер в Санкт-Петербурге, а зарубежный - через Амстердам.


Расширенные настройки и оптимизация

Для повышения эффективности вашей системы маршрутизации в 3x-ui можно настроить дополнительные параметры.

Настройка кэширования геоданных

Для ускорения работы маршрутизации настройте кэширование геоданных:

json
{
 "policy": {
 "levels": {
 "0": {
 "handshake": 4,
 "connIdle": 300,
 "uplinkOnly": 2,
 "downlinkOnly": 5
 }
 },
 "system": {
 "stats": {
 "inboundDownlink": true,
 "inboundUplink": true,
 "outboundDownlink": true,
 "outboundUplink": true
 }
 }
 }
}

Оптимизация работы с VLESS

Для VLESS-подключений настройте дополнительные параметры оптимизации:

json
{
 "inbounds": [
 {
 "type": "vless",
 "settings": {
 "clients": [
 {
 "id": "ваш-uuid",
 "flow": "xtls-rprx-vision"
 }
 ]
 },
 "streamSettings": {
 "network": "ws",
 "wsSettings": {
 "headers": {
 "Host": "ваш-домен"
 }
 }
 }
 }
 ]
}

Настройка отказоустойчивости

Для повышения надежности настройки маршрутизации добавьте правила для обработки ошибок:

json
{
 "routing": {
 "rules": [
 {
 "type": "field",
 "outboundTag": "direct",
 "domain": [
 "ext:domain-list:adblock"
 ]
 },
 {
 "type": "field",
 "outboundTag": "block",
 "domain": [
 "ext:domain-list:tracker"
 ]
 }
 ]
 }
}

Мониторинг производительности

Настройте мониторинг производительности системы маршрутизации:

  1. Включите сбор статистики в настройках 3x-ui
  2. Настройте уведомления о критических ошибках
  3. Регулярно проверяйте журналы работы системы
  4. Мониторьте нагрузку на оба сервера

Источники

  1. MetalnikovG.ru - Двойное туннелирование трафика с помощью панели 3x-ui — Подробное руководство по настройке сложных сценариев маршрутизации: https://www.metalnikovg.ru/blog/dvoynoe-tunnelirovanie-trafika-s-pomojyu-paneli-3xui
  2. Официальная документация Xray-core — Техническая документация по протоколам и настройкам маршрутизации: https://xtls.github.io/
  3. Руководство по VLESS протоколу - Подробное описание возможностей и настроек VLESS: https://github.com/XTLS/Xray-docs-next/blob/main/ru/protocols/vless.md
  4. WireGuard официальный сайт - Документация по настройке WireGuard для корпоративного использования: https://www.wireguard.com/
  5. Руководство по гео-базам данных Xray - Информация о работе с геоданными для маршрутизации: https://github.com/v2fly/domain-list-community

Заключение

Правильная настройка маршрутизации в 3x-ui для разделения трафика между российскими и зарубежными ресурсами требует комплексного подхода, включающего создание отдельных outbound-соединений, настройку правил маршрутизации в правильной последовательности и включение механизма sniffing. Для вашего случая с двухсерверной инфраструктурой ключевой момент - это размещение правил для российского трафика перед правилами для зарубежного, а также использование геоданных для точного определения назначения трафика.

Важно регулярно проверять работу настроек и анализировать логи для своевременного обнаружения и исправления проблем. Следуя рекомендациям из этого руководства, вы сможете обеспечить корректную работу вашей инфраструктуры, где российские ресурсы будут доступны напрямую через сервер в Санкт-Петербурге, а зарубежные - через сервер в Амстердаме.

М

Для разделения трафика между российскими и зарубежными ресурсами в 3X-UI необходимо настроить правила маршрутизации через расширенный шаблон Xray. Перейдите в раздел “Настройки Xray -> Расширенный шаблон” и добавьте JSON-конфигурацию для направления российского трафика напрямую. Эта настройка гарантирует, что трафик к российским ресурсам будет миновать сервер в Амстердаме, что критично для сервисов вроде Gosuslugi. Важно включить Sniffing в настройках inbound для корректной работы разделения трафика.

Авторы
М
Специалист по сетевым технологиям
Проверено модерацией
НейроОтветы
Модерация