windows tcp端口映射或端口转发
windows tcp端口映射或端口转发
windows内部有一个叫netsh的玩意,可以把tcp端口进行映射或转发,可惜不支持udp。
举个例子:
一台windows有一个80端口,对外可以访问。
另有一个99端口,不能对外访问,只能本机访问。
现在就用这个功能,把80端口映射到99端口,来实现外部访问本机80端口,实际上是访问了本机的99端口。过程:(下面的端口都指tcp端口)
1.打开cmd
2.安装:
非XP只需要 netsh interface ipv4 install
XP除了需要跑这条外,还另需要跑 netsh interface ipv6 install
3.重启windows
4.打开cmd
5.保证此时80端口没有被占用。
6.添加映射/转发
假设windows的公网IP为1.1.1.1,局域网IP为2.2.2.2,则:
netsh interface portproxy add v4tov4 listenaddress=1.1.1.1 listenport=80 connectaddress=2.2.2.2 connectport=99
注意:1.IP必须是公网IP或局域网IP,不能是127.0.0.1。
2.设置后,svchost.exe应该会占用80端口。
7.删除映射/转发
netsh interface portproxy delete v4tov4 listenaddress=1.1.1.1 listenport=80
8.查看所有映射/转发
netsh interface portproxy show all
9.上述例子只是ipv4的例子。ipv6的话,只需要把命令中的ipv4换成ipv6即可。
后记:上述只是讲了如何设置,但实际应用中,还存在一些问题,比如:
1.性能如何?
2.本机转发的数据是内存复制还是走网卡?
等等,这里就麻烦大家自己去测试了。