// 显示所有 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 /?
// 略。
-----haproxy 主要用于负载,如果只是负载一个,那就成为端口映射了,但是毕竟是 linux 下面的程序。
-----windows 下也有一个小工具:portforward.exe,图形界面容易操作,个人平常使用可以,但是也没有办法实现与程序交互。
经过在网上搜索,发现 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 后可以实现端口转发,并且不需要开启路由和远程访问服务。另外考虑到端口转发的冗余,可以多台主机都配置端口转发。