探询MSN的闯关能力
环境:
ADSL---NAT(2000)----PC
NAT外网IP:219.154.214.150
NAT内网IP:10.41.221.2 255.255.255.0
PC:10.41.222.6 255.255.255.0 DG10.41.221.2
如果直接用这样的设置,PC不能上网,不能PING10.41.221.2
>但是,我用SNIFFER抓包发现,当PC请求时,NAT还是做了转发,而且得到了应答。发现了有趣的事:这个应答被转发,目的地址换成了10.41.222.6,是在外网卡上捕捉到的。
忽然突发奇想:如果这个报文被PC得到是不是就可以建立连接呢?继续做实验,把网络结构改一下:
ADSL----HUB----NAT、PC、
NAT(2000)和PC都接HUB,其中NAT的内部和外部网卡都接HUB,这里注意,我没有捆绑TCP/IP中的NETBIOS。
在PC上继续试图上网,不行,有点丧气,不过,仔细分析报文,发现问题出在:目的MAC不一致导致的!精神头又来了,立即修改PC的MAC为局端的MAC,重新启动计算机,用浏览器打开网页没有任何问题,上MSN也没有问题,有意思吧。此时PING10.41.221.2不能得到回应,这个好理解。
显然发送报文走网关经过NAT后可以得到回音,而回应的报文再次被发送出去的时时候,同时被PC接受,通讯就建立了。
有点没想通的是:如果不设置PC的网关,居然MSN依然在线,可以正常使用,而此时网页却无法打开了。请高手指教?
继续实验,这次是关于变长子网掩码的。环境依然是:
ADSL---NAT(2000)----PC
NAT外网IP:219.154.214.150
NAT内网IP:10.41.221.2 255.255.255.0
PC:10.41.221.200 DG10.41.221.2
分别设置PC的MASK为255.255.0.0和255.255.25.192
结果没什么新鲜。
放大以后就有意思了:NAT内网IP:192.168.0.1不变,MASK改为 255.255.0.0
PC的IP改为192.168.0.2,MASK改为255.255.255.0,这样的设置可以上网
PC的IP改为192.168.1.2,MASK改为255.255.255.0,这样的设置也可以上网
翻阅有关文章,一般都在NAT的内部网卡上设置多IP,比如:
192.168.0.1/24
192.168.1.1/24
分别对应192.168.0.0/24和192168.1.0/24网段,做内部PC的网关,是不是有点多余呀,实验表明:只要设置NAT的内部网卡的MASK为255.255.0.0,那么,192.168.0.0/16下的机器设置网关为192.168.0.1就可以上网,我的NAT服务器的操作系统是2000SERVER。
继续实验,关于花生壳域名的.
网络结构仍然是
ADSL+NAT(2000)+HUB——PC1(10.41.221.6/24)
|--------pc2(10.41.221.253/24)
其中NAT外部IP:219.154.214.150,映射23到PC2的23端口
NAT内部IP为10.41.221.2/24
PC1的网关10.41.221.2,安装花生壳
PC2提供TELNET服务23端口,没有在其上安装花生壳
实验过程,在PC1上用超级终端连接PC2
1 直接使用IP......................... 可以访问
2 使用花生壳域名................... 不能访问
抓到的报文分析:使用域名访问时,经过NAT后成功的返回了域名对应的IP219.154.214.150,接着PC1发出目标是219.154.214.150/端口23的数据报文,此时内部NAT网卡发出ICMP重定向报文,重定向指向PC2,PC2发出目标是PC1的呼应报文,而PC1没有接收该报文,因为自己并没有发送目标为PC2的报文,所以丢弃该报文,PC2也就得不到回答。通讯失败。以后PC1还有几次试图连接域名,但是PC2居然拒绝回任何报文,还不如第一次,好歹有个回应,PC2太痴情了。
这个过程验证了“唐无敌”的分析:http://bbs.netbuddy.org/network/5384-40.html 。唐无敌在结尾部分有这样一段话:
“如果服务器对A的响应包能够又返回防火墙的话,那么防火墙就能够通过状态表得知这是个响应而将响应包的源地址改成210.140.39.225,那么这个响应包再发回A的时候就是源地址210.140.39.225,目的地址192.168.0.2的响应包了。那么A就完成了和服务器的连接。 ”
转载地址:http://www.net130.com/CMS/Pub/network/network_manage/2006_05_28_22813.htm