Clash dns
请教下 clash 的 dns 的配置,用下面这个配置持续出现报错说 dns 解析失败,是这些 dns 服务器全被封了?求一下能用的 DNS 或者正确的配置。
dns:
enable: true
listen: '0.0.0.0:53'
default-nameserver:
- 119.29.29.29
- 223.5.5.5
use-hosts: true
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
fallback:
- 'https://doh.dns.sb/dns-query'
- 'https://dns.cloudflare.com/dns-query'
- 'https://dns.twnic.tw/dns-query'
- 'tls://8.8.4.4:853'
- 'https://dns.alidns.com/dns-query'
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- '240.0.0.0/4'
- '0.0.0.0/32'
1
icaolei 317 天前 7
default-nameserver 是用来解析 nameserver 和 fallback 里面的域名的
nameserver 是用来解析规则没有命中(也就是墙内域名)的 fallback 是用来解析墙外域名的 fallback-filter 是用来直接让这些域名走 fallback 解析的(也就是放在这里的默认就是需要翻墙解析) 所以你这里的问题有: 1. 没有看到 enhanced-mode ,需要加上 2. fallback 里不应该出现墙内 DNS 3. geoip-code: CN 需要去掉 4. 建议把 use-hosts 也去掉(我不知道 use-hosts 是干嘛的) 5. 建议删除单引号(对 yaml 语法不太熟,不知道这样混用单引号会不会报错) 6. 建议多写点 DNS ( clash 的机制是同时向所有 DNS 发起解析请求,用返回最快那个,后续的直接丢弃) 给你一个我自己用的 DNS 配置参考: dns: enable: true listen: 127.0.0.1:53 ipv6: true enhanced-mode: fake-ip default-nameserver: - 223.5.5.5 - 8.8.8.8 - 8.8.4.4 - 1.0.0.1 - 119.29.29.29 nameserver: - https://223.6.6.6/dns-query - https://dns.alidns.com/dns-query - tls://dns.alidns.com:853 - https://dns.pub/dns-query - https://doh.pub/dns-query - tls://dot.pub:853 fallback: - https://1.0.0.1/dns-query - tls://one.one.one.one:853 - https://public.dns.iij.jp/dns-query - https://dns.google/dns-query - tls://dns.google:853 - https://dns.quad9.net/dns-query - tls://dns.quad9.net:853 - https://doh.sb/dns-query - tls://dot.sb:853 fallback-filter: geoip: true ipcidr: - 240.0.0.0/4 - 0.0.0.0/32 - 127.0.0.1/32 domain: - +.google.com - +.facebook.com - +.youtube.com - +.xn--ngstr-lra8j.com - +.google.cn - +.googleapis.cn |
2
xpn282 317 天前
不用搞那么复杂的,直接放弃 fallback 这种复杂而过时的东西,用下面 2 组设置就可以搞定了,并且实现国内外 dns 分流,思路就是:
nameserver-policy 用运营商 dns (让国内 cn 走运营商的 dns ) nameserver 用国外的 dns dns: enable: true ipv6: true enhanced-mode: redir-host listen: 0.0.0.0:7874 nameserver: - tls://8.8.4.4 - tls://208.67.222.222 nameserver-policy: geosite:cn,apple: - 运营商 dns |
3
shuiguomayi OP |
4
daisyfloor 317 天前
@xpn282 @shuiguomayi @icaolei
这是一个可用的简单配置: dns: enable: true prefer-h3: true listen: :1053 enhanced-mode: fake-ip fake-ip-range: 28.0.0.1/8 fake-ip-filter: - "*" - "+.lan" - "+.local" nameserver: - https://101.101.101.101/dns-query - https://1.1.1.1/dns-query nameserver-policy: "geosite:cn,private": - https://223.5.5.5/dns-query#h3=true - https://223.6.6.6/dns-query#h3=true 解释一下: - IPv6 我之前一直是 true ,最近打算关掉试一试,因为看到有说法是这个打开后有时候会影响上网体验。待验证。 - prefer-h3: true 要打开,这个对于支持 http3 的 Doh 会启动并发查询,如果对方支持,速度更快,那就起飞 - nameserver 部分没有开强制 h3 ,原因是,这部分请求会出去,而出国的 udp 通常可能体验不好,默认并发即可。 - policy 部分,增加了#h3=true ,让国内的域名解析强制开启 http3 的 Doh (目前阿里是支持的),理论上可以起飞。 - 去掉了 default-nameserver ,因为下面的请求地址用的都是 ip ,不是域名,不需要再解析了。 另外就是,enhanced-mode 这部分到底怎么用我还没搞清楚,fake-ip 部分是我最近加上去的。我不是在网关上用,就是客户端上用。所以我不知道有没有用。或者说有没有负作用。目前也是测试待验证。 以上。 |
5
Nin 317 天前
dns:
enable: true ipv6: true listen: 0.0.0.0:5453 enhanced-mode: fake-ip # or redir-host fake-ip-range: 198.18.0.1/16 fake-ip-filter: - '+.lan' - '+.local' use-hosts: true nameserver: - tcp://127.0.0.1:1054 我选择不让它处理,交给 mosdns |
6
icaolei 317 天前
@xpn282 #2 我看了下 clash.meta 的文档,解析流程似乎和原版 clash 不一致。
clash.meta 的 nameserver 和 fallback 是并发查询的,原版 clash 是只把 fallback-filter 命中了的(墙外的)交给 fallback 解析,没有命中的(墙内的)交给 nameserver 解析。 相当于用 fallback-filter 来分流。 按 clash.meta 这个解析流程: nameserver-policy 相当于原版的 fallback-filter ,用于分流,但在这里加入了命中时(墙内的)交给哪个 DNS 解析这个逻辑。也可以延申出更多更个性化的 DNS 分流,而不像 fallback-filter 一样,只能区分是否要用 fallback 解析。 nameserver 相当于原版的 fallback ,在分流没有命中时(墙外的),交给这些 DNS 来解析。 结论就是:如果使用的是 clash.meta 内核的话,确实可以不配置 fallback 。 |
8
icaolei 316 天前
@daisyfloor #4 这个配置可以。我现在也是用的 clash.meta 了,看到文档描述的解析流程,确实没有必要上 fallback 了。
我准备加上 ipv6: true 和 default-nameserver 两个配置,再加上我那一堆 DNS 来用了。 - 加上 ipv6 是因为我比较喜欢 ipv6 ,毕竟我家宽带没有独立 ipv4 公网 ip ,但 ipv6 是真公网。 - 加上 default-nameserver 和那一堆 DNS 是因为我想增加一点容错,除了纯 IP 的 DNS 外,可以配置一些域名的 DNS ,多配点没关系,就怕少了万一除啥问题导致网出问题。 |
9
xpn282 316 天前
对啊,用 Meta 内核,直接 nameserver-policy 和 nameserver 对 dns 分流了,简单明了
我是用 OpenClash Meta ,IPv6 我也一直都是全开的,没一点问题,要使用 ipv6 就要让 clash 接管 ipv6 的所有流量。那些开了 v6 ,但是只让 clash 接管 v4 而已,出国绝对会出问题 请问现在的 Meta 内核文档在哪里找?之前文档被作者删除了 |
10
daisyfloor 316 天前
@icaolei @xpn282
有个地方我可能没有说明白,ipv6: true 有两处,一个是全局的,一个是 dns 项里的。 dns 里的默认是 true 。全局的好像也是,而且一般 app 会在 GUI 里有开关控制,它们的区别是: -全局的 :是否处理 ipv6 流量 -dns 里的 :是否丢弃 AAAA 这 2 个任意一个改为 false ,就会无法使用 ipv6 进行网络访问,可以通过 https://ipw.cn/测试。这个根据自己的需求来。如果你没有 ipv6 就建议关掉。 有 ipv6 的话想用就开,比如有些网络电视用的是 ipv6 地址。 回到 DNS 优化的问题: 除了 DNS 配置项目问题,规则才是关键。因为 dns 优化的核心是要避免本地进行“不必要的 DNS 解析”,使用 Fake-ip 就是一种策略,还有一个策略就是要在规则里,尽量避免使用 IP 规则,如果有,也建议放在排序的后面,并且加上 no-resolve 。 这样,就避免(减少)了一次或多次为了匹配规则而进行的 DNS 请求。 |
11
daisyfloor 316 天前
刚知道 google 的 Doh 可以这样配置:
https://8.8.8.8/dns-query 那么就完全不需要 default-nameserver 了。 |
12
shuiguomayi OP @icaolei ,@xpn282 请问,你用的 clash.meta 是 https://github.com/clash-verge-rev/clash-verge-rev 这个项目么?我目前在用 clash-linux-armv7-v1.18.0 ,原版仓库应该被删除了,我这是某个 github 上面的 fork 项目里找来的,不知道这个是否支持 meta 内核。
|
13
xpn282 315 天前
@shuiguomayi 这个我也不是很清楚,我是在 OpenWrt 上使用 OpenClash ,OpenClash 可以使用 Meta 内核
|
14
icaolei 315 天前
|
15
icaolei 315 天前
@shuiguomayi #12 clash-verge 只是一个基于 clash 内核和 clash.meta 内核的 GUI 客户端而已,目前 clash-verge 使用的是 clash.meta ( mihomo v1.18.1 )内核。
你说的 clash-linux-armv7-v1.18.0 我理解也是一个内核? 要找 clash.meta 内核去 https://github.com/MetaCubeX/mihomo/tree/Meta PC 三大系统的 GUI 客户端去 https://github.com/clash-verge-rev/clash-verge-rev 安卓的 GUI 客户端去 https://github.com/MetaCubeX/ClashMetaForAndroid |
16
shuiguomayi OP @icaolei 请收下我诚挚的感谢。
|
17
shuiguomayi OP @icaolei 请教用 ipv6 是有什么使用场景?
|
18
icaolei 314 天前
@shuiguomayi #17 本地和代理服务器均有 IPv6 时,可通过 IPv6 通信,没什么特殊的。现在大部分服务器都是至少有 IPv4 ,一部分是双栈,极少数只提供 IPv6 。
如果服务器只有 IPv6 ,那本地必须有 IPv6 ,并且在 clash 中配置好 IPv6 才可以代理成功。 (我还发现有些时候通过 IPv6 翻墙时走的路由不太一样,也许会没那么拥挤?瞎猜的) |
19
BABYMETAL 313 天前
折腾很久看完文档的表示同意 9 楼说法,直接设置 nameserver-policy 和 nameserver 对 dns 分流,我是喜欢 nameserver-policy 解析 gfw 域名,剩下域名走 nameserver ,简洁高效
|
20
daisyfloor 311 天前 2
经过我多天测试,在我这边的网络环境下,需要关掉 ipv6: true 和 #h3=true
上面两个任意一个打开,都会造成国内 DNS 解析缓慢。现象就是微信打开后,连接中..-> 收取中.. 要转很久很久。 全部关闭后。秒开。 prefer-h3: true 这一项还是打开了。因为有可能别的 isp 网络环境下,dns over HTTP3 会比 doH 要快。这选 true 那么下面的 dns 查询就是 dns over HTTP3 和 doH 并发 谁快用谁。我之前强制 #h3=true 就不行了。 最终配置如下: dns: enable: true prefer-h3: true listen: :1053 enhanced-mode: fake-ip fake-ip-range: 28.0.0.1/8 fake-ip-filter: - "*" - "+.lan" - "+.local" nameserver: - https://8.8.8.8/dns-query - https://1.1.1.1/dns-query nameserver-policy: "geosite:cn,private": - https://223.5.5.5/dns-query - https://223.6.6.6/dns-query @icaolei @shuiguomayi @Nin @xpn282 @BABYMETAL |
23
815169876 167 天前
@icaolei 就是你前面说的这部分
nameserver-policy 相当于原版的 fallback-filter ,用于分流,但在这里加入了命中时(墙内的)交给哪个 DNS 解析这个逻辑。也可以延申出更多更个性化的 DNS 分流,而不像 fallback-filter 一样,只能区分是否要用 fallback 解析。 nameserver 相当于原版的 fallback ,在分流没有命中时(墙外的),交给这些 DNS 来解析。 |
24
icaolei 166 天前 via Android
|
25
borsalinolllll 114 天前 via Android
玛德要是早点搜到这一篇帖子就好了,几位大神已经讲透了
|