surge ipv6 旁路问题

5 月 29 日
 yeh
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 下就这么设置的?
432 次点击
所在节点    Surge
1 条回复
yeh
5 月 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 去。

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

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

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

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

© 2021 V2EX