利用netsh命令实现端口映射(端口转发)的功能(netsh命令仅在windows系统下可用,文章后面附linux端口转发)

使用场景:

购买了一台windows云主机,把内网3389远程连接的端口映射到公网23789。

目的:在外网使用公网IP:23789远程连接windows云主机,在内网(有多台云主机且都在同一个局域网)其他主机上使用内网IP:3389访问。

 

  1. 打开命令提示符(Command Prompt)或Windows PowerShell。你可以在开始菜单中搜索“cmd”或“PowerShell”来找到它们。

  2. 使用netsh命令来配置端口转发。以下是一些常见的用法:

    a. 端口转发:netsh interface portproxy add v4tov4 listenaddress=本地IP listenport=本地端口 connectaddress=目标IP connectport=目标端口  #目标IP可以是本机的当前网卡IP,也可以是本机的其他网卡的IP,也可以是其他可以访问到的主机的IP

    1. listenaddress可以不写,默认监听本机所有IP的请求,listenaddress指定其中某一个IP地址。那么只有请求这一个IP地址的本地端口才能转发到目的IP。
    2. netsh interface portproxy add v4tov4 listenaddress=192.168.1.100 listenport=23789 connectaddress=192.168.1.100 connectport=3389    #只有访问192.168.1.100的23789才转发请求。
    3. netsh interface portproxy add v4tov4 listenport=23789 connectaddress=192.168.1.100  connectport=3389                                                 #访问本机任何IP的23789都能转发。
  3. 这将在本地IP的本地端口上监听连接,并将它们转发到目标IP的目标端口。

    b. 删除端口转发规则:

    netsh interface portproxy delete v4tov4 listenaddress=本地IP listenport=本地端口

    这将删除之前设置的端口转发规则。

  4. 确保端口转发规则生效,你可以运行以下命令来查看当前的端口转发规则列表:

    netsh interface portproxy show all
     

    在Linux中,你可以使用一些不同的工具和方法来进行端口转发,具体取决于你的需求和环境。以下是两种常见的方法:

    1. 使用iptables进行端口转发:

      iptables是Linux上用于配置防火墙规则的工具,也可以用于端口转发。你可以使用iptables来将传入的连接从一个端口转发到另一个端口。下面是一个示例,将本地端口80的传入连接转发到目标IP的端口8080:

       
      sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 目标IP:8080
      • iptables: 这是Linux上的防火墙配置工具。

      • -t nat: 这个部分指定了防火墙表(table)和链(chain)。在这里,-t nat表示你要操作的是NAT表,用于进行网络地址转换。

      • -A PREROUTING: 这个部分指定了规则要添加到哪个链中。在这里,-A PREROUTING 表示要将规则添加到 PREROUTING 链中,这是一个在数据包进入路由之前处理的链,通常用于进行端口转发。

      • -p tcp: 这个部分指定了数据包的协议类型,这里是TCP。

      • --dport 80: 这个部分指定了要匹配的目标端口,即传入连接的目标端口为80。

      • -j DNAT: 这个部分指定了要执行的操作。-j DNAT 表示要进行目标地址转换(Destination NAT),也就是将数据包的目标地址修改为指定的目标IP地址。

      • --to-destination 目标IP:8080: 这个部分指定了转发到的目标IP地址和端口。数据包将被转发到目标IP的8080端口。

       

      这个命令将传入的HTTP连接重定向到目标IP的8080端口。

      请注意,要使这些规则在系统重启后仍然生效,你需要保存iptables规则。

    2. 使用SSH进行端口转发:

      如果你希望在两个远程主机之间进行端口转发,可以使用SSH的端口转发功能。例如,你可以使用以下命令将本地端口8888的连接通过SSH通道转发到远程主机的80端口:

      ssh -L 8888:目标IP:80 用户名@远程主机IP

      这将在本地主机上创建一个监听端口8888的代理,所有传入的连接将被转发到目标IP的80端口。

      请注意,这种方法需要SSH服务器在目标主机上运行,并且需要有SSH登录的权限。

posted @ 2023-10-07 10:14  粉色纽扣  阅读(2691)  评论(0编辑  收藏  举报