В дополнение к первой части материала рассмотрим другой вариант настройки проксирования DNS применительно к XKeen. Этот вариант сам по себе проще и не имеет таких жестких требований, как первый. Например, не требуется прописывать в роутере не шифрованные DNS для нужд роутера и для клиентов вне политики XKeen. Не требуется создавать отдельную политику доступа вместо "Политики по умолчанию". Даже перехват dns средствами XKeen не является обязательным) Мы поднимем полноценный DNS-сервер на xray, которым смогут пользоваться не только клиенты XKeen, но и сам роутер, а также клиенты с прямым доступом в интернет.

К вышесказанному я дополнительно упростил настройку, чтобы её могли использовать начинающие пользователи, но учитывайте, что это всё равно не гайд, а материал, требующий осмысления перед использованием, простое копирование предложенных настроек работать не будет. Конфигурационные файлы практически полностью идентичны приведенным в первой части, основное отличие в том, что мы дополнительно создадим входящее подключение xray на 53 порту, и это потребует отключения прошивочного резолвера KeeneticOS.
Файл outbounds.json такой же, как в первой части. :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
{ "outbounds": [ { "protocol": "vless", "settings": { "address": "***.***.***.***", "port": 443, "id": "****************************", "encryption": "none", "flow": "xtls-rprx-vision" }, "streamSettings": { "network": "tcp", "security": "reality", "realitySettings": { "serverName": "*********", "publicKey": "****************************", "shortId": "********", "spiderX": "/" }, "sockopt": { "domainStrategy": "ForceIP" } }, "tag": "proxy" }, { "protocol": "freedom", "streamSettings": { "sockopt": { "domainStrategy": "ForceIP" } }, "tag": "direct" }, { "protocol": "dns", "tag": "dns-out" } ] } |
Файл routing.json также не меняется:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "routing": { "rules": [ { "inboundTag": ["dns-in"], "outboundTag": "proxy" }, { "port": 53, "outboundTag": "dns-out" }, { "domain": [ "browserleaks", "ip.me" ], "outboundTag": "proxy" }, { "network": "tcp,udp", "outboundTag": "direct" } ] } } |
А вот файл inbounds.json теперь будет выглядеть так:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
{ "inbounds": [ { "protocol": "dokodemo-door", "port": 53, "settings": { "network": "tcp,udp" }, "tag": "dns" }, { "protocol": "dokodemo-door", "port": 1181, "settings": { "network": "tcp,udp", "followRedirect": true }, "sniffing": { "enabled": true, "routeOnly": true, "destOverride": ["http","tls"] }, "streamSettings": { "sockopt": {"tproxy": "tproxy"} }, "tag": "tproxy" } ] } |
В файле dns.json не станем разделять DNS-запросы на разные сервера, а направим их непосредственно на прокси-сервер внутри VLESS потока, опытные пользователи могут самостоятельно разделить их при необходимости. В объекте hosts привяжите домен вашего прокси-сервера к его IP, это не всегда обязательно, но настоятельно рекомендуется:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "dns": { "hosts": { "your_proxy_domain.com": "111.222.333.444" }, "servers": [ "127.0.0.53" ], "queryStrategy": "UseIP", "tag": "dns-in" } } |
Если у вас на сервере установлен xray версии 26.5.3 или новее, то по умолчанию он блокирует приватные адреса в исходящем direct-подключении и необходимо правильно настроить finalRules. Для панели 3x-ui это можно сделать так:
Если используете "голое" ядро, то так:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "protocol": "freedom", "settings": { "finalRules": [ { "action": "allow", "ip": [ "127.0.0.53", "127.0.0.1" ] }, { "action": "block", "ip": [ "geoip:private" ] }, { "action": "allow", "network": "tcp,udp" } ] }, "tag": "direct" }, |
В finalRules разрешаем трафик для 127.0.0.53 и 127.0.0.1 (про второй адрес чуть ниже), далее для всех остальных приватных адресов делаем запрет и разрешаем трафик на внешние IP. Главное помните, что это настройка для сервера, не делайте её в роутере.
Теперь самое важное отличие от варианта из первой части.
Переходим в CLI роутера (например, по ссылке: http://192.168.1.1/a), отключаем DNS-сервер Кинетика первой командой и сохраняем настройку второй командой:
|
1 2 3 |
opkg dns-override system configuration save |
На этом этапе у вас отключится интернет, не пугайтесь. Если что-то пойдёт не так, отменить изменения можно такими командами:
Прописываем в "Интернет фильтрах" KeeneticOS один единственный DNS-сервер - локальный IP-адрес самого роутера с обязательным указанием 53-порта.
Запускаем или перезапускаем XKeen и проверяем результат. Интернет должен появиться и DNS-запросы теперь обрабатываются вашим прокси-сервером.
Обратите внимание, в примерах конфигов используется исходящий тег "proxy", если у вас он иной, например, "vless-reality", замените на свой или используйте везде "proxy".
Для ядра Mihomo настройка проксирования DNS-over-VLESS может быть выполнена следующим кодом в конфиге:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
hosts: your_proxy_domain.com: 111.222.333.444 dns: enable: true listen: 0.0.0.0:53 nameserver: - 127.0.0.53#PROXY proxy-groups: - name: PROXY type: select proxies: - 'VLESS' |
--
Бонус для тех, кто дочитал до конца)
В предложенную схему DNS-over-VLESS можно добавить блокировщик рекламы AdGuard Home. Для этого установите его на сервере командой:
|
1 |
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v |
Пройдите мастер первоначальной настройки, как написано в официальном руководстве до раздела "Получение сертификата TLS", он нам не потребуется.
При настройке выберите порт прослушивания отличный от 53, например:

В этом случае конфиг настройки DNS для Xray будет таким:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "dns": { "hosts": { "your_proxy_domain.com": "111.222.333.444" }, "servers": [ { "address": "127.0.0.1", "port": 5353 } ], "queryStrategy": "UseIP", "tag": "dns-in" } } |
Конфиг настройки DNS для Mihomo будет таким:
|
1 2 3 4 5 6 7 8 |
hosts: your_proxy_domain.com: 111.222.333.444 dns: enable: true listen: 0.0.0.0:53 nameserver: - 127.0.0.1:5353#PROXY |
