Windows使用命令转发端口
在Windows系统中,从XP开始就内嵌了一个设置网络端口转发的功能。依靠这个功能,任何到本地端口的TCP连接(ipv4或者ipv6)都能够被转发到任意一个本地端口,甚至是远程主机的某个端口。这种配置方法适用于Windows的任意版本。
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=200 connectaddress=192.168.1.1 connectport=80
参数意义:
1.listenaddress — 等待连接的本地ip地址
2.listenport — 本地监听的TCP端口(待转发)
3.connectaddress — 被转发端口的本地或者远程主机的ip地址
4.connectport — 被转发的端口
使用netstat命令来验证3340端口是否正在监听中
netstat -ano | findstr :200
注意:
如果这条命令没有返回任何信息,或者说通过netsh接口并没有实现端口转发的功能,那么需要查看下系统是否开启了iphlpsvc(ip Helper)服务。
并且需要在网络配置中查看端口转发规则是否被创建、IPv6的支持是否开启。
你可以创立任意的Windows端口转发规则,所有的netsh接口下的端口代理规则都是永久的,并且储存在系统中(不受开机重启的影响)
下面的命令是用来展示系统中的所有转发规则:
netsh interface portproxy show all
在本例中仅有一条从200到80的转发命令
netsh interface portproxy dump
#========================
# 端口代理配置
#========================
pushd interface portproxy
reset
add v4tov4 listenport=200 connectaddress=192.168.1.1 connectport=80
popd
# 端口代理配置结束
删掉一个特定的端口转发规则命令:
netsh interface portproxy delete v4tov4 listenport=200 listenaddress=127.0.0.1
清空当前所有的配置规则命令:
netsh interface portproxy reset
注意:
1、这些转发规则仅仅适用于TCP端口,对于UDP的端口转发,使用上面的方法是无效的。还有在配置规则时,不能将127.0.0.1作为连接地址。
2、在Windows 2003/XP中,你必须在注册表(HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters)中找到并设置IPEnableRouter参数为1才能实现端口转发。