在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 服务并设置启动和自动运行。