外部访问Windows 子系统 WSL

2,579 阅读2分钟

使用 Windows 的 IP 端口转发到 WSL

背景

  • 在使用 windows 下的 wsl2 子系统开发时,在 wsl2 成功运行了一个 web 程序。想通过外界访问 WSL2 中的应用程序(同局域网下的其他设备访问),对这个 web 程序进行测试。

实现步骤

要将外界使用 Windows 的 IP 端口转发到 WSL2,可以使用 Windows 的端口转发功能。以下是具体步骤:

  1. 在 Windows 上设置端口转发。可以使用以下命令:
PS D:\coding> netsh interface portproxy add v4tov4 listenport=8888 connectaddress=172.23.81.41 connectport=8888 listenaddress=* protocol=tcp
  • 其中 listenport 是要转发的 Windows 端口
  • connectport 是 WSL2 中要连接的端口
  • connectaddress 是 WSL2 中的 IP 地址。
  • listenaddress 是 windows 监听的地址
  1. 查看端口映射情况,验证是否映射成功
PS D:\coding> netsh interface portproxy show v4tov4

侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------    
*               8888        172.23.81.41    8888

最后,可以在外界使用 Windows 的 IP 地址和指定的端口来访问 WSL2 中的应用程序。

  1. 防火墙设置:在 Windows 上,如果防火墙已启用,则需要添加端口转发规则以允许端口转发流量通过。可以通过在 PowerShell 中运行以下命令来添加防火墙规则:
PS D:\coding> New-NetFirewallRule -DisplayName "Port Forwarding" -Direction Inbound -Protocol TCP -LocalPort 8888 -Action Allow
  • LocalPort 为本地端口
  1. 删除端口映射
PS D:\coding> netsh interface portproxy delete v4tov4 listenport=8888 protocol=tcp

PS:

  • 需要注意的是,Windows 端口转发功能仅适用于 Windows 10 版本 1803 及以上,并且需要管理员权限来运行上述命令。另外,需要注意防火墙和网络配置,确保端口转发和网络连接正常。
  • 网络配置:要确保网络配置正确,需要确认 Windows 主机和 WSL2 之间可以互相通信,并且没有任何网络障碍。可以使用 ping 命令测试网络连接是否正常。另外,如果 Windows 主机和 WSL2 不在同一个局域网中,则需要配置路由器以允许端口转发流量通过。