Туннель поднят, сайты открываются — а DNS-запросы, возможно, до сих пор гуляют открытым текстом, объявляя локальной сети каждый домен, который вы посещаете. Это и есть утечка DNS, и она перечёркивает добрую часть приватности прокси. Разбираемся, как Clash резолвит имена и как закрыть дыру.
Как возникает утечка
С одним лишь системным прокси браузеры обычно резолвят имена через прокси удалённо — терпимо. Но под TUN с небрежным DNS, или когда приложение зовёт системный резолвер напрямую, запросы уходят открытым UDP на резолвер провайдера (порт 53). Полезная нагрузка — в туннеле; о цели поездки вы прокричали заранее.
Ответ Clash: резолвить самому
В Mihomo встроен DNS-модуль с двумя режимами:
- fake-ip (рекомендуется): на вопрос «какой IP у google.com» ядро мгновенно отвечает адресом из служебного диапазона (198.18.x.x). Приложение подключается к фиктивному адресу, ядро по нему восстанавливает домен и маршрутизирует по доменным правилам. Настоящий резолв происходит на выходе прокси. Локальная сеть видит только фиктивные адреса — утечки нет, плюс сэкономлен круг ожидания.
- redir-host: возвращает настоящие IP. Совместимее с капризным софтом, но заметно «дырявее». Используйте только когда конкретное приложение всерьёз конфликтует с fake-ip.
Проверенный шаблон
В Merge-конфиг (как это делается), поверх DNS-секции подписки:
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
- "+.local"
- "+.msftconnecttest.com" # системные проверки сети хотят честных ответов
nameserver:
- https://1.1.1.1/dns-query
fallback:
- https://8.8.8.8/dns-query
fallback-filter:
geoip: true
Две идеи: резолверы — DoH (HTTPS-шифрование), так что даже запрос вне туннеля не открытый текст; а fake-ip-filter исключает локальные имена и системные проверки из фиктивных адресов, чтобы принтеры и порталы авторизации не сломались.
Последний штрих: DNS hijack под TUN
С включённым TUN держите «DNS hijack» на значении по умолчанию any:53: он силой заворачивает в ядро всякий оставшийся открытый запрос — от приложений, игнорирующих любые настройки. Сам TUN: инструкция.
Тест на утечки
- С включённым прокси запустите Extended-тест на dnsleaktest.com или browserleaks.com/dns;
- Все резолверы в результатах должны относиться к региону выходного узла или к вашему DoH-провайдеру;
- Резолвер вашего интернет-провайдера в списке = утечка. Проверьте, что fake-ip активен и hijack работает.
После смены DNS-настроек перезапустите ядро, чтобы сбросить кеш fake-ip. Смесь старых и новых соответствий делает пару сайтов недоступными и выглядит страшнее, чем есть.