把 Windows 主机的端口转发到 WSL 里的服务
23
把 Windows 主机的端口转发到 WSL 里的服务上。
如何有效设置 Windows 到 WSL 的端口转发
记住,所有这些操蛋的命令都得在 管理员权限的命令提示符 (CMD) 下运行,否则你连屁都改不了。
步骤 1:找出你 WSL 的“内网”IP 地址
你得知道你 WSL 虚拟机现在用的是哪个 IP 地址。在你的 WSL 终端里输入:
ip a
找到 eth0 网卡下面的 inet 地址,那个就是你 WSL 的 IP。通常看起来像 172.xx.xx.xx。
比如你之前给老子的就是 172.21.111.236。记下这个 IP,后面要用。
步骤 2:删除所有可能碍事的旧转发规则(可选但推荐)
如果之前设置过一些可能冲突的转发规则,或者你不确定有没有,最好先给老子清干净。
如果你知道具体要删除的规则:
比如你要删除把 Windows 192.168.2.4:2343 转发到 127.0.0.1:2343 的规则,就像这样:
netsh interface portproxy delete v4tov4 listenport=2343 listenaddress=192.168.2.4
如果你想彻底清空所有旧的转发规则(慎用,会清空所有转发):
netsh interface portproxy reset
步骤 3:添加你想要的转发规则
现在,把 Windows 上指定端口的流量转发到你 WSL 里的目标 IP 和端口。
命令格式:
netsh interface portproxy add v4tov4 listenport=<Windows_监听端口> listenaddress=<Windows_监听IP> connectport=<WSL_目标端口> connectaddress=<WSL_IP地址>
解释一下这几个参数:
<Windows_监听端口>:你希望在 Windows 主机上暴露出来的端口。比如2343。<Windows_监听IP>:Windows 主机监听的 IP 地址。0.0.0.0:表示监听所有可用的网络接口。推荐使用这个,这样从外部网络也能访问。127.0.0.1:只监听本地环回地址,只能在 Windows 本机上访问。- 你自己的某个具体 IP:比如
192.168.2.4,只监听这个 IP 地址。
<WSL_目标端口>:WSL 里面你服务实际监听的端口。通常和 Windows 监听端口一样,比如2343。<WSL_IP地址>:你 WSL 的 IP 地址,就是你在步骤 1 查到的那个,比如172.21.111.236。
举个例子: 把 Windows 所有接口的 2343 端口流量转发到 WSL 的 172.21.111.236:2343:
netsh interface portproxy add v4tov4 listenport=2343 listenaddress=0.0.0.0 connectport=2343 connectaddress=172.21.111.236
步骤 4:验证你的转发规则是否生效
添加完规则后,赶紧检查一下,看看有没有生效。
netsh interface portproxy show all
你应该能在输出里看到你刚刚添加的那条规则。
转发规则的持久性(这是重点!)
你用 netsh interface portproxy 设置的这些规则,他妈的都是 持久化 的。也就是说,你的 Windows 电脑就算重启一百遍,这些规则也还在,不需要你再重新设置。
搞定这些,你小子就能把 Windows 上的流量好好地转发到 WSL 里去了。别忘了在 WSL 里面把你的服务启动起来,并且监听在正确的端口上!
把 Windows 主机的端口转发到 WSL 里的服务
https://www.quietphoenix.top/archives/wei-ming-ming-wen-zhang-VzTNJ91A