在windows10上默认可以使用 localhost 对wsl2的服务进行访问,但是由于wsl2本身是虚拟机,有网络隔离。所以手机访问是无法直接访问wsl2的服务的。

一行命令可以解决问题。使用管理员运行 CMD,输入一下命令即可。

netsh interface portproxy add v4tov4 listenport=[windows宿主机的端口] listenaddress=0.0.0.0 connectport=[wsl2服务的端口] connectaddress=[wsl2子系统的ip]

可以通过 ip a 来查询wsl2的ip地址,如图 eth0 对应的ip就是。

netsh interface portproxy show all 可以查看端口转发的规则,看看是否成功。 推荐一款开源的软件,可以可视化的查询 wsl2 的地址和做端口转发,省得自己敲!

https://gitee.com/itxq/wsl2-auto-port-forward-python

最后一定要检查自己的 IP Helper 服务是否打开,如果发现 netsh 端口转发不成功——能够查询到,但是手机依然不能访问的情况。Win + R 输入services.msc 找到 IP Helper 服务并设置启动和自动运行。