Коротко — нужно на петербургском сервере в 3x-ui добавить правило маршрутизации для российских IP/доменов и направить их на «direct» (или другой локальный outbound), а не на outbound, который идёт по WireGuard в Амстердам. Ниже — пошагово, с примерами и важными оговорками.
1) Понять текущую схему outbound
- В 3x-ui у вас, вероятно, есть outbound для WG/Амстердама (например, с tag = “wg-amsterdam” или т.п.) и outbound для «прямого» выхода (обычно tag = “direct” или “freedom”). Запомните теги outbound’ов — они понадобятся в правилах.
2) Обновите GeoIP / Geosite (если используется)
- Правила по стране используют базу geoip. В 3x-ui обычно есть кнопка/настройка для обновления geoip.dat и geosite.dat. Обновите их, чтобы правило по RU корректно работало.
3) Создайте правило для российских ресурсов
В 3x-ui:
- Перейдите в Routing (Маршрутизация) -> Add Rule (Добавить правило).
- Название: “Russia” (или любое).
- Тип совпадения: IP / GeoIP (если интерфейс предлагает выбор страны) — выберите RU (Россия).
- Если GUI не даёт выбора по стране, выберите IP-list и вставьте вручную диапазоны (см. ниже).
- В поле Outbound выбираете “direct” (или тег, который у вас отвечает за выход в интернет без туннеля в Амстердам).
- Поместите это правило выше (перед) правилой по умолчанию, которая отправляет трафик в wg-amsterdam. Порядок важен — правила читаются сверху вниз.
Пример правила в формате Xray (для понимания):
{
"type": "field",
"ip": ["geoip:RU"],
"outboundTag": "direct"
}
4) Добавьте доменные правила (рекомендуется)
- Многие российские сервисы имеют домены .ru / .рф и т.п. Добавьте правило по доменам, чтобы при разрешении домена вы могли принудительно направлять на direct:
- domain: ["regexp:.*\\.ru$", "regexp:.*\\.рф$"]
- outboundTag: "direct"
Пример:
{
"type": "field",
"domain": ["regexp:.*\\.ru$", "regexp:.*\\.рф$"],
"outboundTag": "direct"
}
5) Что делать если GeoIP не подходит / CDN и зарубежный хостинг
- Ограничение: geoip:RU сработает только если конечный IP действительно в РФ. Многие российские сервисы могут быть на зарубежных CDN/серваках — тогда их IP будут не-российскими и правило не сработает.
- Решение: добавить конкретные домены сервисов в доменные правила (см. п.4) или вручную составить список IP-диапазонов, которые вы хотите держать локальными.
- Можно комбинировать: сначала domain-правила (точные домены), затем geoip:RU, затем default -> wg-amsterdam.
6) DNS-поведение
- Важно: если DNS разрешается через Амстердам, то сначала домен разрешится в тамошний IP, и geoip по IP может не соответствовать ожиданиям. Лучше:
- Разрешать DNS локально (на петербургском сервере) или
- Использовать правила по domain, а не только по ip.
- В 3x-ui можно настроить DNS upstream (локальный или российский) или включить DNS-кеширование на сервере.
7) Проверка и отладка
- После применения правил перезапустите/примените конфигурацию в 3x-ui.
- На клиенте (мобильном) проверьте трассировку/маршрут до нужного ресурса (traceroute, mtr) — маршрут не должен идти через WG-узел в Амстердам.
- В логах xray/3x-ui смотрите, какой outbound выбран для конкретного соединения — это помогает понять, сработало ли правило.
8) Пример порядка правил (рекомендуемый)
1. domain: конкретные российские домены -> direct
2. ip: geoip:RU -> direct
3. (другие исключения) -> direct
4. default -> wg-amsterdam (или ваш основной прокси)
Итоговые советы
- Правило по geoip:RU + доменные правила чаще всего решают задачу.
- Всегда ставьте эти правила выше правила по умолчанию, направляющей в WG.
- Проверьте DNS и CDN-особенности — при необходимости добавляйте домены вручную.
Если хотите — пришлите скрин/экспорт ваших текущих правил и список тегов outbound (имена), я напишу конкретные настройки под вашу 3x-ui и подскажу, где кликом всё выставить.