Безопасность в интернете с каждым днём становится всё более насущной необходимостью. Утечка личных данных может обойтись слишком дорого, поэтому о своей цифровой неприкосновенности лучше позаботиться заранее. И начать стоит, например, с защиты DNS-запросов. Обычно для этого используются такие протоколы, как DNS-over-TLS, DNS-over-HTTPS и другие. Я же предлагаю рассмотреть ещё один способ — направить DNS-трафик через прокси-сервер на базе Xray, назовём этот метод DNS-over-VLESS. В сети немало инструкций по настройке самого Xray, но вот проброс DNS-трафика через него раскрыт недостаточно подробно. Попробуем восполнить этот пробел.

dns-over-vless

Итак, первоначальное условие, у вас уже должен быть настроен и функционировать прокси xray VLESS с XTLS Reality по одной из многочисленных инструкций. Все действия по его "прокачке" выполняем локально на компьютере или роутере, сервер xray не трогаем*.

* Замечание от пользователя:

Во многих конфигурациях серверов xray, которые можно найти на просторах интернета, есть секция для предотвращения проблем с локальной маршрутизацией, в ней блокируется "geoip:private", куда попадает дефолтный адрес DNS-резолвера - 127.0.0.53. Для нашей задачи данное правило с "geoip:private" необходимо удалить, либо направить 127.0.0.53 выше этого правила в директ

Разобьём единый файл настроек xray config.json на файлы по разделам: inbounds.json, outbounds.json, dns.json, routing.json. Этих четырёх файлов достаточно для нашей задачи. После настройки и проверки работоспособности можете дополнительно добавить к ним log.json, politic.json. Впрочем, разбиение на разделы не обязательно, если вам удобней настраивать единый config.json, делайте так, как вам удобно.
Для реализации задуманного необходимо использовать входящее подключение (inbounds), поддерживающее UDP-протокол, например, TProxy.

inbounds.json

Как мы уже условились, прокси работает по протоколу VLESS с XTLS Reality и первое, что мы сделаем для пересылки через него DNS-трафика, это добавим в файл outbounds.json секцию DNS-протокола, а в исходящие подключения vless и freedom параметр domainStrategy, без этого параметра встроенный в xray DNS-сервер использоваться не будет.

outbounds.json

Следующим шагом создадим файл dns.json и укажем в нём любой публичный DNS-сервер.

dns.json

Далее создадим в начале файла routing.json два правила, которые перехватят DNS запросы

routing.json

Настройка завершена, выполняем проверку.

Если ошибок не допущено, то проксируемый ресурс browserleaks.com покажет DNS страны нахождения вашего VPS. Не стоит бояться использования обычных DNS в рассмотренных конфигах, их трафик будет передан на VPS-сервер транспортом VLESS с TLS-шифрованием.

В итоге результат получен, DNS-over-VLESS настроен и работает. Никто не прослушает ваши DNS-запросы к проксируемым сайтам и не подменит ответы по своему усмотрению, а для дополнительной защиты в интернете, обратите внимание на возможность отключения WebRTC и QUIC в браузере.