Windows自带netsh interface portproxy可实现TCP端口转发,需启用iphlpsvc服务、配置v4tov4规则(指定listenaddress/listenport与connectaddress/connectport)、放行防火墙入站端口,规则重启后失效需脚本固化。
用 windows 自带的 netsh interface portproxy 就能直接配置本地端口转发,不用装软件、不依赖第三方工具,规则重启后依然有效。关键是要理解监听端口在哪听、流量往哪转,再配上防火墙放行,整个过程5分钟就能跑通。
明确转发方向和地址类型
netsh portproxy 只支持 TCP 协议,且必须指定地址族。最常用的是 v4tov4(IPv4 到 IPv4),适用于绝大多数本地开发、测试和内网穿透场景。
- 监听地址(listenaddress):本机上接收请求的 IP,填 0.0.0.0 表示监听所有 IPv4 接口,填 127.0.0.1 则仅限本机访问,填具体局域网 IP(如 192.168.1.100)可让同网段设备访问
- 连接地址(connectaddress):目标服务所在的地址,可以是 127.0.0.1(本地另一个端口)、局域网内其他机器(如 192.168.1.50),也可以是虚拟机 IP(如 172.16.88.100)
- 端口不能冲突:监听端口和目标端口尽量不同,避免循环或绑定失败
添加与管理转发规则
所有操作需以管理员身份运行命令提示符(CMD 或 PowerShell)。
- 添加规则(例如把本机 8080 请求转到本地 3000):
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=127.0.0.1 connectport=3000 - 查看当前所有规则:
netsh interface portproxy show all - 删除某条规则(按监听地址+端口):
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=8080 - 清空全部规则:
netsh interface portproxy reset
必须开放 Windows 防火墙入站规则
即使转发规则生效,如果防火墙没放行监听端口,外部请求仍会被拦截。
- 在“高级安全 Windows Defender 防火墙”中,新建一条入站规则
- 规则类型选“端口”,协议选 TCP,特定本地端口填你设置的 listenport(如 8080)
- 操作选“允许连接”,配置文件按需勾选(域、专用、公用)
- 也可用命令一键添加(管理员权限):
netsh advfirewall firewall add rule name="PortProxy_8080" dir=in action=allow protocol=TCP localport=8080
验证是否成功
别只看命令没报错,要实际测通才算数。
- 检查监听状态:
netstat -ano | findstr :8080 —— 应看到 LISTENING 状态,PID 对应系统进程(通常是 svchost) - 本地测试:
浏览器访问 http://127.0.0.1:8080 或用 curl http://localhost:8080 - 局域网测试(若 listenaddress 设为 0.0.0.0 或具体局域网 IP):
另一台电脑访问 http://[你的IP]:8080 - 目标服务必须已启动:转发本身不启动服务,只是中转;确保 connectaddress:connectport 确实有程序在监听











