我的理解是,clash-premium 或 clash.meta 在作为单臂路由时,处理的都是 IP 包,所以配置文件里的域名规则都失效,只能依靠 GEOIP 库判断所请求的 IP 是哪里再选择分流,请指教。
1
defaw 279 天前
不是,clash 保存了你局域网里所有它能拦截到的明文 dns 查询的结果,它会对比 ip 去反查出域名,当然如果一个 ip 对应了多个域名(比如不同的域名用了同一家 cdn),那就只能退化到 geoip 去判断了。你只要把需要代理的设备的 dns 设置成 clash 的 ip ,clash 在大部分情况下就能通过域名分流。
|
2
shuiguomayi OP @defaw 之前没在文档里找到这个知识点。朋友是看代码的? 多谢
|
3
dbak 278 天前
要开启 tun 和 clash 的 dns 功能并且劫持 53 端口的请求,否则他无法获得 dns 和 ip 的对应关系,就只能按照 ip 做分流了,也可以把 clash 的 dns 作为系统的默认 dns 。
linux 为宿主机的相关配置如下: tun: enable: true stack: system dns-hijack: - "any:53" auto-route: true auto-detect-interface: true dns: enable: true listen: :1053 ipv6: true enhanced-mode: fake-ip |
4
shuiguomayi OP @dbak ,多谢。另外,我解决了另外一个坑,就是 OS 必须要新一点,我在 debian 9 上踩了坑,因为不支持 nftables ,换到 debian 12 就好了,我用的 mihomo ,配置跟上面的一样。 感谢。
|