我使用的 PC 安装了 Windows 10 Home 和 WSL2 Ubuntu,我想从笔记本电脑 ping 我的 WSL 实例。由于 WSL 使用 NAT 虚拟适配器,因此它与笔记本电脑不在同一网络上。
我尝试使用以下方法创建代理:
netsh interface portproxy add v4tov4 listenport=8090 listenaddress=0.0.0.0 connectport=8090 connectaddress=172.23.116.251
并允许使用端口:
netsh advfirewall firewall add rule name=”Open Port 8090 for WSL2” dir=in action=allow protocol=TCP localport=8090
但我无法从我的笔记本电脑 ping 通 WSL。
如何从网络中的另一台设备 ping WSL?有没有办法将其从 NAT 更改为 Bridged?
注意:我可以从我的笔记本电脑 ping 主机(我的 PC)。
编辑:我试过了
ping 172.23.116.251
Test-NetConnection 172.23.116.251
Test-NetConnection 172.23.116.251 -p 8090
Test-NetConnection 192.168.0.56 -p 8090
最后一个我尝试在端口 8090 上 ping 主机 PC(我不确定是否应该直接 ping WSL 或 ping 主机 PC 并让它将 ping 重定向到 WSL)
主机 IP:192.168.0.56
WSL-IP:172.23.116.251
答案1
和WSL2,你基本上需要在主机上进行端口转发到 WSL(你已经完成了)。从微软文档:
下面是一个示例 PowerShell 命令,用于添加一个端口代理,该代理侦听主机上的端口 4000,并将其连接到 IP 地址为 192.168.101.100 的 WSL 2 VM 的端口 4000。
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
也就是说,portproxy 不适用于默认 ping(ICMP)。您可以使用Test-NetConnection
,但 WSL必须监听您要转发到的端口(问题中为 8090)。例如,尝试将主机上的端口 2222 转发到 WSL 上的端口 22,然后执行Test-NetConnection 192.168.0.56 -p 2222