如何在Window中进行TCP端口转发(Port Forwarding)

在Linux系统中我们可以使用ssh或者autossh进行端口转发。

在Linux中使用ssh或者autossh进行端口转发可以查看这篇博客:https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/

 

在Window中我们可以使用netsh命令进行端口转发。

注意:在window中现在只能针对TCP请求进行端口转发,不能对UDP协议进行转发。

一、端口转发介绍

端口转发(Port Forwarding):通过监听一个端口,将所有收到的数据,转发到另一个配置的本地端口或者远程地址的端口中。

可以看一张图片来大致的了解一下端口转发。

如何在Window中进行TCP端口转发(Port Forwarding)

上面的图解:当我们去请求【本地:PortA】的时候,相当于请求的【远程或者本地:PortB】一样。

 

二、在window中使用netsh命令

1.在window中,进行端口转发时,使用portproxy模式下进行配置。必须使用管理员身份运行下面的命令。

2.创建一个端口转发:

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

     参数说明:

  • interface portproxy:切换到端口代理的上下文中。固定不变。
  • add:表示添加一个端口转发。
  • v4tov4:表示添加的类型。还可以v4tov6,v6tov4,v6tov6四种参数
  • listenport:想要监听那个端口,相当于图1中的PortA
  • listenaddress:配置监听的地址,如何配置0.0.0.0表示本地的任何地址,如果是127.0.0.1,只有在请求通过这个回环地址,才会进行端口转发。监听的网卡地址。
  • connecport:转发到的端口,相当于图1中的PortB。
  • connectaddress:配置的转发的地址,可以是这个机器连接到的任何地址。

3.查看所有的端口转发:

     netsh interface portproxy show all

4.删除一个端口映射

    netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=0.0.0.0

5.删除所有的端口映射

   netsh interface portproxy reset

6.显示端口配置脚本

    netsh interface portproxy dump

如何在Window中进行TCP端口转发(Port Forwarding)

三、使用示例

1.远程连接示例1:

     实现目的:我们想通过一个非标准的远程桌面连接端口,进行远程桌面连接请求。我们想通过请求3340,来完成远程桌面连接。而不是使用默认的端口3389。

    实现步骤:

  1. 远程桌面连接默认的使用的端口是3389端口首先将3340转发到3389,完成请求3340相当于请求3389。完成请求3340完成远程桌面连接。

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

如何在Window中进行TCP端口转发(Port Forwarding)

2.查看端口转发的映射:

netsh interface portproxy show all

如何在Window中进行TCP端口转发(Port Forwarding)

或者使用

netstat -ano | findstr 3340

如何在Window中进行TCP端口转发(Port Forwarding)

我们可以从中看到,正在监听3340端口

如果没有显示的话,检查IP Helper服务是否开启。

如何在Window中进行TCP端口转发(Port Forwarding)

检查IPv6支持是否开启,

如何在Window中进行TCP端口转发(Port Forwarding)

3.连接远程桌面服务:

如何在Window中进行TCP端口转发(Port Forwarding)

如何在Window中进行TCP端口转发(Port Forwarding)

从而使用3340端口完成远程桌面连接。

注意:进行远程桌面连接之前,确保我们的电脑可以进行远程桌面连接。

如何在Window中进行TCP端口转发(Port Forwarding)

2.使用示例2:

使用目的:本地机器通过浏览器请求服务器上的资源(192.168.15.177:8888)的资源。

使用步骤:

1.将本地的80端口请求,转发到另一台机器8888端口。

netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=8888 connectaddress=192.168.15.177

2.直接在浏览器上请求:http://localhost,相当于请求了192.168.15.177:8888的资源内容。