Open transformer10015 opened 1 year ago
上述配置文件访问国内网站所需时间 在fake-ip-filter中加入'+.*'使其退化为对所有dns请求返回真实ip:
经过尝试,发现开启windows的智能多宿主名称解析时,网页加载速度是正常的。上述情况出现的条件是:智能多宿主名称解析关闭的同时fake-ip模式开启。我不明白这是什么原因。
这个问题仍然存在。
根据sing-box.tun在windows中strict-route
用于设置防火墙规则禁止多宿主解析。
stack: system
时,如果strict-route: false
,windows会使用智能多宿主名称解析
,反常的是tun不能劫持掉这个dns,导致DNS泄露,这时可以修改物理网卡的DNS服务器,指定为meta tun的地址,——该地址在singbox是由tun.inet4_address
和 tun.inet6_address
指定的,而在meta中v4地址是由dns.fake-ip-range
所指定。
如果strict-route: true
,则会导致在解析完域名之后很长时间的延迟,在singbox的issue处有人提过这一问题,该问题已被关闭。
因此,这仍然是上游sing-box的问题,且至今尚未得到解决。
总结:
智能多宿主域名解析
+ strict-route
为 true + fake-ip
智能多宿主域名解析
+ strict-route
为 false 不能解决智能多宿主的问题,该选项只限制了多网卡的 ipv4 查询,ipv6的查询仍然会泄露;而 strict-route
可以严格限制 DNS 劫持经过 meta TUN。因此建议不改变组策略的选项,启用 strict-route
。为什么fake-ip
会导致网页加载缓慢,而 redir-host
不会?通过查看网络响应,发现问题在于 dns loopup 花了很长时间,怀疑是前两者互相作用,导致 fake-ip 网段发生了 dns 回环。智能多宿主域名解析
+ strict-route
为 true + fake-ip/redir-host 模式。+1, same issue
不知道为什么在我的电脑上只有这种配置是有效的:允许智能多宿主域名解析+strict-route+fake-ip(但把fallback-filter设置为'+.*')
此时绝大多数域名解析正常,但仍有少量域名(如github.com
)解析时会超时,在WSL2下使用nslookup可以看到报错;; communications error to 172.21.48.1#53: timed out
,直接在windows下nslookup正常但是使用curl时一样会有一个将近12秒的延迟。(windows下安装Clash Verge Rev,防火墙设置已允许WSL访问Windows网络)
+1 same issue
复现了,同样的情况
这个问题有修复计划吗,谢谢
同时关闭智能多宿主名称解析并开启 strict route 会导致某些应用的 DNS 查询异常,这个是预期副作用,不需要修复,除非有比 WFP 屏蔽除自身外的 53 端口流量更好的方案。要么就关闭智能多宿主名称解析并关闭 strict route(AAAA 一样会漏),要么就开启智能多宿主名称解析并开启 strict route。
同时关闭智能多宿主名称解析并开启 strict route 会导致某些应用的 DNS 查询异常,这个是预期副作用,不需要修复,除非有比 WFP 屏蔽除自身外的 53 端口流量更好的方案。要么就关闭智能多宿主名称解析并关闭 strict route(AAAA 一样会漏),要么就开启智能多宿主名称解析并开启 strict route。
好的,感谢您的回复,按照您的建议,以下两种方案:
关闭智能多宿主名称解析并关闭 strict route
,v6会漏开启智能多宿主名称解析并开启 strict route
,这个方案Windows会漏
也就是说目前没有完美的解决方案吗?
谢谢您的回复。开启 strict route 还会漏那就是通过其他方式漏或者你自己配置文件的问题了,strict route 只为了处理通过智能多宿主名称解析方式的泄漏。
开启智能多宿主名称解析并开启 strict route
,这个方案Windows会漏
同时关闭智能多宿主名称解析并开启 strict route 会导致某些应用的 DNS 查询异常,这个是预期副作用,不需要修复,除非有比 WFP 屏蔽除自身外的 53 端口流量更好的方案。要么就关闭智能多宿主名称解析并关闭 strict route(AAAA 一样会漏),要么就开启智能多宿主名称解析并开启 strict route。
好的,感谢您的回复,按照您的建议,以下两种方案:
关闭智能多宿主名称解析并关闭 strict route
,v6会漏开启智能多宿主名称解析并开启 strict route
,这个方案Windows会漏 也就是说目前没有完美的解决方案吗? 谢谢您的回复。
Windows会漏是什么意思?能否举例说明一下 我这边测试strict和多宿主同时开没有泄露问题
我的解决方案
windows开启智能多宿主名称解析
组策略-计算机配置-管理模板-网络-DNS客户端-禁用智能多宿主名称解析-勾选已禁用/未配置
clash开启tun.strict-route = true, 由clash自动配置防火墙避免dns请求泄露
觉得 WFP 拦截侵入性太大的话也可以自己在开启 tun 时把所有网卡的 dns 都改成 tun 网卡的(或者公网的?),关闭 tun 时再改回去,不过这样就更脏了
我的解决方案
- windows开启智能多宿主名称解析
组策略-计算机配置-管理模板-网络-DNS客户端-禁用智能多宿主名称解析-勾选已禁用/未配置
- clash开启tun.strict-route = true, 由clash自动配置防火墙避免dns请求泄露
感谢,亲测可用
复现+1,如果禁用智能多宿主名称解析就必须同步关闭严格路由,否则域名解析极其缓慢。
复现+1,如果禁用智能多宿主名称解析就必须同步关闭严格路由,否则域名解析极其缓慢。
这是预期问题,请不要在这里抱怨。如果你有更好的没有侵入性的方案可以去实现一下,否则就只能是像现在这样。该功能没有默认开启。
复现+1,如果禁用智能多宿主名称解析就必须同步关闭严格路由,否则域名解析极其缓慢。
这是预期问题,请不要在这里抱怨。如果你有更好的没有侵入性的方案可以去实现一下,否则就只能是像现在这样。该功能没有默认开启。
倒不是抱怨,只是发现了这个问题找到这个issue顺手回报一下,个人建议是可以在示例配置或文档中备注一下这两个功能的关系。
Verify steps
Clash version
v1.16.0 windows amd64 with go1.21.1
What OS are you seeing the problem on?
windows 10
Clash config
除dns策略外全部选择direct
Clash log
No response
Description
开启strict route时,网页加载缓慢。利用wireshark抓包发现当刷新网页时,没有立刻发送dns请求。