netsh--windows下的端口转发

参考:
http://blog.zer01.net/?p=112
我今天本来是看到学长们在做笔试题,有一个iptables的题,准备回来宿舍之后ssh到实验室的ubuntu小鸡子上学一下iptables的,怎么变成学习netsh了[笑cry]。情况是宿舍的学长要用我的WIFI,而当我的windows连上外网之后,默认我的Mac是无法用WIFI通过我的windows连上我实验室的小鸡子的。得对我的windows加个端口转发策略。于是正好可以学一下好久之前就对其感到有点神秘的windows自带的netsh
原来windows自带了netsh这个工具可以进行在一张网卡的同一网段中进行端口转发(但是我暂时用不到)。还可以进行同一主机两个网卡之间的端口转发。
windows 7上就可以直接用netsh了,在xp/2003的话,要先安装ipv6。

netsh interface ipv6 install

注:如果在windows 7下用这个命令的话,会提示:
『找不到下列命令:interface ipv6 install。』

防火墙

我是说我之前怎么老是ping不通我自己在宿舍基本只作为一个路由器功能的windows呢,而且写这个博客之前我按照网上的博客写好了规则之后依然没有生效呢,查看我windows的监听的端口
这里写图片描述
发现其实已经在0.0.0.0上监听那个端口了。但是我用我的Mac扫我的windows,并没有扫到开放的指定端口。
netsh--windows下的端口转发_第1张图片
后来看看别人博客里提示的防火墙的问题,原来确实是由于我隐约感觉到的自己windows的防火墙策略的原因。按照网上博客说的,注:需要有管理员权限,防火墙需要关闭。这次我就把防火墙关了。

# windows 7 及以上
netsh advfirewall set allprofiles state off
# xp/2003
netsh firewall set opmode disable

然后立马就可以ping我的windows了。疑惑解开了。
netsh--windows下的端口转发_第2张图片
然后也立马就可以通过我的windows访问我在实验室的小鸡子了。也就是说netsh配置生效了。
netsh--windows下的端口转发_第3张图片
注意这里ssh的目标就不是你真正要连的那台机器了,而是你windows与你的PC同网段的那个网卡上的IP和打开的端口了。因为这里我是用我的windows发出WIFI,然后我windows的无线网卡IP为192.168.23.1,当然我windows的有线网卡的IP是172的,跟我要连的实验室的小鸡子的IP是一个网段的(学校内网),到时候要ssh就ssh到我的windows就好了。

netsh命令

删除已有的netsh端口转发策略

netsh interface portproxy delete v4tov4 listenport=xxx

netsh--windows下的端口转发_第4张图片
这里按格式来说,是要写listenaddress的。如果不写的话,就是默认0.0.0.0。(因为当时加这个策略的时候没有写listenaddress,然后就在0.0.0.0监听了)。

添加一条netsh规则

netsh interface portproxy add v4tov4 listenaddress=192.168.23.1 listenport=xxx connectaddress=172.xx.xx.xxx connectport=xxx

netsh--windows下的端口转发_第5张图片

查看已有的netsh规则

netsh interface portproxy show all

关闭了防火墙之后确实扫到的端口多了。
顺便看了一下,nmap的扫描结果也没那么准啊。
我明明打开了某2开头端口,但是并没有扫到(也许用nmap -Pn [ip]的时候nmap扫的有点匆忙,漏了一些)。

直到我用-p选项指定了扫哪个端口区间的时候,才扫到了。
我虽然确实打开了那些端口,但是并不是nmap所显示的什么IIS,NFS-or-IIS,我并没有装IIS。
然后想到,netsh中的单词『portproxy』,顾名思义,不就是端口代理吗,也就是四层代理。
下次弄一下linux下的四层代理。

你可能感兴趣的:(网络编程)