Windows 端口映射配置指南
在 Windows 系统中,可以通过netsh
命令行工具的portproxy
功能实现端口映射(端口转发),这在需要将外部网络请求转发到内网服务时非常有用(如远程访问内网服务器、游戏联机等场景)。
端口映射核心命令
1. 查询所有端口映射规则
查看当前系统中已配置的所有 IPv4 到 IPv4 的端口映射规则:
1 | netsh interface portproxy show v4tov4 |
2. 筛选特定 IP 的映射规则
查询包含指定 IP 的所有端口映射(支持内网 IP 或外网 IP):
1 | netsh interface portproxy show v4tov4 | find "目标IP" |
示例:查询包含内网 IP 192.168.1.1
的映射规则
1 | netsh interface portproxy show v4tov4 | find "192.168.1.1" |
3. 添加端口映射规则
将来自外网 IP: 外网端口的请求转发到内网 IP: 内网端口:
1 | netsh interface portproxy add v4tov4 |
参数说明:
listenaddress
:本地对外暴露的 IP(通常是公网 IP 或局域网出口 IP)listenport
:本地对外暴露的端口connectaddress
:需要转发到的内网目标 IPconnectport
:内网目标服务的端口
示例:将来自 2.2.2.2:8080
的请求转发到内网 192.168.1.50:80
1 | netsh interface portproxy add v4tov4 listenaddress=2.2.2.2 listenport=8080 connectaddress=192.168.1.50 connectport=80 |
4. 删除端口映射规则
删除指定的端口映射(需精确匹配外网 IP 和端口):
1 | netsh interface portproxy delete v4tov4 |
示例:删除 2.2.2.2:8080
的映射规则
1 | netsh interface portproxy delete v4tov4 listenaddress=2.2.2.2 listenport=8080 |
注意事项
- 管理员权限:执行
netsh portproxy
命令需要以管理员身份运行命令提示符(CMD),否则可能失败。 - 防火墙配置:
- 需在 Windows 防火墙中放行
listenport
(外网端口),否则外部请求会被拦截。 - 配置路径:控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则(端口)。
- 需在 Windows 防火墙中放行
- 适用场景:
- 远程访问内网服务(如通过公网访问内网的 Web 服务器、SSH 服务)。
- 解决端口冲突(如将默认端口转发到其他端口)。
- 虚拟机或容器的端口暴露(如将宿主机端口转发到虚拟机内部端口)。
- IPv6 支持:若需配置 IPv6 的端口映射,可将命令中的
v4tov4
替换为v6tov6
(IPv6 到 IPv6)或v4tov6
(IPv4 到 IPv6)。
示例场景
假设内网有一台 Web 服务器(IP:192.168.1.100
,端口:80
),需要通过路由器的公网 IP(203.0.113.5
)的8080
端口对外提供服务:
在路由器中配置端口转发(将
203.0.113.5:8080
转发到内网主机192.168.1.100:80
)。若内网主机本身需要作为转发节点,可在该主机上执行:
1
netsh interface portproxy add v4tov4 listenaddress=192.168.1.100 listenport=8080 connectaddress=192.168.1.100 connectport=80
通过上述配置,外部用户访问 203.0.113.5:8080
即可连接到内网的 Web 服务。
windows进行端口映射
1. 查询端口映射情况
1 | netsh interface portproxy show v4tov4 |
2. 查询某一个IP的所有端口映射情况
1 | netsh interface portproxy show v4tov4 | find "[IP]" |
3. 增加一个端口映射
1 | netsh interface portproxy add v4tov4 listenaddress=[外网IP] listenport=[外网端口] connectaddress=[内网IP] connectport=[内网端口] |
4. 删除一个端口映射
1 | netsh interface portproxy delete v4tov4 listenaddress=[外网IP] listenport=[外网端口] |
v1.3.10