你们会给 GEOIP 规则加上 no-resolve 吗?

2023-03-20 16:13:17 +08:00
 FaiChou

比如某域名经过这样的规则(暂不探讨客户端直接对 ip 发起请求情况):

rules:
  # 所有的规则都没有命中, 并且前面没有 IP-CIDR
  - IP-CIDR,203.205.0.0/16,DIRECT,no-resolve
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,PROXY

这样域名不会 dns 解析, 直接走到兜底的代理, 这样国内正常的请求如果没有被前面匹配到, 则会走节点.

如果将 no-resolve 去掉, 域名会 dns 解析成 ip, 如果是国内的正常网站, 则匹配到 GEOIP 会走直连; 如果是被墙的网站, 则会返回一个污染的 ip, 此 ip 不在国内, 会走兜底的代理.

所以理论上, GEOIP 是否添加 no-resolve 与兜底策略中是否走直连和代理有关系? (当然增加一次 dns 解析也不会影响很大的网络延迟)

综上, 有两种搭配的策略:

1. no-resolve 不解析 dns, 搭配兜底直连

  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,DIRECT

这样国内的请求会走直连没问题, 但国外的请求可能称为漏网之鱼导致无法访问. 而且再反过来看, 这样 GEOIP 就失去了意义, 去掉 GEOIP 这条规则是一样的.

2. 解析 dns, 搭配兜底代理

  - GEOIP,CN,DIRECT
  - MATCH,PROXY

这样进行了一次 dns 解析, 国内正常请求不会被误伤, 而国外的都会走代理, 看起来是完美解决?

所以你们都是怎么搭配的呢?

5986 次点击
所在节点    程序员
4 条回复
Cormic
2023-03-20 16:43:49 +08:00
不知道是谁先开始说什么 no-resolve 可以避免 dns 泄漏的,一堆人自己也没搞懂就瞎转。
geoip 搭配 no-resolve 是给那些直接发起 IP 请求的场景设计的,告诉代理工具不要去尝试反解析 IP 为域名。
按第一种配置方法,因为对没命中规则的域名不做解析,所以 geoip 规则根本不起作用(不解析,你连 IP 都没有,geoip 和你有什么关系),连国内域名都会交给兜底规则走代理,如果前置规则很少,几乎就等于全局代理了。这个自己试试就知道了。
loca1h0st
2023-03-20 16:50:52 +08:00
如果加上 no-resovle ,域名会跳过 GEOIP 这一段直接到 PROXY 阶段,此时浏览器会把域名信息给到本地的 socks5 代理,一同传到远端的服务器上进行解析和访问。

此时有些网站在海外部署了 CDN 的,会返回一个海外的 IP 地址结果,导致你本可以走国内的变成走国外了,同时,存在一定概率类似某些音乐视频网站因解析到海外节点导致版权问题没法播放。

看了你的博客的第一篇文章,fake-ip 这块也是讲述有点模糊,其实这块感兴趣可以重头看看原理和理论。

另外你再想想,DNS 污染是谁污染了什么网站?这些网站在国内是否有部署运营节点?
AoEiuV020CN
2023-03-20 17:40:13 +08:00
不会,我是 2 ,
我前面的分流规则不带 no-resolve 否则影响速度,
geoip 再 no-resolve 就白 geoip 了,
liu938651469
6 小时 41 分钟前
@loca1h0st https://en.clash.wiki/configuration/configuration-reference.html 官方配置文档有一段注释 # optional param "no-resolve" for IP rules (GEOIP, IP-CIDR, IP-CIDR6)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/925586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX