Сети

Настройка Xray: Устранение утечек DNS на VPS

Полная настройка Xray для устранения утечек DNS. Интеграция Unbound, конфигурация маршрутизации и тестирование.

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

Как устранить утечку DNS при использовании Remnawave (Xray) на VPS сервере?

Проблема: При использовании Remnawave (Xray) на VPS сервере от Beget происходит утечка DNS‑запросов. DNS‑сервисы определяют IP‑адрес в Европе, но указывают, что запросы приходят из России. В результате TikTok блокирует доступ, считая IP‑адрес фиктивным.

Что уже предпринято:

  • Отключение IPv6
  • Настройка локального DNS‑сервера Unbound на VPS

Вопрос: Какие дополнительные настройки или параметры конфигурации необходимо применить в Remnawave/Xray для полной локализации DNS‑запросов на стороне сервера и устранения утечек?

Полная настройка Xray для устранения утечек DNS требует конфигурации локального DNS-сервера и правильной маршрутизации. Ключевые параметры — disableFallback: true, queryStrategy: "UseIP" и настройка правил маршрутизации для DNS-трафика. Интеграция Unbound с Xray через отдельный inbound с protocol: "dokodemo-door" решает проблему несоответствия геолокации.


Содержание


Основные причины утечек DNS в Xray/Remnawave

Утечки DNS в Xray возникают из-за двух ключевых факторов. Во-первых, по умолчанию Xray использует системные DNS-серверы (1.1.1.1 или 8.8.8.8), что приводит к несоответствию между IP-адресом VPN и DNS-запросами. Во-вторых, отсутствие правильной маршрутизации DNS-трафика через локальный сервер заставляет пакеты выходить напрямую в сеть, раскрывая реальное местоположение. Это особенно критично для сервисов вроде TikTok, которые анализируют соответствие DNS-резолюции и геолокации IP.


Конфигурация DNS в Xray: Ключевые параметры и стратегии

Для полного устранения утечек необходимо модифицировать DNS-секцию в config.json. Критически важны следующие параметры:

Основные настройки DNS

json
"dns": {
 "servers": [
 "localhost", 
 "https://doh.pub/dns-query"
 ],
 "disableFallback": true,
 "queryStrategy": "UseIP",
 "clientIp": "127.0.0.1"
}

Пояснение параметров:

  • disableFallback: true — запрещает использование системных DNS при сбоях локального сервера
  • queryStrategy: "UseIP" — отправляет запросы с IP-адресом вместо доменного имени
  • clientIp: "127.0.0.1" — указывает локальный IP для DNS-запросов
  • servers: ["localhost", ...] — приоритет локального DNS-сервера

Важно: Даже с этими настройками необходимо отдельным inbound для DNS-трафика, иначе запросы все равно будут просачиваться в сеть.


Интеграция локального DNS-сервера Unbound с Xray

Создайте отдельный inbound в конфигурации Xray для перехвата DNS-запросов:

json
"inbounds": [
 {
 "listen": "127.0.0.1",
 "port": 5353,
 "protocol": "dokodemo-door",
 "settings": {
 "address": "127.0.0.1",
 "port": 53,
 "network": "tcp,udp"
 },
 "tag": "dns-in"
 }
]

Настройка Unbound

В файле unbound.conf добавьте:

server:
 interface: 127.0.0.1
 port: 53
 access-control: 127.0.0.1/32 allow
 harden-glue: yes
 harden-dnssec-stripped: yes
 use-caps-for-id: yes

Проверка работы

bash
dig @127.0.0.1 tiktok.com +short
# Должен возвращать IP-адрес из локальной подсети VPS

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

Добавьте правила маршрутизации в раздел routing конфигурации Xray:

json
"routing": {
 "domainStrategy": "IPIfNonMatch",
 "rules": [
 {
 "type": "field",
 "inbound": "dns-in",
 "outbound": "direct"
 },
 {
 "type": "field",
 "network": "udp,tcp",
 "domain": ["domain:dns", "geosite:category-ads-all"],
 "port": "53",
 "outbound": "dns-in"
 }
 ]
}

Ключевые моменты:

  • domainStrategy: "IPIfNonMatch" — преобразует домены в IP при отсутствии соответствия
  • Правило №1 — пропускает трафик из DNS-in напрямую
  • Правило №2 — перенаправляет весь DNS-трафик в DNS-in
  • Отсутствие IPv6 в правилах предотвращает утечки через него

Тестирование и верификация отсутствия утечек DNS

Методы проверки:

  1. Через сторонние сервисы:
bash
curl -s https://checkip.amazonaws.com
# Сравнить с результатами DNS-запросов
dig @8.8.8.8 whatismyip.akamai.com +short
  1. Wireshark анализ:
  • Фильтр: udp.port == 53 or tcp.port == 53
  • Должен виден только трафик на 127.0.0.1:53
  1. Специализированные сервисы:
  • dnsleaktest.com
  • ipleak.net
  • Видеотесты через TikTok с VPN-подключением

Критерий успеха: Все DNS-запросы должны проходить через 127.0.0.1:53 и возвращать IP-адрес VPS, а не системные DNS-серверы.


Источники

  1. Xray DNS Configuration Guide — Официальная документация по настройке DNS-параметров: https://xtls.github.io/en/config/dns.html
  2. Xray Routing Rules — Информация о стратегиях доменов и правилах маршрутизации: https://xtls.github.io/en/config/routing.html
  3. Unbound Integration Tutorial — Пошаговая инструкция по интеграции Unbound с Xray: https://daniellavrushin.github.io/asuswrt-merlin-xrayui/en/dns-leak
  4. Real User Experience — Обсуждение проблем DNS-утечек в реальных условиях: https://github.com/XTLS/Xray-core/issues/2715
  5. Community Solutions — Практические решения для предотвращения утечек DNS: https://www.reddit.com/r/dumbclub/comments/1dmbxj7/how_to_prevent_dns_leak_using_xrayrealityvision/

Заключение

Устранение утечек DNS в Remnawave/Xray требует комплексного подхода. Ключевые элементы — это локальный DNS-сервер Unbound, отключение IPv6, настройка disableFallback: true и queryStrategy: "UseIP, а также создание отдельного inbound для DNS-трафика через dokodemo-door. Правильная конфигурация маршрутизации с domainStrategy: "IPIfNonMatch" гарантирует, что все DNS-запросы остаются внутри VPS-сервера. После применения этих настроек TikTok и другие сервисы будут корректно определять геолокацию IP-адреса, устраняя проблему блокировок. Регулярное тестирование через специализированные сервисы поможет убедиться в отсутствии утечек.

Авторы
Проверено модерацией
Модерация