Windows下端口转发,以实现远程端口3389为例

Windows下端口转发,以实现远程端口3389为例

场景如下

先说明一下场景

服务器A处于局域网环境内,IP为192.168.1.200(同时作为虚拟机B的网关192.168.137.1

服务器A中安装有不同网段的虚拟机B,IP为192.168.137.2

A可实现对B的远程,但A同网段的其他机器无法ping通B

开始实现

方式一:CMD Windows自带端口转发

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

ip helper

netsh interface portproxy支持windows xp(含)以上,依赖于IP Helper服务

在服务器A执行如下CMD命令,建立端口转发规则192.168.1.200:13389 ==> 192.168.137.2:3389

语法

# 语法
# netsh interface portproxy add v4tov4 listenport=[监听端口号] listenaddress=[本地IP地址] connectport=[目标端口号] connectaddress=[目标IP地址]
netsh interface portproxy add v4tov4 listenaddress=192.168.1.200 listenport=13389 connectaddress=192.168.137.2 connectport=3389
# 同上
netsh interface portproxy add v4tov4 listenport=13389 connectaddress=192.168.137.2 connectport=3389

执行完毕,可通过远程访问192.168.1.200:13389实现对192.168.137.2的远程访问。

与此同时

代理举例

# 数据库端口转发
netsh interface portproxy add v4tov4 listenport=3307 connectport=3306 connectaddress=192.168.1.100
# SSH 端口转发
netsh interface portproxy add v4tov4 listenport=2222 connectport=22 connectaddress=192.168.1.102
# Web服务器端口转发
netsh interface portproxy add v4tov4 listenport=80 connectport=8080 connectaddress=192.168.1.103
# FTP服务器端口转发
netsh interface portproxy add v4tov4 listenport=2121 connectport=21 connectaddress=192.168.1.104

查看本机添加的所有规则

netsh interface portproxy show all

删除指定规则

netsh interface portproxy delete v4tov4 listenaddress=192.168.1.200 listenport=13389

删除全部规则

netsh interface portproxy reset

导出备份规则

netsh interface portproxy dump > c:\portproxy.txt

导入还原规则

netsh -f c:\portproxy.txt

Netsh interface portproxy 命令

方式二:Windows下使用NGINX实现端口转发

在服务器配置NGINX,配置文件添加如下配置项:

stream {
    upstream mstsc {
        server 192.168.137.2:3389;
    }

    server {
        listen 33389;
        proxy_pass mstsc;
    }
}

启动NGINX后,可通过远程访问192.168.1.200:33389实现对192.168.137.2的远程访问。

扩展

  • 同理,可使用同样的操作添加实现对其他端口的转发规则。
  • 如果无法访问请取人防火墙是否开启对应规则和端口或被安全软件拦截