我意识到,在 Windows 10 中运行的 Ubuntu 终端中打开端口的进程可以从主机 PC 访问,但不能从本地网络的其余部分访问。我在防火墙部门进行了一些检查,甚至停止了所有检查,但没有任何变化。
我的网络本质上是一个运行在 192.168.0.1 上的无线路由器,主机 PC(运行该进程的 PC)在 192.168.0.139 上。但是,如果ip addr show
从运行该进程的 Ubuntu 终端内运行命令,我会得到这个本地 IP:192.168.75.62。这是什么?Windows 子系统为 Linux 创建的子网?我在这里遗漏了什么?
答案1
是的,WSL 在具有虚拟 NIC 的 Hyper-V VM 中运行。该 NIC 在 Windows 网络堆栈后面进行 NAT。
192.168.75.62 是虚拟 NIC 地址。每次重新启动 Windows 时,它都会发生变化。如果您ipconfig
在 PowerShell 或 CMD 中运行,您还应该看到相应的 192.168.75.1,标记为“以太网适配器 vEthernet (WSL)”。
如果您拥有 Windows Professional 或更高版本,则可以通过安装 Hyper-V 功能更详细地检查 Hyper-V 界面。
至于从本地 Windows 计算机或网络上的其他设备访问 WSL 实例,由于 WSL 接口在 Windows 接口后面进行 NAT,因此需要端口转发。对于本地访问,WSL 似乎会进行一些自动端口转发,但对于网络上的其他地方则并非如此。这不仅需要手动端口转发,还需要入站防火墙允许。请参阅此评论以及整体线程的更多详细信息。
另请参阅这个答案有关其他可能方法的一些其他选项。
答案2
WSL 2 能使用网络应用程序吗?
是的,由于我们具有完全的系统调用兼容性,因此一般来说,网络应用程序将更快、运行得更好。但是,新架构使用虚拟化网络组件。这意味着在初始预览版本中,WSL 2 的行为将更类似于虚拟机,例如:WSL 2 将具有与主机不同的 IP 地址。我们致力于让 WSL 2 感觉与 WSL 1 相同,其中包括改进我们的网络故事。
(来源:WSL 2 常见问题解答)