Перейти к содержимому
RU

Главная / Блог / DNS и сеть

Конфигурация DNS в Clash — fake-ip или redir-host?

DNS и сеть2026-07-131247 слов3 мин чтения
Конфигурация DNS в Clash — fake-ip или redir-host?

DNS — тот раздел конфигурации Clash, который порождает больше всего загадочных проблем. Неточная маршрутизация, стриминг, который не разблокируется, переставшие работать внутренние сервисы — в восьми случаях из десяти след ведёт сюда.

Сначала о том, зачем прокси-клиенту вообще заниматься DNS

Обычно имена резолвит система, а приложение затем подключается к полученному IP.

Под прокси возникает противоречие: правила написаны про домены, а к моменту, когда трафик доходит до ядра, от них может остаться только IP.

Проблема без перехвата DNSПриложение делает DNS-запроссистемный резолвер возвращает настоящий IPПриложение открывает соединениеядро видит только IPСопоставление правилвсе правила DOMAIN-SUFFIX бесполезныРешать может только GEOIPгранулярность маршрутизации рушится
К тому же системный резолвер ходит по вашей локальной сети, так что зарубежные имена могут вернуться отравленными

Поэтому ядру нужно взять DNS на себя. Сделать это можно двумя способами.

redir-host: резолвить по-настоящему

Ядро получает запрос, действительно разрешает имя, возвращает приложению настоящий IP и внутри себя помечает «этот IP соответствует тому домену».

Ход работы redir-hostПриложение спрашивает имяexample.comЯдро резолвит по-настоящемушлёт запрос вверх по цепочкеВозвращается настоящий IP93.184.x.xПри подключении правила сопоставляются по доменуядро помнит соответствие
Логика интуитивная, но каждый запрос ждёт настоящего разрешения

Плюс: возвращается настоящий IP, поэтому совместимость наилучшая — внутренние сервисы и устройства в локальной сети ведут себя нормально.

Минусы:

  • Каждый запрос ждёт ответа от вышестоящего резолвера, это медленно
  • Если разрешение зарубежного имени отравлено, вы получите неверный IP
  • Ответом может оказаться адрес внутрирегиональной CDN, что искажает решения правил

fake-ip: выдать заглушку

Ядро получает запрос и не резолвит его вовсе. Оно выдаёт фиктивный адрес из зарезервированного диапазона вроде 198.18.0.0/16 и записывает «этот фиктивный IP = тот домен».

Приложение подключается к фиктивному адресу, ядро его узнаёт, находит обратно домен, сопоставляет правила по домену, а настоящее разрешение выполняет выходной узел.

Ход работы fake-ipПриложение спрашивает имяexample.comЯдро возвращает фиктивный IP198.18.0.7 мгновенноПриложение подключается к фиктивному IPядро находит обратно доменПравила сопоставляются по доменуточная маршрутизацияУзел резолвит настоящий IPразрешение происходит на дальнем конце
Локально никакого настоящего разрешения не происходит, поэтому это и быстро, и неуязвимо для отравления

Плюсы:

  • Ответы DNS практически мгновенные (ждать нечего)
  • Отравление исключается в корне
  • Информация о домене сохраняется полностью, так что правила срабатывают максимально точно
  • Разрешение на выходном узле делает проверку региона стриминговыми сервисами надёжнее

Минусы:

  • Возвращается фиктивный адрес, так что всё, что зависит от настоящего IP, ломается
  • ping example.com показывает 198.18.x.x, что выглядит странно (на практике безвредно)
  • Внутренние имена обязаны попасть в fake-ip-filter, иначе они не разрешатся

Вывод: почти всегда используйте fake-ip

Как выбратьfake-ipбыстро, устойчиво к отратребует поддержки fake-ip-filterрекомендация по умолчаниюredir-hostлучшая совместимостьмедленно, и может быть отравленотолько когда fake-ip постоянно создаёт проблемы
Mihomo по умолчанию использует fake-ip; не меняйте это без конкретной причины

Рабочая конфигурация DNS

dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: false
  prefer-h3: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16

  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - "*.localdomain"
    - "+.internal"
    - "+.home.arpa"
    - "+.pool.ntp.org"
    - "time.*.com"
    - "ntp.*.com"
    - "+.market.xiaomi.com"
    - "localhost.ptlogin2.qq.com"
    - "+.msftconnecttest.com"
    - "+.msftncsi.com"

  # используется для разрешения имён самих серверов DoH/DoT ниже
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29

  # основной DNS: разрешает внутрирегиональные имена
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query

  # резервный DNS: разрешает зарубежные имена
  fallback:
    - https://1.1.1.1/dns-query
    - tls://8.8.4.4:853

  # когда брать ответ от fallback
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4
      - 0.0.0.0/32

  # отправлять конкретные имена конкретным резолверам
  nameserver-policy:
    "geosite:cn": [223.5.5.5, 119.29.29.29]
    "+.mycompany.com": "10.10.0.53"

Чем занимается каждое из четырёх полей

nameserver / fallback / default-nameserver / nameserver-policy1default-nameserverделает ровно одну работу: разрешает имена ваших серверов DoH2nameserverосновной резолвер, каждый запрос идёт сюда первым3fallbackрезервный резолвер для зарубежных имён; какой ответ взять, решает fallback-filter4nameserver-policyнаивысший приоритет, закрепляет определённые имена за конкретным резолвером
Приоритет: nameserver-policy > nameserver / fallback

Как решает fallback-filter

Он запрашивает nameserver и fallback одновременно, а затем:

  • Адрес от nameserver внутри региона → берём его (значит, имя местное)
  • Адрес от nameserver вне региона → берём ответ от fallback (зарубежное имя, где местный резолвер может быть отравлен)

Такая схема отправляет местные имена местным резолверам (быстро, и CDN оказывается рядом), а зарубежные — зарубежным (точно и без отравления).

Что такое утечка DNS на самом деле

«Утечка DNS» означает: вы считаете, что трафик идёт через прокси, а разрешение имён по-прежнему уходит к резолверу вашего провайдера. Следствие — провайдер видит, какие домены вы посещаете.

Чек-лист предотвращения утечекУстановите dns.enable в true — пусть разрешением занимается ядроИспользуйте DoH или DoT для nameserver Под TUN выставьте dns-hijack в any:53 — это ловит запросы в обход ядраНе указывайте DNS вашего провайдера в настройках сетевого адаптера вручнуюВыключите «безопасный DNS Проверьте онлайн-тестом на утечки, что ваш провайдер не появляется

Встроенный DoH браузера — самый часто упускаемый источник утечки: Chrome и Firefox могут по умолчанию включать собственный шифрованный DNS, минуя и систему, и ядро.

  • Chrome/Edge: Настройки → Конфиденциальность и безопасность → Безопасность → выключить «Использовать безопасный DNS»
  • Firefox: Настройки → Приватность и защита → в самом низу «DNS через HTTPS» → выключить

Таблица типичных неисправностей

СимптомПричинаЧто делать
Внутренние имена не резолвятсяИх поймал fake-ipДобавить в fake-ip-filter
ping example.com показывает 198.18.x.xОжидаемое поведениеТак работает fake-ip; безвредно
Не достучаться до устройства в LAN по имени (NAS).local / .lan прошли через fake-ipДобавить "*.lan" и "*.local"
Приложение бесконечно крутитсяУ него свой резолвер, и его перехватилиПроверьте dns-hijack под TUN
Локальные сайты стали медленнееЗарубежный резолвер отправил CDN куда-то далекоЧерез nameserver-policy оставьте местные имена на местных резолверах
Стриминг определяет неверный регионРазрешение прошло локальноИспользуйте fake-ip, чтобы резолвил выходной узел
Не синхронизируются часыИмена NTP прошли через fake-ipДобавить "+.pool.ntp.org" и "time.*.com"
Мессенджер не входитКонкретному имени нужен настоящий IPДобавить "localhost.ptlogin2.qq.com"

Что должно попасть в fake-ip-filter

Принцип: любое имя, которому для работы нужен настоящий IP, обязано туда попасть.

Четыре категории, которые обязательно фильтруютсяЛокальные и внутренние*.lan, *.local, +.internal, ваши корпоративные доменыСинхронизация времени+.pool.ntp.org, time.*.com, ntp.*.comПроверки связности+.msftconnecttest.com, captive.apple.com — иначе система будет твердить «нет интернета»Обнаружение устройствимена сервисного обнаружения DLNA, AirPlay, принтеров и NAS

Как проверить, что конфигурация подействовала

Работает ли fake-ip?

nslookup google.com 127.0.0.1

Ответ вида 198.18.x.x означает, что fake-ip работает.

Идут ли внутренние имена к правильному резолверу?

nslookup gitlab.mycompany.com 127.0.0.1

Должен вернуться настоящий внутренний IP, а не 198.18.x.x. Фиктивный адрес означает, что fake-ip-filter задан неверно.

Сколько занимают запросы?

Переключите уровень логирования в debug, и вы увидите время и использованный сервер для каждого запроса. Много запросов дольше 200 мс означает неудачный выбор вышестоящих резолверов.

Коротко

  • По умолчанию используйте fake-ip; он быстрее, точнее и неуязвим для отравления
  • fake-ip-filter надо поддерживать: внутренние имена, NTP и проверки связности обязательны
  • У nameserver-policy наивысший приоритет — используйте его для точной маршрутизации DNS
  • Выключите собственный DoH браузера, иначе всё вышеперечисленное напрасно
  • default-nameserver принимает только обычные IP

Смотрите также: внутреннее устройство TUN и раздельное туннелирование на практике.


Смежные документы

Внутреннее устройство TUN — как работают вместе виртуальный адаптер, таблица маршрутизации и перехват DNS
DNS и сеть Внутреннее устройство TUN — как работают вместе виртуальный адаптер, таблица маршрутизации и перехват DNS

Что делает режим TUN с точки зрения пакета: создание виртуального адаптера, переписывание таблицы маршрутизации, перехват порта 53 и выбор между стеками gvisor, system и mixed.

2026-06-261248 слов3 мин чтения
Трафик, число соединений и пропускная способность — ищем корень проблемы на странице подключений
DNS и сеть Трафик, число соединений и пропускная способность — ищем корень проблемы на странице подключений

Что означает каждый столбец и как им пользоваться: поиск программы, съедающей трафик, причины взрывного роста числа соединений, где узкое место скорости и непрерывный мониторинг через API.

2026-05-201102 слов3 мин чтения