假设 Windows TCP/IP 实现中有一个错误。WSL2 会受到影响吗?WSL2 Ubuntu 会使用原生 Linux 内核的 TCP/IP 堆栈吗?
答案1
假设 Windows TCP/IP 实现中有一个错误。WSL2 会受到影响吗?
是的。
WSL2 是否使用原生 Linux TCP/IP 堆栈?
也是的。
WSL2 网络通过 WSL2 内核使用原生 Linux TCP/IP 实现。该内核基于上游官方 Linux 内核构建,并进行了一些相对较小的添加以优化其在 WSL 环境中的性能和行为。
然而,即使使用了本机 Linux 堆栈,网络接口也是虚拟的,它连接到虚拟 Hyper-V 交换机,当然,它使用 Windows TCP/IP 堆栈连接到(通常)物理 NIC。
因此,通过在 WSL2 上使用 Ubuntu,您不一定能解决 Windows 网络实现中的问题。相反,您实际上有一个额外的故障点:
- Linux
- Hyper-V
- 视窗
我已经看到 Hyper-V 实现中出现了一个问题(来自 WSL Github),尽管我当时不记得它到底是什么。
附注:我能想到的一种可能情况是,Ubuntu 将不是使用 Hyper-V/Windows 虚拟交换机。如果你使用 USB NIC,你可以将其公开直接地通过 USB/IP 连接到 Ubuntu。哦等等... ;-)
好的,因此,虽然您在该场景中从技术上使用的是 Windows IP 堆栈,但您并没有使用 Hyper-V 或 Windows NIC 连接到外部网络。
请注意,这可能需要您构建自己的 WSL2 内核,其中包括对 USB NIC 的支持。目前还不清楚 WSL2 是否已经提供这种支持(发行说明请勿表明它已被添加),尽管它已被请求作为一个功能。