目前内建的 dns 采用的是并发解析,得到非 CN 结果后取 fallback 的解析。感觉有两点不太好,第一是 maxmind 的库不够精准,尤其对于一些国人服务商,归属是 CN,但实际上服务器在国外;第二就是无为增加并发请求?
个人的建议是,增加 overture 那样的白名单、黑名单,白名单可以自行设置为 dnsmasq-china-list,遇到这些域名,直接用 nameserver 的设置解析,黑名单可以自行设置为 gfwlist,遇到这些,则直接采用 fallback 的设置解析。
这样似乎更为高效一些,也能有效避免一些误解析。
有了这个可以直接抛弃 dnsmasq 和 overture 了 :)
不是这个哦
overture 的 PrimaryDNS 相当于 clash 的 nameserver, AlternativeDNS 相当于 fallback
"DomainFile": {
"Primary": "./domain_primary_sample",
"Alternative": "./domain_alternative_sample"
},
domain_primary_sample 就是我说的白名单,一般是 dnsmasq-china-list ,这里面的域名,只用 Primary 解析,domain_alternative_sample 对应黑名单,一般是 gfwlist ,只用 Alternative 解析。不需要根据解析出来的 GEO 是选取结果。
其实你可以在clash上游接overtrue,应该效果还可以。
但是我现在就这么干的,好像还是有点问题,偶尔浏览器还是会报告找不到域名,我还没查清楚。
其实你可以在clash上游接overtrue,应该效果还可以。
但是我现在就这么干的,好像还是有点问题,偶尔浏览器还是会报告找不到域名,我还没查清楚。
我猜是死循环了?overture 国外 dns 的解析是不是回到 clash? 还是通过其他方式出去?
可以考虑引入 Surge force-remote-dns 的概念(Clash 可以实现成 force-fallback-dns作为黑名单,force_nameserver-dns 作为白名单),将 Clash 的域名规则组变成 DNS 的黑白名单而不是引入新的额外列表。
@SukkaW 这两个是不一样的,举个最简单的例子
Rule:
- IP-CIDR,127.0.0.1/32,DIRECT # 触发 ip 解析
- DOMAIN,a.com,Proxy,force-fallback-dns # 已经解析完 IP 了,不会再解析一次
@Dreamacro
并不是按顺序解析域名规则作为 DNS 解析,而是通过 force-fallback-dns 和 force_nameserver-dns 作为扩展字段、在启动 Clash 后将带有这些字段的域名规则单独解析成一个 DNS 解析的黑白名单,当 Clash DNS 收到域名解析请求时先在列表中进行域名比对,然后选择是否直接使用 nameserver 或者 fallback,从而避免为了 DNS 额外维护一份列表。
换句话说,新增两个字段、并让 Clash 把配置文件解析成 DNS 黑白名单 和 代理规则组 两份规则列表,分别用于决定 Clash DNS 的解析使用哪一组上游、和流量的分流。
@SukkaW 如果是这样就不应该放在 Rule 里,就像 Final 一样,他是一个 “不明确” 的操作
@Dreamacro
我设想的就是:
force-fallback-dns 和 force_nameserver-dns 字段的域名规则分别解析成一个「黑名单」和一个「白名单」nameserver 的上游 DNS 返回的结果、同理匹配到「黑名单」的直接采用 fallback 里的上游 DNS 返回的结果;只有都没有匹配到才 FINAL 到 Clash 现在使用的判断机制。就像
Final一样,他是一个 “不明确” 的操作
在逻辑上说的确应该分开,但是和域名规则组放在一起(或者说直接扩展 域名规则组)可以 简化 配置文件编写。
分开比较合适,clash 的 dns 还能当成一个无污染的 dns 服务
Rules 现在实现方式是按条测试, 匹配就返回。在这之中插入 DNS 的规则会比较令人困惑。因为他只是在 YAML 解析前写在一起,解析后就是分开的了,和 Rules 里的其他条目没有顺序逻辑关系。还是分开比较合适。
另外@soffchen overture 最近也稳定了不少
Rules 现在实现方式是按条测试, 匹配就返回。在这之中插入 DNS 的规则会比较令人困惑。因为他只是在 YAML 解析前写在一起,解析后就是分开的了,和 Rules 里的其他条目没有顺序逻辑关系。还是分开比较合适。
另外@soffchen overture 最近也稳定了不少
嗯,我提这个需求也就是为了覆盖 overture 的功能,少用一个软件。
也许现在 hosts 和 filter 可以满足了
Most helpful comment
@Dreamacro
并不是按顺序解析域名规则作为 DNS 解析,而是通过
force-fallback-dns和force_nameserver-dns作为扩展字段、在启动 Clash 后将带有这些字段的域名规则单独解析成一个 DNS 解析的黑白名单,当 Clash DNS 收到域名解析请求时先在列表中进行域名比对,然后选择是否直接使用nameserver或者fallback,从而避免为了 DNS 额外维护一份列表。换句话说,新增两个字段、并让 Clash 把配置文件解析成 DNS 黑白名单 和 代理规则组 两份规则列表,分别用于决定 Clash DNS 的解析使用哪一组上游、和流量的分流。