wireguard 支持 IPv6 slaac 吗?

2023-06-07 22:39:14 +08:00
 3dxfood

wireguard 支持 IPv6 slaac 吗? 我知道 static ipv6 是可以,但是出局就得 nat6 了;dhcpv6 pd 拿到的前缀又会变,static 该怎么写?要是支持 slaac ,配置文件里 address 应该怎么写?

2916 次点击
所在节点    宽带症候群
28 条回复
busier
2023-06-07 22:51:39 +08:00
不知道,不过弄 openvpn 的时候也遇到过这种问题,幸运的是 openvpn 服务器拿到了 /64 段,直接往下分配并路由,不用 NAT
zbinlin
2023-06-07 22:53:09 +08:00
什么场景下需要把 slaac 分配的 ipv6 地址给 wireguard 用?
3dxfood
2023-06-07 23:00:04 +08:00
@zbinlin
remote 有 ipv6 而本地没有的时候
yunisky
2023-06-07 23:04:29 +08:00
个人理解:
wireguard 就是个隧道,只要隧道建立了,理论上来说在隧道接口上启动和 nd-ra 是没问题的。
但是这个 nd-ra 拿到的地址能不能通,和 allow-ips 又有关系。所以这两个配置应该要综合起来看。
以上是推测,未测试过。
shenyuzhi
2023-06-07 23:07:44 +08:00
wireguard 唯一的作用,就是基于三层的 udp ,建立了一个二层的点对点链接而已,就像 pppoe 那样。
不清楚 slaac ,不过理论上 IPv6 slaac 这些东西和 wireguard 没有一毛钱关系。wireguard 配置文件里面,你可以把 address 之类的字段都删掉,然后手动修改这个二层点对点链接的配置。
baobao1270
2023-06-07 23:15:34 +08:00
不支持,Wireguard 是三层协议,不是二层协议
shenyuzhi
2023-06-07 23:19:42 +08:00
到底支不支持,取决于 IPv6 slaac 能否运行在二层点对点链接上,和 wireguard 没关系。
dcsuibian
2023-06-07 23:59:36 +08:00
按我的理解:
[Peer]
PublicKey = peer 的公钥
Address = 192.168.3.4/32
Endpoint = 你的 remote 的 ipv6 地址
这样就完事了
zbinlin
2023-06-08 00:05:34 +08:00
@3dxfood 你是想将 remote 的 ipv6 地址通过 wireguard 分配给本地用?
3dxfood
2023-06-08 00:08:41 +08:00
@yunisky 是这个道理,但是 windows client 上没有看到相关配置。貌似 wg 接口地址无论是 v4 还是 v6 都是在 wg 连接建立的时候才读取配置文件确定的,连接之后无论怎么更改 ipv4 或者 v6 地址连接都会断掉;配置文件中又没有任何字段能去配置 nd-ra ,所以这好像仅仅是理论。
3dxfood
2023-06-08 00:09:20 +08:00
@shenyuzhi 同上
3dxfood
2023-06-08 00:10:45 +08:00
@dcsuibian 你对我需求的理解有偏差,我想实现的是通过 v4 的 wg 隧道通过 slaac 拿到远端的 v6 地址。
3dxfood
2023-06-08 00:12:19 +08:00
@zbinlin 是的,没错。static 可以实现,但是远端的 prefix 是动态的,static 的方式是不可持续的。
NXzCH8fP20468ML5
2023-06-08 01:29:15 +08:00
wireguard 可以做到,但没有现成方案,需要你自行编码实现。
NXzCH8fP20468ML5
2023-06-08 01:31:20 +08:00
建议仔细评估 wireguard 上拿到 ipv6 slaac 地址是不是一个伪需求?
CoolZxp
2023-06-08 02:12:48 +08:00
目前没有现成方案,需要自己修改源码编译才可以。
最简单的方法是用 nat ,可以用 netmap 做内网地址和公网地址的 1 对 1 映射,用起来的公网没有区别。
zbinlin
2023-06-08 10:39:21 +08:00
就像上面有人说的,wireguard 是在三层上的,而 slaac 是在二层上的,所以是不能直接支持的。
但理论上可以创建一个 gretap 类型的 tunnel ,而 gretap 跑在 wireguard 上来间接支持 SLAAC 。(但好像你的系统是 win 的,不太清楚是否在 win 上没有没类似 gretap 的 tunnel )
thereone
2023-06-08 10:52:14 +08:00
直接用 softether 就行,这个传递二层不要太简单了。
raysonx
2023-06-08 13:18:03 +08:00
@baobao1270
@shenyuzhi
@zbinlin

SLAAC 基于 ICMPv6 ,是跑在三层之上的。理论上可以在 wireguard 上跑(如果配置好 link-local 地址并且接受相应的组播地址的话),但没有现成的实现。
zbinlin
2023-06-08 13:40:01 +08:00
@raysonx ICMPv6 不是第二层(网络层)的吗?

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

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

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

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

© 2021 V2EX