规则要按域名匹配,前提是客户端能拿到"这条连接对应的域名是什么"。在没有开启特殊处理的情况下,系统可能只把解析后的 IP 交给 Clash,域名信息已经丢失,规则自然无法按域名匹配——这就是为什么 DNS 配置对规则的准确度至关重要。
enhanced-mode:两种模式的本质区别
| 模式 | 原理 | 取舍 |
|---|---|---|
| fake-ip | 先返回一个虚拟 IP 给应用,连接建立时再从虚拟 IP 反查出真实域名用于规则匹配 | 速度快、能更早拿到域名信息;少数依赖真实 IP 返回值的场景可能需要例外处理 |
| redir-host | 直接返回真实解析结果,靠流量层面的域名嗅探或重定向拿到域名 | 兼容性更好;但依赖真实 DNS 查询,速度与隐私性都不如 fake-ip |
目前主流推荐是 fake-ip。它的兼容性问题主要出现在少数依赖"DNS 查询结果必须是真实 IP"的局域网协议上(比如某些设备发现、投屏协议),遇到这类问题时,把对应域名加入 fake-ip-filter 例外即可,不需要为了个别场景放弃 fake-ip 整体的优势。
一份可直接使用的 DNS 配置
dns: enable: true ipv6: false enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 fake-ip-filter: - '*.lan' # 局域网设备域名走真实解析,避免发现协议异常 - '*.local' default-nameserver: [223.5.5.5, 119.29.29.29] # 解析 DoH/DoT 域名本身用的基础 DNS nameserver: ['https://doh.pub/dns-query', 'tls://dot.pub:853'] fallback: ['https://1.1.1.1/dns-query', 'https://dns.google/dns-query'] fallback-filter: geoip: true geoip-code: CN # 结果非中国大陆 IP 时才采用 fallback 的解析结果
DoH / DoT 解决的是什么问题
传统 DNS 查询是明文的 UDP 报文,运营商或中间网络设备能看到你在查询什么域名,也有条件对查询结果做篡改(也就是常说的"DNS 污染")。DoH(DNS over HTTPS)和 DoT(DNS over TLS)把查询过程加密,防止被中间网络设备窥探或篡改。
- nameserver 建议优先配置 DoH/DoT 地址,减少查询过程被污染的概率。
- default-nameserver 必须是传统 DNS(IP 直连),因为 DoH/DoT 服务器本身也是一个域名,需要先用它解析出 IP,否则会陷入"解析 DoH 域名又需要 DNS"的循环。
fallback-filter:精准防污染
fallback-filter 的逻辑是:先用 nameserver 里的服务器解析,如果解析结果的 IP 被判定为不在指定地区(比如开启 geoip-code: CN 后判定不是中国大陆 IP),则改用 fallback 里配置的服务器重新解析,取 fallback 的结果。
这个机制主要用于避免"污染的 DNS 服务器返回了错误的国内 IP,而真实网站其实在境外"的情况。开启这项配置后,即使主 DNS 被污染返回了错误结果,也能自动纠正为境外 DNS 解析的正确结果。
常见排查思路
- 某个网站规则明明写对了但没生效?先检查是不是 enhanced-mode 没开,或者 DNS 配置整体没生效(比如系统 DNS 缓存没清)。
- 访问某网站间歇性失败,像是被劫持?大概率是 DNS 污染,尝试单独测试 nameserver 与 fallback 两组服务器的解析结果是否一致。
- 局域网设备(NAS、智能音箱)发现异常?优先检查 fake-ip-filter 是否已经把对应域名加入例外。
DNS 配置很少需要频繁改动——一旦按照这套逻辑配好,大多数"访问异常"问题在源头就已经被规避掉了。