Windows 端口代理映射到 WSL 端口

Windows 端口代理映射到 WSL 端口流程(需开启 iphlpsvc)

此流程通过 netsh interface portproxy 实现将 Windows 某端口映射到 WSL 中指定端口,前提是 Windows 的 IP Helper 服务(iphlpsvc)已启动。

1. 启动 Ip Helper 服务

执行命令查看 iphlpsvc 运行状态

1
2
3
4
5
$Get-Service iphlpsvc

Status Name DisplayName
------ ---- -----------
Stopped iphlpsvc IP Helper

如果是 Stopped 则启动 iphlpsvc 服务
Start-Service iphlpsvc

然后可再次查看运行状态

1
2
3
4
5
$Get-Service iphlpsvc

Status Name DisplayName
------ ---- -----------
Running iphlpsvc IP Helper

添加端口代理规则

假设需要将 Windows 的 8080 端口映射到 WSL 的 3000 端口,执行:

1
$netsh interface portproxy add v4tov4 listenport=8080 listenaddress=* connectport=3000 connectaddress=<WSL_IP>

开放防火墙端口(如有必要)
允许 Windows 防火墙通过端口 8080:

1
New-NetFirewallRule -DisplayName "WSL Port Forward 8080" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow

查看和删除端口代理规则

查看当前所有代理规则:

1
2
3
4
5
6
7
$netsh interface portproxy show all

Listen on ipv4: Connect to ipv4:

Address Port Address Port
--------------- ---------- --------------- ----------
* 8080 172.26.105.197 3000

删除指定代理规则(例如监听端口 8080):

1
netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=*