DNS
Какие DNS-серверы использует Throne, что делают настройки DNS и как читать результаты теста на утечку DNS.
Throne отвечает на DNS-запросы собственным резолвером. Настройки по умолчанию подходят большинству пользователей.
Как DNS работает в Throne
Throne использует три DNS-сервера:
| Сервер | Для чего используется |
|---|---|
Удалённый DNS (Remote DNS) |
Запросы ваших приложений, через прокси. |
DNS для прямых запросов (Direct DNS) |
Домены, которые ваша маршрутизация направляет в direct, и адрес вашего прокси-сервера. Запросы идут без прокси. |
Переопределение локального DNS (Local Override) |
Разрешает имена двух серверов выше, например dns.google. Пустое значение означает системный резолвер. |
Throne отвечает на запрос в таком порядке:
Предопределенные ответы(Predefined Answers) иУчитывать файл hosts(Respect Hosts File).- Если включён
Включить FakeIP(Enable FakeIP), — поддельный адрес (см. FakeIP). - Если включён
Включить DNS-маршрутизацию(Enable DNS Routing) (по умолчанию включён), домены, которые ваш профиль маршрутизации направляет вdirect, отправляются вDNS для прямых запросов. Это касается доменных правил и наборов правилgeosite-*, но не IP-правил, наборов правилgeoip-*и ваших собственных файлов.srs. - Всё остальное отправляется на
DNS-сервер по умолчанию(Default DNS server), по умолчаниюremote. Если выбрать для негоdirect, домены, которые такие правила направляют вproxy, всё равно используютУдалённый DNS.
Что доходит до Throne, зависит от режима:
- Режим TUN: DNS-запросы всех приложений. Структурированные профили маршрутизации обрабатывают их автоматически; raw-профилю нужно правило
hijack-dns. Про macOS см. Режим TUN. - Режим системного прокси: только имена сайтов, которые приложения отправляют в прокси; имена проксируемых сайтов разрешает прокси-сервер. Приложения также могут разрешать имена сами, в обход Throne.
Настройки
Откройте Настройки (Settings) → Настройки маршрутизации (Routing Settings) → DNS. Изменения применяются после нажатия OK и перезапуска подключения. Активный профиль маршрутизации может заменить часть этих настроек; см. DNS для профиля маршрутизации. В простом режиме Удалённый DNS (Remote DNS), DNS для прямых запросов (Direct DNS) и DNS-сервер по умолчанию (Default DNS server) находятся в разделе Основные настройки DNS (Simple DNS Settings) на вкладке Основные (Common), а остальное скрыто (см. Простой и расширенный режим).
| Настройка | По умолчанию | Что делает |
|---|---|---|
Удалённый DNS (Remote DNS) |
https://8.8.8.8/dns-query |
Сервер, который используется через прокси. |
DNS для прямых запросов (Direct DNS) |
localhost |
Сервер, который используется без прокси. localhost означает системный резолвер. Если он не работает, выберите сервер, который работает в вашей сети без прокси, например публичный резолвер из списка. |
Отключить IPv6 (Disable IPv6) рядом с каждым сервером |
выкл. | Отвечает на запросы IPv6 (AAAA), отправленные этому серверу, пустым результатом. |
Переопределение локального DNS (Local Override) |
пусто | Укажите здесь IP-адрес, если через системный резолвер нельзя разрешить имена ваших DNS-серверов. |
Учитывать файл hosts (Respect Hosts File) |
выкл. | Сначала отвечает из системного файла hosts. |
Предопределенные ответы (Predefined Answers) |
вкл. | Фиксированные ответы в синтаксисе файла hosts, например 10.0.0.5 nas.lan. Имя, у которого указан только адрес IPv4, не получает ответа IPv6, и наоборот. |
Адрес сервера может быть обычным DNS (8.8.8.8 или 8.8.8.8:53), tcp://8.8.8.8:53, tls://1.1.1.1, https://1.1.1.1/dns-query, h3://dns.example.com/dns-query, quic://dns.example.com или dhcp://auto — сервер, который выдаёт ваша сеть.
Если запущенный профиль использует Xray, обычный DNS или DNS поверх QUIC в поле Удалённый DNS (Remote DNS) заменяется на DNS поверх HTTPS: 1.1.1.1 превращается в https://1.1.1.1/dns-query, а сервер, который Throne не знает, — в https://8.8.8.8/dns-query.
FakeIP
Если включён Включить FakeIP (Enable FakeIP), Throne сразу отвечает на запросы адресов поддельным адресом из 198.18.0.0/15 (IPv6: 2001:db8::/32). Когда приложение подключается к нему, Throne маршрутизирует соединение по имени домена, а настоящее разрешение имени происходит позже: на прокси-сервере или через DNS для прямых запросов для прямых соединений. Соединения начинаются быстрее, и ни один DNS-запрос не покидает устройство до того, как для соединения выбран маршрут.
FakeIP влияет только на запросы, которые доходят до Throne, поэтому он помогает в режиме TUN, а не в режиме системного прокси.
- Приложения хранят поддельные адреса в собственных кэшах. Если после остановки Throne приложение остаётся без сети, перезапустите его.
FakeIP: отключить IPv6(FakeIP Disable IPv6) не выдаёт поддельные IPv6-адреса; запросы AAAA получают пустой ответ.Доп. настройки(Advanced Settings) →Сохранять кэш в файл(Save Cache To File) сохраняет поддельные адреса при перезапуске Throne.
Дополнительные настройки
Доп. настройки (Advanced Settings) на вкладке DNS управляют кэшем DNS. Неочевидные параметры:
Оптимистичный кэш(Optimistic Cache) продолжает выдавать ответ с истёкшим сроком, пока он обновляется в фоне, но не дольшеОптимистичный таймаут(Optimistic Timeout) (по умолчанию3d). Его нельзя сочетать сОтключить кэш(Disable Cache) илиОтключить Expire(Disable Expire).Сохранять кэш в файл(Save Cache To File) сохраняет ответы из кэша и адреса FakeIP после перезапуска; каждая новая запись означает запись на диск.Обратное сопоставление (Reverse Mapping)(Reverse Mapping) запоминает, для какого домена был выдан IP-адрес, чтобы доменные правила срабатывали для соединений с этим адресом.
Использовать свой объект DNS (Use Custom DNS Object) заменяет всё на этой вкладке полным объектом dns sing-box, который вы пишете через Редактировать объект DNS (Edit DNS Object) (см. документацию sing-box по DNS). DNS-маршрутизация, FakeIP и предопределённые ответы тогда работают, только если ваш объект их настраивает.
DNS для профиля маршрутизации
У профиля маршрутизации могут быть собственные DNS-серверы, которые заменяют глобальные, пока он — активный профиль маршрутизации. Например, прямой DNS, который работает в стране этого профиля.
- Откройте профиль:
Настройки(Settings) →Настройки маршрутизации(Routing Settings) →Маршрутизация(Route) →Редактировать(Edit), или щёлкните его правой кнопкой мыши внизу менюМаршрутизация(Routing). - На его вкладке
DNSвыберитеUse custom DNS settings, измените настройки и нажмитеOK.
На вкладке, с английскими подписями, есть оба сервера и их флажки Disable IPv6, Default DNS server, Enable DNS Routing и настройки FakeIP. Остальное берётся с глобальной вкладки DNS, а Использовать свой объект DNS (Use Custom DNS Object) игнорируется, пока такой профиль активен.
- Собственный профиль маршрутизации группы применяет свои настройки DNS, пока работает профиль этой группы.
- Удалённые профили и профили маршрутизации из подписки сохраняют свои настройки DNS при обновлении. Throne никогда не берёт настройки DNS из URL или подписки.
- Ссылка
throne://route/переносит настройки DNS, аИмпорт(Import) вНастройки маршрутизации(Routing Settings) перед импортом называет серверы. Проверьте их: эти серверы видят все имена, которые вы запрашиваете, пока профиль активен. - В простом режиме вкладка
DNSпрофиля появляется, только если профиль уже использует собственные настройки DNS.
DNS-сервер для других устройств
Пока работает профиль, Throne также запускает DNS-сервер, который отвечает согласно настройкам на этой странице. Он слушает 127.0.0.1, порт TCP и UDP 5533, который задаётся в Настройки (Settings) → Основные настройки (Basic Settings) → Прочее (Miscellaneous) → Sing-box → Порт DNS-сервера (DNS Server Port) (только в расширенном режиме, см. Простой и расширенный режим).
Чтобы им могли пользоваться другие устройства в вашей сети, например роутер:
- Отметьте
Разрешить подключаться другим устройствам(Allow other devices to connect) подПорт DNS-сервера, нажмитеOKи перезапустите запущенный профиль. - Разрешите в брандмауэре входящие TCP- и UDP-подключения к этому порту, как для общего доступа к прокси. В Linux с ufw:
sudo ufw allow 5533. - На другом устройстве укажите в качестве DNS-сервера адрес вашего компьютера в локальной сети и порт, например
192.168.1.20и5533.
- Телефоны и компьютеры обычно принимают для DNS только порт 53; во многих роутерах порт можно указать.
- Любой, кто может достучаться до порта, может разрешать имена через ваш прокси. Используйте это только в сети, которой вы доверяете.
- При включённом FakeIP другие устройства тоже получают поддельные адреса, которые работают только для соединений через Throne.
Программа(Program) →Разрешить подключаться другим устройствам(Allow other devices to connect) — другой параметр: он открывает доступ к прокси-порту.- В thronectl и в headless Throne эти параметры называются
dns_in_lanиdns_in_port.
Тесты на утечку DNS
Тест на утечку DNS показывает, какие DNS-серверы разрешали его тестовые имена. Такие результаты ожидаемы:
- Провайдер вашего удалённого DNS (Google по умолчанию) или серверы активного профиля маршрутизации, если у него есть собственные.
- Ваш интернет-провайдер — для сайтов, которые идут напрямую. Их имена разрешаются через
DNS для прямых запросов, по умолчанию это системный резолвер. В режиме системного прокси или с FakeIP это касается и сайтов, которые идут напрямую только из-за outbound по умолчанию, как в профилях «Proxy … Blocked». Прямой трафик провайдер видит в любом случае. - Ваш интернет-провайдер — в режиме системного прокси. Приложения могут разрешать имена сами, в обход Throne. Если это для вас важно, используйте режим TUN.
- Собственный DNS-провайдер браузера, если браузер использует безопасный DNS (DNS поверх HTTPS).
- Ваш интернет-провайдер для большинства имён, если
DNS-сервер по умолчанию(Default DNS server) —direct.
Настоящая утечка выглядит так: в режиме TUN с профилем маршрутизации, который направляет тестовый сайт через прокси (например, Default), тест всё равно показывает вашего интернет-провайдера. В Windows проверьте, что Настройки (Settings) → Настройки режима TUN (Tun Settings) → Строгая маршрутизация (Strict Route) включена (по умолчанию в Windows 10 и новее), и см. Защита от утечек DNS в Windows.
Тесты WebRTC проверяют ваш IP-адрес, а не DNS. Если публичный IP-адрес не показан, всё в порядке (#1267). Если для сайта, который вы проксируете, показан ваш настоящий IP-адрес, значит, UDP прошёл в обход прокси. Это часто бывает в режиме системного прокси; используйте режим TUN.
Перехват и системный DNS (удалены)
Throne 1.4.0 удалил вкладку Перехват (Hijack) в Настройки маршрутизации (Routing Settings) и параметр Windows Системный DNS (System DNS). Для приложений, которые игнорируют системный прокси, используйте вместо них режим TUN.
На Android
В Throne для Android те же настройки находятся в Настройки (Settings) → DNS, где FakeIP называется Включить FakeDNS (Enable FakeDNS). В режиме VPN Throne всегда сам обрабатывает DNS-запросы внутри VPN. Отличия:
localhostкак прямой DNS напрямую обращается к DNS-серверам текущей сети Wi-Fi или мобильной сети. Если они не отвечают, подключение не удаётся: «Не удалось подключиться: DNS сети (…) не ответил. Настройте рабочий прямой DNS.» (Could not connect: the network's DNS (…) did not answer. Set a working Direct DNS.)- DNS для профиля маршрутизации — это карточка
DNSв редакторе профиля маршрутизации. Пока активный профиль маршрутизации использует собственные серверы, экранНастройки(Settings) →DNSсообщает об этом вверху, и его настройки действуют только для других профилей маршрутизации. - Локальный DNS-сервер для других приложений работает на
127.0.0.1. Его порт —Настройки(Settings) →Входящие(Inbound) →Порт DNS-сервера(DNS server port) (по умолчанию5533).