如何在Windows中使用netsh命令进行端口转发

文章目录

    • 1.前言:
    • 2.新增一个转发
    • 3. 常用命令:

1.前言:

在Windows系统中,从XP开始就内嵌了一个设置网络端口转发的功能。依靠这个功能,任何到本地端口的TCP连接(ipv4或ipv6)都能够被转发到任意一个本地端口,甚至是远程主机的某个端口。并且,Windows系统并不需要去开启监听这个转发端口的服务。

在Windows服务器中,远程访问控制协议(RRAS)通常被用作端口转发,但是有一种更简单的配置方法,并且这种配置方法适用于windows的任意版本。

Windows系统下的端口转发使用portproxy模式下的netsh命令,该命令的使用前提是要在管理员身份打开cmd进行执行。

在Linux中,使用iptables可以非常轻松地配置端口重定向。在Windows Server系统上,路由和远程访问服务(RRAS)通过使用虚拟专用网络 (VPN) 或拨号连接支持远程用户或站点到站点连接,但这种方式相对较为麻烦。其实,除此之外还有一种更为简单的方法可以帮助我们在Windows中实现端口转发,即我们可以使用命令Netsh的Portproxy模式配置Windows中的端口转发。

2.新增一个转发

该命令的语法如下:

netsh interface portproxy add v4tov4 listenaddress=localaddress
listenport=localport connectaddress=destaddress connectport=destport

语法解释:

listenaddress - 等待连接的本地IP地址。

listenport - 本地侦听TCP端口。

connectaddress - 将传入连接重定向到本地或远程IP地址(或DNS名称)。

connectport - 一个TCP端口,来自listenport的连接会被转发到该端口。假设当前我们的RDP服务端口在一个非标准端口上进行响应,如3340(端口可以在服务设置中更改)。为此,我们需要将传入流量从TCP端口3340重定向到另一个本地端口 - 3389(即标准rdp端口)。

我们以管理员身份启动命令提示符并执行以下命令:

netsh interface portproxy add v4tov4 listenport=3340
listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110

如何在Windows中使用netsh命令进行端口转发_第1张图片
10.10.1.110 - 计算机的当前IP地址。

使用netstat确保3340端口当前处于被侦听状态:

netstat -ano | findstr :3340

在这里插入图片描述
注意:如果该命令未返回任何内容并且通过netsh interface portproxy进行端口转发不成功,则请确保iphlpsvc(IP Helper)服务当前已在你的系统上运行。
在这里插入图片描述
必须在为其创建端口转发规则的网络接口上启用IPv6支持。

如何在Windows中使用netsh命令进行端口转发_第2张图片
以上条件必须满足,如果没有IP Helper服务且未启用IPv6支持,则端口重定向将不起作用。

你可以使用其PID找出正在侦听此端口的进程(在我们的示例中PID为636):

tasklist | findstr 636

让我们使用任意的RDP客户端尝试从远程系统连接到此计算机。指定RDP端口3340,在RDP服务器地址后以冒号分隔,例如10.10.1.110:3340

如何在Windows中使用netsh命令进行端口转发_第3张图片
如果不出问题的话,连接应该会被成功建立。

重要:请确保防火墙(Windows防火墙或通常包含在杀毒软件中的第三方防火墙)允许到新端口的传入连接。 如有必要,可以使用以下命令添加新的Windows防火墙规则:

netsh advfirewall firewall add rule name=”forwarded_RDPport_3340”
protocol=TCP dir=in localip=10.1.1.110 localport=3340 action=allow

你可以创建任意数量的Windows端口转发规则。所有netsh interface portproxy规则都是持久性的,并会在Windows系统重启后被保存。

显示系统中的转发规则列表:

netsh interface portproxy show all

在我们的例子中,只有一个转发规则即从3340到3389端口的转发:

如何在Windows中使用netsh命令进行端口转发_第4张图片

3. 常用命令:

  1. 查看系统中的所有转发规则是否生效:
netsh interface portproxy show all
  1. 查看端口转发的设置:
netsh interface portproxy dump
  1. 删除指定的端口转发规则::
netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110
  1. 清除所有当前的端口转发规则:
netsh interface portproxy reset

你可能感兴趣的:(运维部署,windows,网络,服务器)