Clash DNS的运行特点
本篇文章着重记录Clash.meta/mihomo的DNS运行特点(如DNS缓存状况、fallback机制等),作为备忘录使用。
乐观缓存
- Clash的DNS拥有乐观缓存机制,测试时Clash提供了一个过期了24个小时的记录,其TTL为1(1秒),并且在提供过期记录之后触发了DNS记录更新,在下次解析时则为没过期的内容。
- 根据配置文件,Clash应该没有持久化保存DNS缓存的机制,即在Clash重启或关闭后缓存就会丢失。
- 乐观缓存目前是无法关闭的。
Fake-ip
- 使用Fake-ip响应DNS解析时Clash不会在日志中显示解析记录。
- 有些互联网连接不支持使用Fake-ip,所以需要利用fake-ip-filter字段将这些连接切换为普通的真ip模式(redir-host)。
Fallback
DNS的fallback组和nameserver组通常是并发解析的,即同时使用这两个组解析域名,这是为了防止DNS污染,这也是使用Clash时有DNS泄露的原因,并不是BUG或漏洞,这是正常现象。
1 | fallback-filter: |
fallback-filter
- 两组解析时,根据
fallback-filter
的内容决定选择哪一个组的结果。比如:在geoip-code
为CN时,检查nameserver
结果的IP地址是否属于CN,如果不属于则采用fallback
组的结果,同理nameserver
结果如果在ipcidr
字段中也会采用fallback
组的结果。 fallback-filter
的geosite
字段已经被弃用,弃用的警告会在Clash启动时输出到日志中并且还建议用户改用nameserver-policy。- 与
ipcidr
和geoip-code
不同,domain
和geosite
不会等到两个组都解析出结果时才起作用,而是直接交给fallback
组解析,完全不使用nameserver
。
在连接页面中所有的连接目标都是IP,而不是域名
Clash通过DNS解析记录推测用户访问的网站。如果DNS配置有误,客户端的DNS请求绕过了Clash的DNS就会导致这个问题。可以通过开启域名嗅探解决。
1 | sniffer: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 异域茶壶的神秘庄园!
评论