从XP(2001)开始,Windows就内置了网络端口转发功能,传入本地计算机端口的任何TCP连接(IPV4/IPV6),都可以被转发到本地或远程计算机的另一个端口,而无需本地计算机真的运行一个监听该端口的服务。
在Linux中,使用iptables可以很轻易地实现这一功能,而在Windows中,则由Routing and Remote Access服务(RRAS)来配置端口转发,但还有一种更简单的、适合任意windows版本的方法:netsh。
可以使用命令netsh的portproxy模式配置Windows中的端口转发,命令语法如下:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
listenaddress:监听地址
listenport:监听端口
connectaddress:转发地址
connectport:转发端口
一个使用示例:通过非标准端口连接远程桌面(可以更改RDP服务的端口,此处只是为了举例),即将TCP端口3340重定向到本地端口3389(标准RDP端口)。
以管理员身份启动命令提示符,并运行如下命令:
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110
其中10.1.1.110为提供远程桌面服务的计算机IP地址。
使用netstat命令看下3340端口此时是否处于监听状态:
netstat -ano | findstr :3340
如果此时看不到一个监听在3340端口的进程,请检查如下两个地方:
1、检查IP Helper服务是否运行(win+R:service.msc查看)
2、检查网络接口是否启用了IPV6支持(检查适配器属性,是否勾选Intermet Protocol Version6(TCP/IPV6)/Internet协议版本6(TCP/IPV6))
这是实现端口转发的先决条件。
此时可以尝试远程桌面连接10.1.1.110:3340,如果一切正常,将和连接10.1.1.110:3389效果一样。
记得在Windows防火墙中开放3340端口
可以通过图形界面配置,或者使用命令:
netsh advfirewall firewall add rule name=”forwarded_RDPport_3340” protocol=TCP dir=in localip=10.1.1.110 localport=3340 action=allow
可以创建任意数量的转发规则,且所有netsh interface portproxy规则都是永久的,不会随着系统重启而失效。可以通过如下命令显示当前计算机的所有转发规则:
netsh interface portproxy show all
或者使用如下命令获取端口代理配置:
netsh interface portproxy dump
可以使用如下命令删除某个端口转发规则:
netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110
使用如下命令清除所有规则:
netsh interface portproxy reset
如果想将传入的tcp连接转发到另外一台计算机,可以使用(将连接请求转发到192.168.100.101:3389):
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101
如果想让远程服务看起来像是运行在本地,可以使用(此时访问localhost:5555将重定向到157.166.226.25:80):
netsh interface portproxy add v4tov4 listenport=5555 connectport=80 connectaddress= 157.166.226.25 protocol=tcp
注意:在Windows Server 2012 R2中端口转发规则可能在系统重启后被重置,请检查网络接口是否中断或者服务器IP地址是否变更(建议设置为静态地址),另一个解决方法是在windows任务计划程序中添加一个配置规则的开机启动脚本。
在Windows Server 2003 / XP中,还需要确保注册表HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters中的IPEnableRouter参数已设置为1。
以上内容译自:http://woshub.com/port-forwarding-in-windows/
之前遇到过一个问题,一组独立网络中的服务器需要添加到现有的zabbix监控系统中,而该系统中的已没有多余的服务器可供安装zabbix proxy,仅有一台windows(192.168.0.179)服务器具有访问现有监控系统中某个zabbix proxy(132.222.222.222)的条件,此时就可以使用这台windows做跳板来监控其所在网络中的其他服务器。
netsh interface portproxy add v4tov4 listenport=10051 listenaddress=192.168.0.179 connectport=10051 connectaddress=132.222.222.222
待监控网络中的zabbix agent应设置为active模式,且ServerActive字段应设置为192.178.0.179,这样即可在不对现有网络做任何变动的条件下实现对该网络的监控。
本文出处:代码的荣耀
原文链接:http://www.icoder.top/blog
作者/译者:zhangrj
At this time I aam going away to doo my breakfast, after havng my breakfast coning
again to read otther news.