访问局域网 IP 为什么会被解析为域名? Clash 和 OpenWrt 令人费解的问题

149 天前
 mway

我知道 clash 的 fake-ip 模式在设备发起连接时会返回假 ip ,clash 有张表映射假 ip 和请求域名。当设备向这个假 ip 发送请求的时候,clash 查表得到请求域名,然后解析 DNS 得到真实 IP ,再从真实 IP 得到请求内容。

我的 OpenWrt 上安装 OpenClash 透明代理,fake-ip tun 模式,配置规则为:

rules:
- IP-CIDR,192.168.50.0/24,🏠 异地组网,no-resolve

这是我家里的局域网,使用 wireguard 组网,按照这个配置,当我在外地访问 192.168.50.0/24 子网地址,会被 clash 分流到 wireguard 代理,从而连上家里的网络。no-resolve 意味着访问域名不会匹配这条规则。 事实上是组网成功的,例如我访问 192.168.50.50 ,clash 日志中没有域名解析,直接连上家里某台设备服务:

[TCP] accept connection lAddr=192.168.23.280:3192 rAddr=192.168.50.50:4123 inbound=Redir
[TCP] connected lAddr=192.168.23.280:3192 rAddr=192.168.50.50:4123 mode=rule rule=IPCIDR(192.168.50.0/24) proxy=🏠 异地组网[Router1]

但是当我访问 192.168.50.7 (是我 NAS 的地址),则没有匹配上这条规则,clash 中的日志:

[TCP] dial failed error=dial tcp4 192.168.50.7:1280: i/o timeout proxy=DIRECT lAddr=192.168.23.280:7714 rAddr=192-168-50-7.xdvx.direct.quickconnect.cn:1280 rule=RuleSet rulePayload=direct
[TCP] dial failed error=dial tcp4 192.168.50.7:80: i/o timeout proxy=DIRECT lAddr=192.168.1.5:45808 rAddr=192-168-50-7.xdvx.direct.quickconnect.cn:80 rule=RuleSet rulePayload=direct

看日志是反解析 192.168.50.7 成域名,再发起域名请求。192-168-50-7.xdvx.direct.quickconnect.cn这个域名是群晖的 quickconnect 服务,群晖给我的 nas 分配了这么个域名 dns 中记录的是局域网 IP ,这个 quickconnect 我很久没有使用了。

正常来说 192.168.50.7 是不会反解析的,而是直接对 IP 发起请求,因为不是 clash 分配的 fack-ip ( 198.18.0.0/16 )。 正常来说 192.168.50.7 是反解析不到域名的,这个 dns 反查应该是在路由器本地进行的,可能记录在路由器的某个位置,可我找不到在哪。

1216 次点击
所在节点    OpenWrt
3 条回复
mohumohu
149 天前
这不叫反解析,你自己 nslookup 192-168-50-7.xdvx.direct.quickconnect.cn
yyysuo
143 天前
这是 hosts 吧,群晖设置的问题?
mway
139 天前
@yyysuo 不是 host 的问题。

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

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

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

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

© 2021 V2EX