clash
clash copied to clipboard
被shortcuts给REJECT掉的UDP通信却还是会触发一次DNS查询
Verify steps
- [X] 如果你可以自己 debug 并解决的话,提交 PR 吧 Is this something you can debug and fix? Send a pull request! Bug fixes and documentation fixes are welcome.
- [X] 我已经在 Issue Tracker 中找过我要提出的问题 I have searched on the issue tracker for a related issue.
- [X] 我已经使用 dev 分支版本测试过,问题依旧存在 I have tested using the dev branch, and the issue still exists.
- [X] 我已经仔细看过 Documentation 并无法自行解决问题 I have read the documentation and was unable to solve the issue.
- [X] 这是 Clash 核心的问题,并非我所使用的 Clash 衍生版本(如 OpenClash、KoolClash 等)的特定问题 This is an issue of the Clash core per se, not to the derivatives of Clash, like OpenClash or KoolClash.
Clash version
Premium 2022.06.19
What OS are you seeing the problem on?
No response
Clash config
script:
shortcuts:
quic: network == 'udp' and dst_port == 443
rules:
- SCRIPT,quic,REJECT
Clash log
No response
Description
被REJECT掉的UDP通信却还是触发了DNS查询,这样会通过DNS暴露正在访问的网站,本来想通过只匹配域名规则不用IP规则来避免的,QUIC也都REJECT掉了,结果还是破功了,有什么解决办法吗?按理说这是被REJECT掉的UDP,不需要查询真实IP地址的。
使用 no-resolve
rules:
- SCRIPT,quic,REJECT,no-resolve
使用 no-resolve
rules: - SCRIPT,quic,REJECT,no-resolve
没加no-resolve之前是所有经过了script规则的都触发了dns查询,加了之后,普通的tcp连接确实不会有dns查询了,但是被这条规则reject掉的udp通信还是会有一次dns查询,100%复现
dns:
enable: true
ipv6: true
enhanced-mode: fake-ip
nameserver:
- 114.114.114.114
rules:
- GEOIP,LAN,DIRECT,no-resolve
- SCRIPT,QUIC,REJECT,no-resolve
- GEOIP,CN,DIRECT
- MATCH,PROXY
script:
shortcuts:
QUIC: network == 'udp' and dst_port == 443
因为浏览器不是每次都有quic,不好复现,可以用nslookup模拟一个目标端口为443的udp通信,nslookup -port=443 google.com dns.google
,可以在日志中看到dns.google被REJECT,但是抓包会发现还是向114.114.114.114查询了dns.google的地址
使用 no-resolve
rules: - SCRIPT,quic,REJECT,no-resolve
没加no-resolve之前是所有经过了script规则的都触发了dns查询,加了之后,普通的tcp连接确实不会有dns查询了,但是被这条规则reject掉的udp通信还是会有一次dns查询,100%复现
我也碰到了同样的问题。我是用了adguard home作为clash的上游DNS,通过查看adguard home的日志来判断某个域名有没有触发DNS解析。
我的规则里YouTube的域名在不加SCRIPT,quic,REJECT
这条规则时,都是远端解析,在adguard home的日志里看不到YouTube的域名。
加上SCRIPT,quic,REJECT
之后,其他配置都不改变的情况下,adguard home的日志里面能看到YouTube的域名,应该可以判断出是这条规则SCRIPT,quic,REJECT
触发了DNS解析。
加上no-resolve
变成SCRIPT,quic,REJECT,no-resolve
之后,同时看clash和adguard home的日志可以发现,YouTube的TCP连接在adguard home的日志里看不到了,没有触发DNS解析,和不加SCRIPT,quic,REJECT
规则时一样,但是YouTube的UDP连接依旧会在adguard home的日志里面看到,应该被REJECT掉的UDP连接触发了DNS解析
实测观察下来,只要经过shortcut的,不管是reject还是匹配其他规则,都会触发dns查询,和规则是否包含ip无关,和是否udp无关。
实测观察下来,只要经过shortcut的,不管是reject还是匹配其他规则,都会触发dns查询,和规则是否包含ip无关,和是否udp无关。
shortcut引起的dns查询用no-resolve就能解决了,但是被reject的udp通信引发的dns查询还是没办法
似乎在最新版里面这个问题修正了Fix: fakeip udp should not replace with another ip)
似乎在最新版里面这个问题修正了Fix: fakeip udp should not replace with another ip)
并没有
用了7月7日的premium版本,我本地已经无法再现这个问题了
似乎在最新版里面这个问题修正了Fix: fakeip udp should not replace with another ip)
并没有
用了7月7日的premium版本,我本地已经无法再现这个问题了
我还是100%复现啊😯,你是抓包看了确定被reject掉的udp都不会触发dns查询吗
似乎在最新版里面这个问题修正了Fix: fakeip udp should not replace with another ip)
并没有
用了7月7日的premium版本,我本地已经无法再现这个问题了
我还是100%复现啊hushed,你是抓包看了确定被reject掉的udp都不会触发dns查询吗 没有抓包,就是看debug日志:)
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days