win下进行端口转发

By | 2019-09-21
//显示所有 portproxy 参数,包括 v4tov4、v4tov6、v6tov4 和 v6tov6 的端口/地址对。
C:\>netsh interface portproxy show all
//因为没有配置过它,所以没有东西可以显示。

//添加配置: 本机监听10022端口,当有socket连接到10022端口时,本机就连接到192.168.2.53的22端口,本机的10022端口可以接受的连接地址为"*",使用的协议为tcp,当前仅支持传输控制协议 (TCP)。
C:\>netsh interface portproxy add v4tov4 listenport=10022 connectaddress=192.168.2.53 connectport=22 listenaddress=* protocol=tcp
//添加完毕。

//显示所有。
C:\>netsh interface portproxy show all

侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
*               10022       192.168.2.53    22

//删除配置: 本机的监听端口为10022,10022端口接受的连接地址为"*",使用的协议为tcp,当前仅支持TCP协议。
C:\>netsh interface portproxy delete v4tov4 listenport=10022 listenaddress=* protocol=tcp
//删除完毕。

//显示所有。
C:\>netsh interface portproxy show all
//因为所有的配置均已删除,所以没有东西可以显示。

//查看帮助信息。
C:\>netsh interface portproxy /?
//略。

//查看帮助信息。
C:\>netsh interface /?
//略。

//查看帮助信息。
C:\>netsh /?

经过在网上搜索,发现windows系统,包括xp  2003,2008等,netsh工具都自带portproxy功能。目前只支持tcp协议的端口转发,前提需要作为portproxy的主机需要安装IPV6,安装可以不启用IPV6。
A.配置方法
假定需要通过192.168.1.8的14941端口连接192.168.1.118的1494端口,则需要在192.168.1.8主机的命令行输入如下语句
如果已经安装IPV6,该条语可以不需要
netsh  interface ipv6 install
可不用指定本地监听地址,这样可以通过操作系统提供浮动地址来实现,如果操作系统开启了主机防火墙,需要放行TCP 14941的入站连接

netsh interface portproxy add v4tov4 listenaddress=192.168.1.8 listenport=14941 connectaddress=192.168.1.118  connectport=1494

netsh interface portproxy add v4tov4                           listenport=14941 connectaddress=192.168.1.118  connectport=1494

取消上面配置的端口转发,可以用如下语句:

netsh interface portproxy delete v4tov4 listenaddress=192.168.1.8  listenport=33891
如果想查看已经配置了哪些端口转发,可以用如下语句:

netsh interface portproxy show  v4tov4

B.优点
可以随时根据需要添加或删除端口转发条目,并且重启操作系统仍能自动保存之前的配置并自动启用,不像HAproxy修改完配置文件还需重启HAproxy。
网上有的说xp配置端口转发不起作用,估计是没有安装IPV6的缘故,用xp测试,安装了IPV6后可以实现端口转发,并且不需要开启路由和远程访问服务。另外考虑到端口转发的冗余,可以多台主机都配置端口转发。

netsh interface portproxy show all
//netsh interface portproxy show v4tov4
netsh interface portproxy add v4tov4 listenport=8001 connectaddress=192.168.40.1 connectport=8001
//netsh interface portproxy add v4tov4 listenaddress=192.168.192.11 listenport=801 connectaddress=192.168.40.1 connectport=8001
netsh interface portproxy delete v4tov4 listenaddress=192.168.192.11 listenport=8001
netsh interface portproxy delete v4tov4 listenport=8001 删除本地端口8001的端口转发配置。

发表回复

您的电子邮箱地址不会被公开。