V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
ciaoSora
V2EX  ›  VPS

路由器上 Clash 透明代理时, LAN 内其他设备的 IPv6 地址会被改变?

  •  
  •   ciaoSora · 14 天前 · 439 次点击

    背景:在路由器上配置开启了 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 内核」。

    4 条回复    2024-05-26 09:50:54 +08:00
    xclrr
        1
    xclrr  
       14 天前 via Android
    dns 的问题,test-ipv6.com 没有 ipv6 地址,所以过了 NAT
    ciaoSora
        2
    ciaoSora  
    OP
       14 天前
    @xclrr 谢谢大佬!`dig` 了一下 test-ipv6.com , 确实没有 v6 地址,而 www.ip5.me 是有 v6 地址的。但是有点没理解跟 NAT 有什么关系,请问下「过了 NAT 」是什么意思呀? NAT 不是仅仅是个 IPv4 的概念吗?而且,https://ipv6.test-ipv6.com 是个纯 v6 网站,我访问这个网站时,显示我的 v6 地址仍然是 `RouterIP`……
    heganyuliang
        3
    heganyuliang  
       8 天前
    同样的问题,开启 ShellClash 之后 ipw.cntestipv6.cn 检测的 v6 地址都是路由器的地址,而且我这里 www.ip5.me/ipv6 只显示 v4 地址了
    ciaoSora
        4
    ciaoSora  
    OP
       8 天前
    @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 绕过内核:未开启
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3013 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:01 · PVG 21:01 · LAX 06:01 · JFK 09:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.