拼车信息请发到 /go/cosub 节点。

如果没有发送到 /go/cosub,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
yeh
V2EX  ›  Surge

surge ipv6 旁路问题

  •  
  •   yeh · May 29 · 431 views
    macmini 上装了个 surge 专门当旁路,开了增强模式和网关模式。

    但局域网网关不是它,dns 也不是它。

    简化步骤是:

    比如 surge 所在 ip 10.0.0.99 ,现在其他设备要访问 google.com

    1.局域网 dns 是 mosdns ,路由器把 198.18.0.0/15 静态路由去 10.0.0.99
    2.先 dns 分流,google.com 命中目标,交给 surge 的 198.18.0.2 去做 dns 解析
    3.surge 返回 fakeip ,mosdns 拿到 fakeip 198.18.0.0/15 段交给其他设备
    3.其他设备拿到 fakeip 去请求路由器
    4.路由器把 198.18.*.*转给 surge ,surge 返回数据,其他设备拿到

    在 ipv4 下运行的很好,一切正常

    最近看到 surge 说支持纯 ipv6 环境,想照抄 ipv4 这么操作,发现问题来了

    surge ipv6 的网关是 fd00:6152::1 ,dns 是 fd00:6152::2 ,fakeip 段是 fd00:6152:0:9::/64

    假设 surge ip 是 fd10::99, 在路由器上把 fd00:6152::/64 和 fd00:6152:0:9::/64 拦截去 fd10::99

    nslookup 发现 aaaa 记录能拿到,但是比如 google 的是 fd00:6152:0:9::1234:5678 ,这个 ip 也能 ping 通,但是却访问不了。

    ifconfig surge 所在的 tun 网卡,发现了差异

    inet 198.18.0.1 --> 198.18.0.1 netmask 0xfffe0000
    inet6 fd00:6152::1 prefixlen 127

    意思是
    198.18.0.0/15 是接管的
    ipv6 下,只接管了 fd00:6152::1/127 ,也就是 fd00:6152::1 和 fd00:6152::2.

    也就是 ipv6 下,surge 只接管了网关和 dns ,其他的并没有接管。

    解决办法也不是没有,把 fd00:6152:0:9::/64 静态路由去 fd00:6152::1

    但这样就 2 次转发了。

    是有什么地方参数缺失,还是 surge 在 ipv6 下就这么设置的?
    yeh
        1
    yeh  
    OP
       May 31
    找到了解决方案之一:

    路由器:
    - 只保留 fd00:6152::/126 静态路由
    - 不保留 fd00:6152:0:9::/64

    Mac mini:
    1. 开 net.inet6.ip6.forwarding=1
    2. 把 fd00:6152:0:9::/64 绑到 Surge VIF
    3. 在主网卡发 RA ,告诉局域网:这个 IPv6 段由我承载

    这样纯 IPv6 fake-ip 才真正跑通。

    缺点:重启或网卡切换后,要重新绑 VIF + 重发 RA 。


    简单点的方案还是:surge 不给 ipv6 的 fd00:6152:0:9::/64 ,只给 ipv4 段的 198.18.0.0/15 ,避免走到 ipv6 段的 fake 去。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3732 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 04:51 · PVG 12:51 · LAX 21:51 · JFK 00:51
    ♥ Do have faith in what you're doing.