跳到主要内容

Windows 端口转发功能使用教程

简介

本教程详细介绍如何使用 Windows 自带的 netsh 命令实现端口转发功能。通过端口转发,可以将外部网络请求转发到内部网络的特定服务器,实现内网服务的对外访问。


应用场景

网络拓扑说明

  • 服务器A:内网地址 192.168.0.101,具有公网访问能力
  • 服务器B:内网地址 192.168.0.80,位于内网,无法直接外网访问
  • 目标:配置服务器A的 7001 端口转发到服务器B的 8080 端口

操作步骤

步骤1:登录服务器A

以管理员身份登录到服务器A(192.168.0.101)。

步骤2:打开命令提示符

  1. 点击 开始运行
  2. 在弹出的对话框中输入 cmd
  3. Enter 键打开命令提示符窗口

步骤3:配置端口转发规则

在命令提示符中输入以下命令:

netsh interface portproxy add v4tov4 listenaddress=192.168.0.101 listenport=7001 connectaddress=192.168.0.80 connectport=8080

参数说明

  • listenaddress:监听地址(服务器A的IP)
  • listenport:监听端口(外部访问端口)
  • connectaddress:目标地址(服务器B的IP)
  • connectport:目标端口(内部服务端口)

验证配置

查看所有端口转发规则

netsh interface portproxy show all

预期输出示例

侦听 ipv4:                 连接到 ipv4:

地址 端口 地址 端口
--------------- ---------- --------------- ----------
192.168.0.101 7001 192.168.0.80 8080

测试端口转发

使用 telnetTest-NetConnection 命令测试转发是否生效:

Test-NetConnection 192.168.0.101 -Port 7001

管理端口转发规则

删除特定转发规则

netsh interface portproxy delete v4tov4 listenaddress=192.168.0.101 listenport=7001

重置所有端口转发策略

netsh interface portproxy reset

常见问题排查

问题1:端口转发不生效

可能原因及解决方案:

  1. 防火墙阻止:检查 Windows 防火墙是否允许 7001 端口的入站连接
  2. IP配置错误:确认 listenaddressconnectaddress 的IP地址正确
  3. 服务未启动:确保服务器B的 8080 端口服务正常运行

问题2:命令执行权限不足

解决方案:

  • 管理员身份运行命令提示符

高级用法

IPv6 到 IPv4 转发

netsh interface portproxy add v6tov4 listenaddress=:: listenport=7001 connectaddress=192.168.0.80 connectport=8080

IPv4 到 IPv6 转发

netsh interface portproxy add v4tov6 listenaddress=192.168.0.101 listenport=7001 connectaddress=2001:db8::1 connectport=8080

注意事项

  1. 权限要求:执行 netsh 命令需要管理员权限
  2. 防火墙配置:确保 Windows 防火墙允许转发端口的通信
  3. 网络连通性:服务器A和服务器B之间必须网络可达
  4. 端口占用:确认监听端口(7001)未被其他服务占用
  5. 重启生效:某些配置更改可能需要重启网络服务或系统

扩展阅读