我当时纳闷,这不是存心给我做对吗,明明机房没有人上去!直觉告诉我应该是网内那个用户新添加了Router(SOHO级别),因为这种Router一般默认开启了开启了DHCP Server功能。
网络拓扑
故障分析
局内用户访问互联网正常情况下是通过RouterA出去的,并且地址是自动获取。
现在可能是网内那个好事者添置了一款Router,因为默认开启DHCP Server,所以内网就存在两个DHCP Server,我们姑且称之为DHCPS2。
如果用户是在DHCPS2上获取的IP,那么应该是192.168.1.0/24网段的地址,网关是192.168.1.1,而如果用户从DHCPS1这个地方获取IP,获取的应该是10.10.10.0/24网段的地址。既然获取的地址不对,得到的网关不对,当然也就不能上网。
故障处理
1、在行政办公室的电脑上做测试,不能上网的时候获得的地址果然是192.168.1.108,此时记录下网关192.168.1.1对应的MAC地址。
2、在3550上查看MAC地址表,发现192.168.1.1对应的MAC是通过24端口学习过来的,这也就是说DHCPS2存在于H3C S1024交换机那边那个地方过来的。这也验证了我前面的分析,的确是网内好事者船载也入了一个新的宽带路由器。
3、如果将3550的24口学习功能关闭,那么就可以把好事者船载也入的这个宽带路由器的流量过滤掉。这样局内办公用户如果访问互联网,获取地址将自动在唯一的具有DHCP Server功能的RouterA上获取并从RouterA达到互联网了。
4、如果按照上面的操作,但是新的问题出来了,因为3550下面的用户访问不了电子政务网、我自己的计算机不能独享5M光纤资源了,PC10不能访问G市的业务办理服务器了,PC10不能访问位于S1024交换机下面的那个服务器了,怎么办?看看下面的我在3550上面做的配置你就知道了哦
!Port config
config port 24 learn off
!fdb entry config
create fdbentry 940c6d2ae520 vlan hezq port 24
create fdbentry 00195b174685 vlan hezq port 24
create fdbentry 4487fc4003e7 vlan hezq port 24
create fdbentry 001882323c0b vlan hezq port 24
后续问题
为啥子网内存在两个DHCP Server的时候,DHCP Client不选DHCP Server A而要选择DHCP Server B,有时候又反过来了,好像是没有规律性,这个问题需要思考一下!
这个问题的核心是DHCP Client发出DHCP Discovery报文后,广播域内的DHCP Server收到客户发出的DHCP Discovery后,将会发出响应报文,该报文就是DHCP Offer,客户端收到了几个DHCP Server回应的DHCP Offer报文,那么以什么样的机制选择哪个DHCP Server作为发送下一个报文(DHCP Request)呢?
查询了有关的资料和说明,大概分为两类:
第一类:模棱两可说,大意思DHCP Client收到了几个DHCP Server提供的DHCP Offer报文之后,由DHCP Client自己决定选择那个。很多论坛、包括百度百科等都是这么说。------ipdata备注:这个说法是在放屁!
第二类:唯独只有成都的科来公司敢站出来说“DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息”
对于科来的说法,表示认同,但是尚须做实验测试一下!
通知所有DHCP server ,让其明确client选择了哪一个Server!
但是设备不同,情况不一样。之前和like,还有寻梦讨论过这个问题。由于资料没在这台电脑上,暂时不能上传资料。
而且决定server试用广播回复还是单播回复的决定因素在于client发送diascover包的flag位。如果flag置1好像要求server用广播回复offer,置0这用单播回复。(到底是置0还是1,有点不确定了,需要查阅下资料)。但是实际测试结果和理论相差很远。
稍后传上测试结果。
DHCP Client收到了几个DHCP Server响应的DHCP Offer报文,是什么机制或者算法来决定Client选择那一个Server!
Client端会选第一个收到的Offer报文,然后Request广播回复。
这个包里会标注Client Hardware Addr (chaddr)和Client Identifier,Requested IP Address(请求S端分配给C端的IP)Server Identifier(S端的IP,S端看这里就知道是发给自己的包不,其它的S端就释放IP)
服务端回应的offer ack是广播还是单播,要看客户端设置的Bootp flags位,置1回复就广播,0为单播
DHCP request包有三种情况,(1、2都是发广播, 3单播) 3种报文中包含的字段会有所不同:
1
第一次开机,4次通信中的,包里有“request ip address ,server identifier”选项,
是响应 DHCPOFFER 的:
2
重启后的包里不含有“server identifier”选项,有request ip address
3
租约到一半的会设置 ciaddr
P.S 参考文献:
最牛逼的RFC2131: http://tools.ietf.org/html/
微软关于DHCP的介绍:http://support.microsoft.com/kb/169289
我的抓包文件:dhcp_4packs.pkt
我的环境是 server 2003 sp2 抓包工具OmniPeek 6.0.2 DHCP为普通宽带路由器上带的。
文件可以用Wireshark打开,郁闷的是SnifferPro 4.90.102 MR2 不支持2003系统,只能在XP上工作,所以我无法用!