外部访问Windows 子系统 WSL

运用 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 不在同一个局域网中,则需求装备路由器以答应端口转发流量经过。