WSL2 ubuntu 可以访问主机 IP 但无法访问主机端口

WSL2 ubuntu 可以访问主机 IP 但无法访问主机端口

Windows 配置:

  1. 运行示例 Web 服务器并打开 5000 端口(见图 1)
  2. Windows 防火墙完全关闭

WSL2:

  1. 可以成功访问互联网,并且可以使用主机 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)
  1. 主机的 5000 端口也无法从 WSL2 浏览器访问,并且将以以下方式结束ERR_CONNECTION_TIMED_OUT(参见图 2)

图片1

图片2

任何帮助都将不胜感激!谢谢!

答案1

当你想连接时从 WSL 2 到主机,没有特殊机制。就 Windows 网络堆栈而言,WSL 2 在 VM 中运行,并且是远程主机。这意味着:

  • 您无法访问绑定到、或localhost上的任何 IP 的应用程序127.0.0.0/8::1
  • 防火墙必须允许入站连接

不幸的是,WSL 2 虚拟网络具有完全不可预测的动态地址,因此仅在那里监听意味着您必须始终更新网络服务配置。绑定到0.0.0.0::(“所有接口”)更容易。这意味着每个人都可以连接,因此请确保您了解如果您在不受信任的网络上会有什么后果。

相关内容