无法从 LAN 访问 WSL 安装

无法从 LAN 访问 WSL 安装

我通过 WSL2 运行 Ubuntu 20.04(Linux 版本 5.10.16.3-microsoft-standard-WSL2)。我在 WSL 安装上运行一个 React-js 应用程序,并且我可以通过访问分配给我的 WSL 盒子的 IP,通过 Web 浏览器从 Windows 查看网页。 (注意:访问 localhost 时无法从 Windows 查看网页)。但是,如果我尝试从本地网络上的任何其他设备访问该网页,该网页将无法加载。

如果我尝试从网络上的另一台设备 ping 我的 WSL IP 地址,则会出现 100% 的数据包丢失情况。

我尝试按照建议通过 Powershell 添加代理规则微软的网站

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=MY.WSL.IP.ADR

这没有什么区别。我还尝试指定我的 React 应用程序应该绑定到 0.0.0.0,但这也没有什么区别。 react-scripts start --host 0.0.0.0

答案1

您可能会发生两件不同的事情。

首先,我要提一下,有几种更简单的方法可以从网络上的其他设备进行转发。我覆盖他们这个答案中有详细说明, 但:

  • WSL1 可能会很好地运行您的 React 应用程序,并且它与 Windows 共享网络,因此不会遇到这些类型的转发问题。

  • 当我无法使用 WSL1 时,使用 SSH 设置从 Windows 反向转发回 WSL2 实例是我的首选方法。但是,要使其正常工作,您仍然需要解决本地主机转发问题。

至于你手头的问题:

考虑到本地主机转发不起作用,因为您无法通过 Windows 主机本身访问该站点localhost,这听起来可能是旧的“休眠时本地主机转发中断”错误。退出 WSL 并尝试(从 PowerShell):

wsl --shutdown

然后重新启动 WSL 并再次从 Windows 主机浏览器尝试。如果它有效,它可能会停止工作,因为:

  • 系统休眠了
  • 或者在 Windows 中设置“快速启动”选项(默认情况下)。快速启动也使用休眠。可以在 Windows 的电源管理设置中将其关闭。

鉴于您要转发到 WSL IP 地址(因此不是使用本地主机),但是,我在想部分可能是由于防火墙规则造成的。确保添加相应的防火墙规则以允许该端口上的所有流量。

相关内容