我當時納悶,這不是存心給我做對嗎,明明機房沒有人上去!直覺告訴我應該是網內那個用戶新添加了Router(SOHO級別),因為這種Router一般默認開啟了開啟了DHCP Server功能。
網絡拓撲
故障分析
局內用戶訪問互聯(lián)網正常情況下是通過RouterA出去的,并且地址是自動獲取。
現(xiàn)在可能是網內那個好事者添置了一款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地址表,發(fā)現(xiàn)192.168.1.1對應的MAC是通過24端口學習過來的,這也就是說DHCPS2存在于H3C S1024交換機那邊那個地方過來的。這也驗證了我前面的分析,的確是網內好事者船載也入了一個新的寬帶路由器。
3、如果將3550的24口學習功能關閉,那么就可以把好事者船載也入的這個寬帶路由器的流量過濾掉。這樣局內辦公用戶如果訪問互聯(lián)網,獲取地址將自動在唯一的具有DHCP Server功能的RouterA上獲取并從RouterA達到互聯(lián)網了。
4、如果按照上面的操作,但是新的問題出來了,因為3550下面的用戶訪問不了電子政務網、我自己的計算機不能獨享5M光纖資源了,PC10不能訪問G市的業(yè)務辦理服務器了,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
后續(xù)問題
為啥子網內存在兩個DHCP Server的時候,DHCP Client不選DHCP Server A而要選擇DHCP Server B,有時候又反過來了,好像是沒有規(guī)律性,這個問題需要思考一下!
這個問題的核心是DHCP Client發(fā)出DHCP Discovery報文后,廣播域內的DHCP Server收到客戶發(fā)出的DHCP Discovery后,將會發(fā)出響應報文,該報文就是DHCP Offer,客戶端收到了幾個DHCP Server回應的DHCP Offer報文,那么以什么樣的機制選擇哪個DHCP Server作為發(fā)送下一個報文(DHCP Request)呢?
查詢了有關的資料和說明,大概分為兩類:
第一類:模棱兩可說,大意思DHCP Client收到了幾個DHCP Server提供的DHCP Offer報文之后,由DHCP Client自己決定選擇那個。很多論壇、包括百度百科等都是這么說。------ipdata備注:這個說法是在放屁!
第二類:唯獨只有成都的科來公司敢站出來說“DHCP客戶機只接受第一個收到的DHCP offer提供信息,然后它就以廣播方式回答一個DHCP request請求信息”
對于科來的說法,表示認同,但是尚須做實驗測試一下!
通知所有DHCP server ,讓其明確client選擇了哪一個Server!
但是設備不同,情況不一樣。之前和like,還有尋夢討論過這個問題。由于資料沒在這臺電腦上,暫時不能上傳資料。
而且決定server試用廣播回復還是單播回復的決定因素在于client發(fā)送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端看這里就知道是發(fā)給自己的包不,其它的S端就釋放IP)
服務端回應的offer ack是廣播還是單播,要看客戶端設置的Bootp flags位,置1回復就廣播,0為單播
DHCP request包有三種情況,(1、2都是發(fā)廣播, 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
我的環(huán)境是 server 2003 sp2 抓包工具OmniPeek 6.0.2 DHCP為普通寬帶路由器上帶的。
文件可以用Wireshark打開,郁悶的是SnifferPro 4.90.102 MR2 不支持2003系統(tǒng),只能在XP上工作,所以我無法用!