wireguard 支持 IPv6 slaac 吗?

348 天前
 3dxfood

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

2443 次点击
所在节点    宽带症候群
27 条回复
raysonx
347 天前
@zbinlin RFC 4443: https://www.rfc-editor.org/rfc/rfc4443#section-2.1
Every ICMPv6 message is preceded by an IPv6 header and zero or more
IPv6 extension headers.

ICMPv6 消息外层是 IPv6 头,所以三层隧道上是可以路 ICMPv6 的。ping 也是基于 ICMPv6 ,二层不能跨路由器,而你可以 Ping 全球任何一个地址。
terrancesiu
347 天前
没有现成的实现,cloudflare 大规模使用 wg 还是基于 api 的方式
raysonx
347 天前
一个典型的 SLAAC 分配地址的过程是:
1. 客户端向 ff02::2 组播地址发送 ICMP6 router solicitation 。所有支持 IPv6 的路由器都会监听这个组播地址。
2. 路由器向 ff02::1 组播地址发送 ICMP6, router advertisement ,包含前缀等信息。所有支持 IPv6 的任何设备都会监听这个组播地址。
3. 客户端拿前到前缀后,自己拼接一个 64 位的后缀,然后向一个特殊的组播地址(根据后缀利用哈希算法计算得出,自己也会监听这个地址)发送多次 ICMP6 neighbor solicitation 来检测地址冲突。
4. 如果没有其他设备回应,则表示这地地址没有被使用,则客户端使用这个地址。
ayasakinagi
347 天前
不支持, wireguard 是 l3, SLAAC 需要 l2 通信, 可以基于 wireguard 建立 vxlan 隧道, 这个可以 l2 通信
tavimori
346 天前
@raysonx 是的,从协议上看,主要是现在 wg 的内部路由不支持组播特性。如果是只有一个客户端和一个服务端的话,貌似只要把组播地址加到 AllowedIP 里好像还是有可能实现的。不过不知道现成的 SLAAC 协议服务支不支持 tun device 。
nullizer
343 天前
可以使用 NPTv6 自动转换前缀,wireguard 里配个静态地址就好了。这些功能在 nftables/iptables 里又叫 netmap 。
https://stackoverflow.com/questions/53683498/how-to-do-netmap-by-nftables
wolonggl
332 天前
gretap over wg

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

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

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

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

© 2021 V2EX