netsh interface portproxy 是 Windows 系统内置的一个命令行工具,用于实现 TCP 端口转发(也称作端口代理或端口映射)。它依赖于 Windows IP Helper 服务,通过监听指定的本地 IP 地址和端口,将收到的 TCP 流量转发到另一个目标 IP 和端口上。类似于简单的网络层代理。
1. 功能与主要使用场景
-
功能简介
- 通过指定“监听地址/端口”与“连接地址/端口”,netsh interface portproxy 能将进入某个端口的 TCP 流量代理到另一台主机或本机的其他端口。
- 目前仅支持 TCP 协议,不支持 UDP 协议。
- 依赖于 Windows 的 IP Helper 服务(IPhlpsvc),并且需要在监听的网络接口上启用 IPv6 支持(即使并不主动使用 IPv6)。
-
主要使用场景
- 内外网穿透:在 NAT 环境下,将内网服务器的端口映射到外网,从而使外部能够访问内部服务。
- 调试与测试:开发和测试环境中,可以利用端口转发将多个服务映射到不同端口上,方便调试。
- 安全隐蔽:通过将真实服务端口隐藏于代理端口后,能在一定程度上减少直接攻击风险。
- 负载均衡与代理:在某些场景下,可作为简单的代理或负载转发方案的一部分使用。
常用指令
需以 管理员身份 运行命令提示符或 PowerShell。
| 指令 | 作用 | 示例 |
|---|---|---|
add v4tov4 |
添加 IPv4 到 IPv4 的转发规则 | netsh interface portproxy add v4tov4 listenaddress=<监听地址> listenport=<监听端口> connectaddress=<目标地址> connectport=<目标端口> [protocol=tcp] |
delete v4tov4 |
删除规则 | netsh interface portproxy delete v4tov4 listenport=<监听端口> [listenaddress=<监听地址>] |
show all |
查看所有规则 | netsh interface portproxy show all |
reset |
重置所有规则 | netsh interface portproxy reset |
-
其他辅助命令
- dump:将当前规则导出为脚本格式,便于备份和恢复。
- reset:重置所有已配置的端口转发规则。
- set:修改现有规则的参数。
注意事项
防火墙配置
重点
Windows 防火墙需放行 监听端口(入站规则)和 目标端口(出站规则)。管理员权限
修改端口转发规则必须使用管理员权限。协议兼容性
仅支持 TCP 协议,不支持 UDP。IP Helper 服务
确保 Windows IP Helper 服务(IPhlpsvc)正在运行,否则端口代理功能不会生效。IPv6 支持
即使仅用于 IPv4 转发,也需要确保 IPv6 堆栈已安装,因为端口代理依赖于它。重启失效?
规则写入系统注册表,重启后仍有效(与临时性的iptables不同)。目标地址限制
目标地址可为本地或远程 IP(如connectaddress=10.0.0.5或connectaddress=example.com)。
其他操作系统替代方案
| 系统/工具 | 实现方式 | 示例命令 |
|---|---|---|
| Linux |
iptables 或 nftables
|
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080 |
| macOS |
pf (Packet Filter) |
编辑 /etc/pf.conf 并添加 rdr pass on en0 proto tcp from any to any port 80 -> 192.168.1.100 port 8080
|
| 跨平台工具 |
socat (多功能网络工具) |
socat TCP-LISTEN:80,fork TCP:192.168.1.100:8080 |
| SSH 隧道 | 本地/远程端口转发 |
ssh -L 80:localhost:8080 user@jumpserver(将本地80端口转发到远程8080) |
| Nginx | 反向代理(应用层) | 配置文件中添加 proxy_pass http://192.168.1.100:8080;
|
总结
netsh interface portproxy 是一个简单而强大的 Windows 命令行工具,主要用于 TCP 端口转发,适用于内外网穿透、调试测试及安全代理等场景。虽然它仅限于 Windows,其他系统则需要借助如 iptables、socat、pf、rinetd 等工具实现类似功能。使用时要注意管理员权限、服务状态、防火墙设置以及 IPv6 堆栈的要求。