网络通信 频道

地质勘察院:IP地址“突变”排查记

  编者按:某地质勘察院在进行网络升级后,终端电脑出现了IP地址“突变”现象,从而导致大量电脑无法上网。在故障排查中,发现了系列有趣的问题。

  一、 表象:终端电脑不能上网
  二、 分析:IP地址“突变”
  三、 引申问题:VISTA比XP还谦虚?
  四: ARP代理对不同格式ARP报文的实验

  【IT168 报道】先介绍一下某地质勘察院的网络结构:
  1、内部机器全部在同一网段,经过一个二层交换机接入防火墙,通过防火墙的NAT访问互联网;
  2、以前内部办公机器都是XP操作系统,现在新采购了一批VISTA操作系统新机器。

 

 

 一、 表象:终端电脑不能上网

  VISTA操作系统的办公机器在接入网络时,本地连接便显示网络连接正在识别,提示找不到网络;
  使用ifconfig/all命令查看VISTA系统的IP地址情况如下图所示:

  通过上图,我们发现:VISTA系统的首选地址变成了169.254.180.208,而不是先前收到设置的192.168.0.23了;
  用户反馈,如果VISTA系统的办公机器只接入交换机不会出现这种情况,但一旦接入防火墙,故障现象就会出现。
  XP系统的办公机器一切正常。
 

  二、 分析:IP地址“突变”

  首先根据用户反馈的故障现象,从自己的经验出发,个人认为这个跟网络应该没有什么关系,估计是操作系统的问题,于是打microsoft OEM厂商的800电话咨询关于VISTA系统IP地址“突变”的原因,得到的回复是:从未出现过此类问题,可能跟现场环境有关。
  根据用户反馈的情况测试:首先,设好VISTA系统机器的IP地址后,将其接入一台普通的交换机,查看VISTA机器的IP地址,的确正常,如下图所示:

  难道真的跟防火墙有关?
  既然怀疑跟防火墙有关,我们便将注意力放到防火墙上来,telnet到防火墙上,使用使用tcpdump –i eth2 host 192.168.0.23 –n命令抓取测试VISTA主机的数据包。
  重启VISTA主机,发现VISTA主机在系统启动后,发送了一个源IP为0.0.0.0、目的IP为其配置的IP的ARP请求包,同时,防火墙回应了该ARP请求包,如下图所示:

 防火墙为什么会回应该数据包?我们检查防火墙配置,发现防火墙上手动将内部办公网段设为静态ARP代理。跟用户确认该问题,原来用户误认为该功能可能会解决ARP欺骗问题,尝试设置后,忘记将其删除了。
  故障解决:
  删除防火墙上手动添加的ARP代理项,故障现象消失,故障解决。

  三、 引申问题:VISTA比XP还谦虚?

  1、通过抓取数据包,我们可以发现VISTA系统与XP系统在网卡引导阶段发送的“免费”ARP报文格式的差别:
  VISTA 系统发送的免费ARP请求包格式为:
  源MAC目的MAC源IP目的IP自己MAC地址FF:FF:FF:FF0.0.0.0自己的IP下图为wireshark抓取的VISTA系统网卡引导阶段发送的ARP数据包格式:

  XP系统中发送的免费ARP请求包格式为:
  源MAC目的MAC源IP目的IP自己MAC地址FF:FF:FF:FF自己的IP自己的IP下图为XP系统发送的免费ARP包格式:

  为什么VISTA系统在网卡地址加载期间发送这种格式的ARP数据包呢?关于这个问题已经有人做过相关的测试,我也验证了这个实验,下面为实验的过程,引用自neteXPert的gwdwx:
  “A机-B机两台XP对联测试:
  1)按照XP的ARP包格式(源IP=目的IP=a机IP),用sniffer伪造ARP包向b机发包,b机不断提示IP冲突;
  2)按照VISTA的ARP包格式(源IP=0.0.0.0),用sniffer伪造ARP包向b机发包,b机不提示。


  这就是最明显的区别,看来VISTA比XP还谦虚,它不仅让出IP,而且还不让对方发现有IP冲突,宁可牺牲自己”。
  关于这个问题的详细讨论,可以参考如下链接:
  http://www.neteXPert.cn/viewthread.php?tid=19463&pid=125237&page=1&extra=page=1#pid125237
  2、细心的兄弟应该会发现这样一个问题:既然是防火墙启用了针对内部办公网段的ARP代理功能,使得VISTA在网卡加载地址期间发生了IP地址冲突,导致了VISTA系统机器无法访问互联网,那么,为什么XP系统在网卡加载地址期间没有出现地址冲突呢?
  实验证明:防火墙虽然启用了针对办公网段的ARP代理功能,但是,防火墙只响应VISTA系统格式的ARP请求报文,而不响应XP系统网卡加载地址时发送的免费ARP报文。
  具体实验过程参考下面的附录。
 

  四: ARP代理对不同格式ARP报文的实验

  1实验环境
  构建如下图所示的简单的实验环境即可,测试机为XP系统。

  2实验目的
  验证防火墙的ARP代理功能对不同格式(主要指XP系统免费ARP格式和VISTA系统在网卡加载地址时发送的ARP报文格式)的ARP报文的响应情况。
  3实验工具
  在此实验中使用到的工具主要有:
  1、wireshark,主要用于实验时的报文捕获;
  2、科来网络分析系统,主要用于构造VISTA系统网卡加载地址时发送的ARP报文。
  4实验步骤
  一、验证防火墙对XP系统免费ARP报文的响应情况
  实验步骤:
  配置防火墙的ARP代理功能;
  在测试机器上开启wireshark,抓取本地网卡的数据包;
  更改测试机网卡地址,以便测试机发送免费ARP报文;
  地址更改成功后,查看数据包。
  实验现象:
  通过分析数据包,我们发现,防火墙没有响应XP系统的免费ARP报文。
  二、验证防火墙对VISTA系统网卡加载地址期间发送的ARP报文的响应情况
  实验步骤:
  配置防火墙的ARP代理功能;
  在测试机器上开启wireshark,抓取本地网卡的数据包;
  使用科来网络分析系统,构造VISTA系统网卡加载地址期间发送的ARP报文并向本地网卡发送;
  地址更改成功后,查看数据包
  实验现象:
  通过分析数据包,我们发现,防火墙以下图所示的报文格式响应的这个ARP请求报文:

  同时,测试机弹出地址冲突提示窗口。
  5实验总结
  以上实验证明:防火墙的ARP代理功能,不会响应标准的免费ARP请求包,而正如七哥所说的“VISTA的ARP报文似乎不符合ARP请求的规范,所以不能算做免费的ARP”,因此防火墙对VISTA系统网卡地址加载期间发送的ARP请求包进行了回应。
 

0
相关文章