从 LAN 上的其他机器访问 WSL2 Web 服务

从 LAN 上的其他机器访问 WSL2 Web 服务

当我尝试访问 Windows 11 PC 上在 WSL2 下运行的 Web 服务时,遇到了一个似乎熟悉的问题。

那么回到基础而不是我最终试图设置的更复杂的场景。

在我的 Windows 11 PC 上,我打开一个终端并运行:

python -m http.server 8080 --bind 0.0.0.0

通过 http://localhost:8080/ 访问,我得到了一个目录列表,我按照预期运行了该 python 命令。同样适用于http://127.0.0.1:8080正如预期的那样。

同样http://192.168.0.200:8080IP 地址显示正常。

现在我按 Ctrl-C 退出该 python 命令并转到在同一主机上的 WSL2 下运行的 Ubuntu 22.04。

我再次运行“python -m http.server 8080 --bind 0.0.0.0”,这次是在 Ubuntu 下。

这在 http://localhost:8080/ 上显示正常,我得到了预期的目录列表。http://127.0.0.1:8080正如预期的那样。Ubuntu ifconfig 中的 172. 地址也出现了。

然而http://192.168.0.224:8080Firefox 出现“无法连接”的提示并失败。

为了防止端口 8080 出现问题,我尝试了各种其他端口,但效果相同。

我已经重启了很多次

到目前为止,我尝试了一些方法。在 Windows 11 方面,我有:

  1. 确保我的以太网 NIC 的网络配置文件类型为“专用网络”
  2. 使用 netsh interface portproxy add v4tov4 将 8080 端口添加到 WSL Ubuntu 实例的 172 IP 地址
  3. 进入控制面板、Windows Defender 防火墙,并将 wsl.exe 和 wslrelay.exe 添加到防火墙允许的应用程序中
  4. 在 .wslconfig 中我添加了 localhostForwarding=true
  5. 执行了网络重置

在 Ubuntu 中我有:

  1. 编辑 /etc/wsl.conf 并添加 [network] 行和 generateHosts = false 行
  2. 编辑 /etc/hosts 文件并添加 ::1 localhost
  3. 编辑 /etc/hosts 文件并注释掉 ::1 ip6-localhost ip6-loopback 行
  4. 添加于 ::1 localhost

我现在完全没有主意了。有人能建议我下一步可以尝试什么吗?

相关内容