背景:在路由器上配置开启了 IPv6 ,现在全家的电脑、手机以及路由器本身都有 2408 开头的中国联通公网 IPv6 地址,现在电脑浏览器访问 https://test-ipv6.com ,能看到 v6 地址与我在电脑上执行 ifconfig
的结果一致。然后在路由器上用 ShellClash 跑了一个 Clash ,并且开了 IPv4 和 IPv6 的透明代理,我的需求是,国内的站点要直连并且优先 IPv6 ,其他网站走节点。规则配置大致如下:
proxies:
- name: "my_hk_vmess"
type: vmess
# 删掉了节点的其他细节
- name: "direct_prefer_ipv6"
type: direct
ip-version: ipv6-prefer
proxy-groups:
- name: 🎯 直连
type: select
proxies:
- direct_prefer_ipv6
- name: 🚀 走节点
type: select
proxies:
- my_hk_vmess
rules:
- DOMAIN-KEYWORD,ipv6,🎯 直连
- DOMAIN-SUFFIX,cn,🎯 直连
- DOMAIN-SUFFIX,hk,🚀 走节点
- DOMAIN-SUFFIX,speedtest.net,🚀 走节点
- GEOIP,CN,🎯 直连
- MATCH,🚀 走节点
现在的情况是:这份规则,我以及其他终端用户用的很舒服,开了浏览器 F12 也确实看到国内的网站解析到了 IPv6 地址。然而,在规则里我让包含 "ipv6" 的域名直连,就是为了测试 https://test-ipv6.com ,此时奇怪的事情就发生了。
假设路由器的 v6 地址是 RouterIP
,我的电脑的 v6 地址是 LaptopIP
。此时用电脑访问(直连) https://test-ipv6.com ,显示我的 v6 地址是 RouterIP
(而不是 LaptopIP
)。我的理解是,由于路由器上开了 IPv6 透明代理,所以等于是路由器代替我的电脑向 test-ipv6 的服务器发包?
此时更奇怪的事情就发生了,电脑访问(直连) https://www.ip5.me/ipv6/ ,竟然显示我的 v6 地址是 LaptopIP
?
麻烦大佬教一下以上两件奇怪的事情发生的原因,提前谢谢🙏
p.s., 路由器上 ShellClash 没有开启「 CN IP 数据包不经过 clash 内核」。
1
xclrr 212 天前 via Android
dns 的问题,test-ipv6.com 没有 ipv6 地址,所以过了 NAT
|
2
ciaoSora OP @xclrr 谢谢大佬!`dig` 了一下 test-ipv6.com , 确实没有 v6 地址,而 www.ip5.me 是有 v6 地址的。但是有点没理解跟 NAT 有什么关系,请问下「过了 NAT 」是什么意思呀? NAT 不是仅仅是个 IPv4 的概念吗?而且,https://ipv6.test-ipv6.com 是个纯 v6 网站,我访问这个网站时,显示我的 v6 地址仍然是 `RouterIP`……
|
3
heganyuliang 206 天前
|
4
ciaoSora OP @heganyuliang 我现在感觉显示路由器的 v6 地址才是正确的行为,「透明代理」这个词里的「透明」应该是仅对 TCP 服务发起端来说的。
就像传统的 IPv4 世界里,你用一个境外的主机建了个机场(代理),然后自己电脑上连接他,那他就是一个不透明的代理,相同点是「都是代理」,既然代理了,那么就会「代替」、「取代」你( IP 包的 Src IP 会被替换为代理的 IP ),来跟目标服务器通信,然后再把结果发回给你。 不太清楚 www.ip5.me/ipv6 是什么原理…… 感觉跟其他的测试网站似乎不太一样。 然后我现在已经关掉了 ShellClash 的 IPv6 透明代理,直接让所有 v6 的流量直连了,目前运行良好,测试自己的 IP 也都是我的本机 IP 而不是路由器 IP ,境外流量也都顺利地解析为 IPv4 然后走了节点。现在的 ShellClash IPv6 相关配置是: ipv6 内核支持:已开启; ipv6 透明代理:未开启; ipv6-DNS 解析:已开启; CNIP 绕过内核:未开启 |