当我尝试访问 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 方面,我有:
- 确保我的以太网 NIC 的网络配置文件类型为“专用网络”
- 使用 netsh interface portproxy add v4tov4 将 8080 端口添加到 WSL Ubuntu 实例的 172 IP 地址
- 进入控制面板、Windows Defender 防火墙,并将 wsl.exe 和 wslrelay.exe 添加到防火墙允许的应用程序中
- 在 .wslconfig 中我添加了 localhostForwarding=true
- 执行了网络重置
在 Ubuntu 中我有:
- 编辑 /etc/wsl.conf 并添加 [network] 行和 generateHosts = false 行
- 编辑 /etc/hosts 文件并添加 ::1 localhost
- 编辑 /etc/hosts 文件并注释掉 ::1 ip6-localhost ip6-loopback 行
- 添加于 ::1 localhost
我现在完全没有主意了。有人能建议我下一步可以尝试什么吗?