Локальное сопоставление DNS
Chute поддерживает локально настраиваемое сопоставление DNS. Это эквивалентно /etc/hosts, но с более мощными функциями, включая подстановочные знаки, псевдонимы и назначение DNS-сервера.
[Host]
abc.com = 1.2.3.4
*.dev = 6.7.8.9
foo.com = bar.com
bar.com = server:8.8.8.8
Примечание: Описанные здесь строки сопоставления также принимаются в разделе
[DNS], рядом с параметрами DNS-серверов. См. Раздел DNS. Исключение — форма Shadowrocketssid:(DNS для отдельной сети): она распознаётся только в[Host], а в[DNS]читается как сопоставление для имени, которое никогда не встречается.
Сопоставление может перечислять несколько адресов, IPv4 и IPv6 вперемешку: dns.google = 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888. Запрос A получает в ответ адреса IPv4, а запрос AAAA — адреса IPv6. Список, в котором есть что-либо, кроме адресов, — ошибка конфигурации. Имя, сопоставленное с адресами только одного семейства, получает на запрос другого семейства пустой ответ (NODATA); вышестоящие серверы не опрашиваются. Имя может занимать и две строки — одну для адресов IPv4, другую для IPv6. Сопоставление, добавленное при перезагрузке конфигурации или модулем, начинает действовать сразу. Ответ NXDOMAIN от вышестоящего сервера не кэшируется, если имя покрывается сопоставлением или псевдонимом в [Host]; сопоставление или псевдоним имеет приоритет.
Подстановочные знаки
Вы можете использовать префикс * для подстановки всех поддоменов. Обратите внимание, что Chute использует простое сопоставление строк. Например, *google.com будет соответствовать google.com, foo.google.com и bargoogle.com. А *.google.com не будет соответствовать google.com.
[Host]
*.dev = 6.7.8.9
Псевдонимы
Это эквивалентно записи CNAME.
[Host]
foo.com = bar.com
Запрос A или AAAA для имени с псевдонимом получает в ответ адреса цели, поэтому клиенту не нужно самому следовать псевдониму. Если у цели нет адреса запрошенного семейства, ответ будет пустым, а не записью другого семейства. Chute разрешает цель при загрузке правила; если она ещё не разрешена, в ответе возвращается запись CNAME, а цель разрешается для следующего запроса.
Назначение DNS-сервера
Вы можете назначить указанный DNS-сервер одному или нескольким доменам.
[Host]
bar.com = server:8.8.8.8
server: также принимает URL DoH, поэтому указанную конечную точку DoH можно назначить доменам напрямую.
[Host]
*.example.com = server:https://doh.example/dns-query
server: принимает список серверов, разделённых запятыми. Каждая пригодная запись сохраняется, и все они опрашиваются одновременно; побеждает первый ответ. Запись может быть IP-адресом с необязательным портом (8.8.8.8:5353, [2001:db8::1]:5353), system, syslib (force-syslib означает то же самое) или URL DoH. Заканчиваться суффиксом #proxy могут IP-адрес и URL DoH; system и syslib, записанные с ним, отбрасываются с предупреждением, поскольку системный резолвер нельзя направить через политику. Запись tcp://IP[:port] опрашивает этот сервер через DNS поверх TCP.
[Host]
bar.com = server:8.8.8.8, 8.8.4.4
Вы можете назначить системный DNS-сервер одному или нескольким доменам. Chute будет использовать только системную конфигурацию DNS для запроса этих доменов.
[Host]
devs = server:system
Поскольку Chute имеет собственную реализацию DNS-клиента, некоторые имена хостов могут не разрешаться. Вы можете использовать server:syslib, чтобы позволить системе обрабатывать запрос.
[Host]
Macbook = server:syslib
Назначение сервиса DoH
Вы можете назначить указанный сервис DoH одному или нескольким доменам.
[Host]
bar.com = doh:cloudflare
По умолчанию запросы A и AAAA для имён хостов с суффиксом .local разрешаются системой. Запросы других типов — PTR, SRV, TXT — идут к настроенным вышестоящим серверам.
Назначение сервиса DoT
Вы можете назначить указанный сервис DoT (DNS-over-TLS) одному или нескольким доменам.
[Host]
bar.com = dot:dns.google
Запись dot: не может содержать суффикс #proxy.
Назначение сервиса DoQ
Вы можете назначить указанный сервис DoQ (DNS-over-QUIC) одному или нескольким доменам.
[Host]
bar.com = doq:dns.adguard.com
Запись может заканчиваться суффиксом #proxy, например bar.com = doq:dns.adguard.com#proxy=HK, — тогда запрос идёт через эту политику. Имя политики сохраняется в точности так, как записано.
Назначение сервиса DoH3
Вы можете назначить указанный сервис DoH3 (DNS-over-HTTP/3) одному или нескольким доменам.
[Host]
bar.com = doh3:https://dns.google/dns-query
Как и запись DoQ, она может заканчиваться суффиксом #proxy.
Ключи наборов правил
Ключом может быть набор правил вместо шаблона домена:
[Host]
RULE-SET:https://example.com/cn-domains.list = server:223.5.5.5
RULE-SET:MyProvider = server:https://doh.pub/dns-query
DOMAIN-SET:https://example.com/ad-hosts.txt = 0.0.0.0
RULE-SET:<источник> принимает URL или имя провайдера правил; DOMAIN-SET:<источник> принимает URL. Участвуют только доменные правила набора — IP-правила и правила других типов игнорируются. Набор загружается и обновляется так же, как при использовании в строке [Rule], и каждый совпавший с ним домен получает значение справа. Встроенные наборы SYSTEM и LAN здесь использовать нельзя.
DNS-скрипт
[Host]
*.corp.example = script:CorpResolver
script:<имя> передаёт разрешение подходящих доменов скрипту типа type=dns с этим именем — и для запросов приложений, и для собственных разрешений Chute. Если скрипт не вернул адрес или включённого скрипта dns с таким именем нет, домен разрешается обычным образом.
DNS для отдельной сети (Shadowrocket)
[Host]
ssid:Home WiFi = server:192.168.1.1
Запись Shadowrocket ssid:<имя сети> = server:<серверы> читается как переопределение DNS в [SSID Setting] для этой сети Wi-Fi: пока устройство находится в ней, эти серверы заменяют обычные резолверы основного пула. Имя сети может содержать пробелы. Здесь учитываются только обычные резолверы — адрес с необязательным портом, system или syslib; URL DoH, который server: принимает в остальных строках [Host], отбрасывается с уведомлением.
Системный файл hosts
[General]
read-etc-hosts = false
На macOS и Android Chute также читает системный файл hosts, /etc/hosts, и добавляет его записи в эту таблицу перед строками [Host], поэтому, если имя есть и там, и там, побеждает адрес из файла hosts. read-etc-hosts в [General] переключает это поведение и по умолчанию включён; установите false, чтобы не учитывать файл. Chute iOS и tvOS никогда не читают файл hosts.
Комбинированное использование
Все функции могут использоваться вместе. Например:
[Host]
*.dev = foo.com
*.bar.com = server:system
Macbook = server:syslib
*.foo.com = doh:cloudflare
*.local = dot:dns.google
api.internal = doq:dns.adguard.com
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.