Windows 配置:
- 运行示例 Web 服务器并打开 5000 端口(见图 1)
- Windows 防火墙完全关闭
WSL2:
- 可以成功访问互联网,并且可以使用主机 IP 或 ping 通 windows
$(hostname).local
,但无法curl http://172.18.16.1:5000
sandowner@ENIGMATIC-MACHINE:~$ hostip=$(ip route | grep default | awk '{print $3}')
sandowner@ENIGMATIC-MACHINE:~$ echo $hostip
172.18.16.1
sandowner@ENIGMATIC-MACHINE:~$ ping 172.18.16.1
PING 172.18.16.1 (172.18.16.1) 56(84) bytes of data.
64 bytes from 172.18.16.1: icmp_seq=1 ttl=128 time=0.514 ms
64 bytes from 172.18.16.1: icmp_seq=2 ttl=128 time=0.690 ms
^C
sandowner@ENIGMATIC-MACHINE:~$ ping $(hostname).local
PING ENIGMATIC-MACHINE (172.18.16.1) 56(84) bytes of data.
64 bytes from ENIGMATIC-MACHINE (172.18.16.1): icmp_seq=1 ttl=128 time=0.355 ms
64 bytes from ENIGMATIC-MACHINE (172.18.16.1): icmp_seq=2 ttl=128 time=0.729 ms
^C
sandowner@ENIGMATIC-MACHINE:~$ curl http://172.18.16.1:5000
^C (will timeout)
- 主机的 5000 端口也无法从 WSL2 浏览器访问,并且将以以下方式结束
ERR_CONNECTION_TIMED_OUT
(参见图 2)
任何帮助都将不胜感激!谢谢!
答案1
当你想连接时从 WSL 2 到主机,没有特殊机制。就 Windows 网络堆栈而言,WSL 2 在 VM 中运行,并且是远程主机。这意味着:
- 您无法访问绑定到、或
localhost
上的任何 IP 的应用程序127.0.0.0/8
::1
- 防火墙必须允许入站连接
不幸的是,WSL 2 虚拟网络具有完全不可预测的动态地址,因此仅在那里监听意味着您必须始终更新网络服务配置。绑定到0.0.0.0
或::
(“所有接口”)更容易。这意味着每个人都可以连接,因此请确保您了解如果您在不受信任的网络上会有什么后果。