如何为 WSL2 提供 IPv6?

如何为 WSL2 提供 IPv6?

最初发布于网络工程

编辑此网络配置不再反映我现在所连接的网络。我正在切换 ISP(不是出于我的意愿,旧的仅 IPv4 ISP 正式不再独立),而新的 ISP 具有 IPv6 和前缀委派。我正在等待切换,以查看 Hyper-V 是否支持 DHCP-PD(我从已经使用该 ISP 的某人那里得知 VMware 确实支持它)。我将在此留下这篇文章以供参考。

我打算为系统上运行的 WSL2 提供 IPv6 连接。以下是部分现有配置:

  • IPv6 路由器(TunnelBroker 客户端):
    • Raspberry Pi 3 B+,Raspbian Buster。
    • 接口 he-ipv6 具有 IP 2001:470:AAAA:BBBB::2/64 并且直接位于隧道代理上。
    • 接口 br0(以太网和 Wi-Fi 之间的桥接,由于其他原因而预先存在)的地址为 2001:470:CCCC:1:XXXX:XXXX:XXXX:XXXX/64(radvd 自动配置,但如果采用静态配置,我可以将 Xs 设置为 ::1)。路由 /48 的一部分。
  • Windows 站在“Wi-Fi”接口上具有 IP 2001:470:CCCC:1:YYYY:YYYY:YYYY:YYYY/64(自动配置,如果可能的话,我想保持这种方式)
    • 我打算在接口“vEthernet (WSL)”上设置 IP 2001:470:CCCC:2::1/64,并为其上的所有系统启用自动配置。也是 /48 的一部分,因此回复将到达我的 Raspberry Pi。

在尝试使用此配置时,我注意到的主要问题是,我的 Raspberry Pi 没有收到任何路由,因此它知道如何将 2001:470:CCCC:2::/64 数据包转发到我的笔记本电脑。我该如何处理?

是否可以通过自动配置来实现这一点,或者我的笔记本电脑至少需要接收一个可预测的固定 IP 地址?

我还没有尝试使用固定地址,希望可以让它自动工作。

请注意,这是一个家庭网络。我没有配置防火墙,尽管 Windows 笔记本电脑自带的防火墙可能会让我很头疼。如果我觉得需要更多的安全性,我可以使用现有的帖子来帮助我在 Pi 上配置防火墙,所以请不要对此发表评论。

答案1

在尝试使用此配置时,我注意到的主要问题是,我的 Raspberry Pi 没有收到任何路由,因此它知道如何将 2001:470:CCCC:2::/64 数据包转发到我的笔记本电脑。我该如何处理?

为 Raspberry Pi 添加静态路由。这应该可以正常工作:

ip route add 2001:470:CCCC:2::/64 via 2001:470:CCCC:1:YYYY:YYYY:YYYY:YYYY

主机的地址已经固定(无需可预测才能保持静态)。只要您的 LAN 继续使用相同的 /64,Windows 系统就应该始终选择相同的接口标识符。

  • “真正的”动态配置将要求 Windows 执行 DHCPv6 前缀委派,以便从您的 Raspberry Pi 获取 /64。(您的 DHCPv6-PD 服务器将自动为其发出的每个 PD 租约添加正确的路由。)

    但尽管 Windows 似乎一些程序请求 IA_PD 的 API,我找不到任何提及 WSL 实际使用了此功能,所以这只是一种理论。

  • 如果我必须拼凑一个动态替代方案,我可能会让 Windows 主机发送 RIPng 或 ICMPv6 RA 数据包来宣传该子网,并配置 Raspberry Pi 以从收到的广告中添加内核路由(例如使用 BIRD 或 FRR)。

    RIP(包括其 IPv6 变体)与 ICMPv6 路由器通告中的前缀信息选项有些相似,因为它是一种非常简单的协议 - Windows 主机实际上不需要完整实现,只需有一个每 30 秒广播静态 RIPng 通告数据包的 Python 脚本就足够了。由于只需要 UDP 而不需要原始 IP 套接字,因此它比 ICMPv6 RA 具有一点优势。

相关内容