clash 的 rule-set 匹配不生效

155 天前
 zwyyy456

我使用的是基于 clash.meta 内核的 tpclash ,配置文件是基于 rule-set 编写的,rules 部分的内容如下:

rules:
  # 开始匹配规则

  ## 直连
  - RULE-SET,cndirect,DIRECT
  - RULE-SET,direct,DIRECT
  - RULE-SET,applecn,DIRECT
  - RULE-SET,applications,DIRECT

  - RULE-SET,mtracker,mtracker
  - RULE-SET,mpt,mpt

  ## geo 直连
  - GEOSITE,cn,DIRECT
  - GEOIP, cn, DIRECT

  - RULE-SET,mdirect,mdirect
  - RULE-SET,mproxy,mproxy

  # 代理匹配
  - RULE-SET,gscholar,gscholar
  - RULE-SET,openai,openai
  - RULE-SET,microsoft,microsoft
  - RULE-SET,youtube,youtube
  - RULE-SET,google,google
  - RULE-SET,github,github
  - RULE-SET,apple,apple
  - RULE-SET,bili_us,bilius
  - RULE-SET,spotify,spotify
  - RULE-SET,telegram,telegram
  - RULE-SET,emby,emby
  - RULE-SET,gfw,PROXY
  - GEOSITE,geolocation-!cn,PROXY
  - RULE-SET,reject,REJECT

  - SRC-IP-CIDR,192.168.6.155/32,DIRECT
  - MATCH,PROXY

但是今天我发现,当我的 mac 用浏览器访问 google 时,并没有匹配到 google 对应的 rule-set ,而是匹配到了最后的 MATCH ,访问 youtube 也没有匹配到 youtube 对应的 rule-set ,不知道有没有 V 友碰到过类似的问题?

Firefox 和 Edge 浏览器都测试过了,均关闭了安全 DNS 功能。

webui 中查看连接时,感觉就像域名的访问请求被提前出来了 ip ,clash 只接管了 ip 的请求。

1202 次点击
所在节点    问与答
14 条回复
devswork
155 天前
把 geoip 这一行放倒数第二行
zwyyy456
155 天前
@devswork 似乎可以了,能请您解释一下原因吗?
zwyyy456
155 天前
@zwyyy456 又不行了。。。
565656
155 天前
用- DOMAIN-KEYWORD,google,google 试试看,我用的是 parser 里面没问题
EEXII
155 天前
用的 rule-providers?
malagebidi
155 天前
我的 clash.meta 配置没使用 RULE-SET ,直接 geosite 和 geoip 就行了。
devswork
155 天前
你的 DNS 配置是什么? clash 上做了劫持了吗,如果你的 DNS 指向不是到 clash 上,而是到了别的 DNS ,那么浏览器会从你设定的 DNS 上直接解析出 IP ,然后对 IP 发起链接,这些链接又会经过 clash (因为 IP 非 CN 地区),对于 clash 角度而言,你的这些 RULE 没什么用,因为到 clash 这里已经都是 IP 的链接了,而不是基于域名,因为 DNS 不是经过 clash 。

你可以浏览器上安装 SwitchyOmega ,然后在 SO 里把所有的类型的都指向到你的 clash 上,看看是否正常( SO 会接管所有请求包括 DNS 查询)。
zwyyy456
155 天前
@devswork clash 上是有做 dns 劫持的,就是有时候日志中能看到是匹配了域名的请求,有时候又变成了全都是 ip 。
zwyyy456
155 天前
@EEXII 是的 rule-providers ,rule-providers 应该是正确的。
zwyyy456
155 天前
@devswork

dns 配置如下
```yaml
dns:
enable: true # 关闭将使用系统 DNS
prefer-h3: true # 开启 DoH 支持 HTTP/3 ,将并发尝试
listen: 0.0.0.0:1053 # 开启 DNS 服务器监听
ipv6: false # 如果需要 ipv6 设置为 true
default-nameserver:
# - 192.168.6.1 fakeip 模式不使用内网地址作为 dns
# defautl dns 需要是纯 IP
- https://223.5.5.5/dns-query
- https://1.12.12.12/dns-query
# - https://doh.pub/dns-query
# - 223.5.5.5
# - 1.12.12.12
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter: #这里可以填写不使用 fakeip 的域名
- "*.jd.com"
```
zwyyy456
155 天前
还发现了一个现象,我在家里的 windows 的笔记本上 ping tracker.x.com 时,返回的是 fakeip 生成的一个虚假 ip ,而在实验室上 ping tracker.x.com 时,返回的是 tracker.x.com 对应的真实 ip ;
实验室和家里都有一台运行 tpclash 的 n1 当旁路由,win 和 mac 的网关分别指向了这两台 n1 。
zwyyy456
155 天前
家里的主路由是刷了 padavan 的小米,实验室的主路由是刷了 openwrt 的 360t7 ,windows 和 mac 都是网关指向 n1 的 ip ,dns 都是填的 223.5.5.5 和 1.1.1.1 ;根据 tpclash 原先作者的说法,这里这个 dns 只要不填 n1 本身的 ip 就行
,所有的 dns 解析都会被运行在 n1 上的 tpclash 劫持。
israinbow
154 天前
geoip 服务挂了, 上次集体跑路的时候一起跑路了, 这条规则删了吧.
zwyyy456
154 天前
直接将主路由重置了,现在看起来正常了。。。

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

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

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

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

© 2021 V2EX