ip沖突導緻無法上網問題複現
目錄
- 問題及排除過程 1
-
複現過程: 2
2.1. pc插拔網線後情況: 2
2.2. 環境中存在pc的ip沖突的情況: 4
2.3. 虛拟機的模拟 5
2.4. 交換機的arp模式修改為learn all後的模拟 8
- 知識點: 9
-
問題及排除過程
某天下午,接同僚回報,自己的pc192.168.205.66無法上網,要求解決。
在路由器上進行抓包發現,該ip不停的收到syn+ack,而沒有響應消息ack和syn消息發出?
核心交換機上檢視該ip對應的mac位址如下:感覺公司的pc裡沒有以000C打頭的mac位址,這一般都安裝vmware虛拟機的位址?下去到她工位上檢視。
發現她的pc的mac是4CCC6AC85003,采用的dhcp擷取ip位址,檢視arp緩存中的網關mac正常存在,奇怪為什麼不能上網,執行arp –d後,ping網關,ping www.sina.com發現上網正常。
判斷存在ip沖突,導緻交換機把回包發給了錯誤的mac位址上,正常測pc收不到syn+ack,導緻不停的發出syn消息,路由器删就能看到不停的收到外網的syn+ack消息(看不到syn和ack可能是路由器的跟蹤沒有做好,沒有跟蹤出來對應的包)。arp –d後,pc重新去擷取網關的mac位址,交換機的arp緩存會被更新,回包正常了,上網就正常了。
檢視00oc2998002e在哪個交換機的端口上?結果如下:
發現是另外一位同僚的ip位址,去他的pc上驗證,發現這個另個mac都是他的裝置上的,一個是pc,一個是虛拟機。
把女同僚的ip改成192.168.206.33的固定ip後,回報上網沒有問題。
-
複現過程:
問題解決後,考慮到pc有根據arp廣播消息來避免ip沖突的機制,決定複現一下問題,一種情況是pc和pc的ip沖突的情況。一種是pc和虛拟機發生ip沖突的情況。
2.1. pc插拔網線後情況:
第一種情況下,先看網線插拔後,pc的arp發出情況?
綜上所述:當發生dhcp擷取ip或者插拔網線後,windows作業系統會用确定的ip進行ip沖突的檢測,發出三次廣播的arp包,詢問環境中是否存在相同的ip位址?沒有收到reply,再次發出免費的arp包(源ip和目的ip相同)的arp請求包,聲明自己使用這個ip位址。沒有沖突後,會發出确定網關mac位址的arp廣播包,擷取到網關mac後,就周期性進入網關是否線上的arp單點傳播探查消息,來确定網關線上。
三次檢測ip沖突的包的特征:
特征是源ip為空,表示自身ip還沒有确定使用。
免費arp包的特征:
2.2. 環境中存在pc的ip沖突的情況:
已知環境中一台pc的ip為192.168.205.240,把另一台pc的ip由192.168.205.201改成205.240,抓包檢視arp的情況和pc的動作?
可以看到,詢問是否存在沖突,已有ip主機回複自己mac位址,得到存在沖突後,網卡ip被置為169.254.xx.xx的無效ip位址,要求網關mac,網關不響應,此時,系統托盤的網卡标志位受限。
此時,pc會用169.254的ip請求網關的mac位址,由于不是正常的mac位址,網關交換機不響應,pc此時無法擷取網關mac,導緻無法組包發出,是以無法上網。
2.3. 虛拟機的模拟
首先模拟虛拟機啟動後,arp的發送情況,已知pc為192.168.207.246,虛拟機vm安裝的centos7.0的eth0虛拟ip為192.168.207.245。
發現虛拟機沒有windows系統的三次探查是否有ip沖突,并将ip置為169.154網段的操作,僅僅發一個免費arp消息,已用的pc收到此消息,會報ip沖突,但不會改變ip為不可用ip,交換機收到此免費的arp消息,會改寫arp緩存表。如下圖:
查發現此時pc彈出ip沖突的提示框,網卡标志變成internet标志,看抓包發現pc不停的發出單點傳播arp請求包,見下圖:
但交換機的arp表項始終不變?
查詢arp的模式,如下圖:
查詢資料得知:learn reply only是嚴格的學習arp表項設定,arp表項的更新隻在交換機自身發出arp的request消息得到響應後,而不響應更改收到arp請求消息,檢視在交換機的鏡像包裡,沒有交換機發出的arp查詢消息,但虛拟機發出的免費arp消息,交換機預設是學習enable态的,就是說,交換機收到虛拟機發出的免費arp包後,會把arp表項更改為虛拟機的mac位址,而不理睬pc發出單點傳播或者廣播arp消息(當arp表裡存在于對應的ip位址時)。
此時pc的發出的業務消息,交換機的回包均發給了虛拟機,導緻pc收不到回包,是以無法上網。
模拟執行arp -d,仍然不能改變arp緩存表裡的資料。那天同僚的pc執行arp -d後能夠上網,可能是arp緩沖時間到了,交換機給pc發來arp請求消息,pc應答了,或者此時虛拟機被關掉了才出現這樣的現象。當時沒有找到問題機子,是以沒有确認。
免費arp包的特征見下圖:
2.4. 交換機的arp模式修改為learn all後的模拟
把交換機的arp模式修改為learn-all後,發現pc的網口标志沒有受限,鏡像交換機對應端口的包,過濾arp消息,發現随着pc和虛拟機發出的arp請求和免費arp,交換機的arp随着改變。
鏡像抓包中看到pc發出的單點傳播探查arp請求
交換機裡查詢arp表項,發現是pc的mac位址
虛拟機發出arp消息
交換機裡更新arp表項
生存時間被改寫
3. 知識點:
A. windows系統插拔網線,dhcp擷取到ip後或者網卡設定了靜态ip,都會發三次arp廣播消息,用于探查環境中是否存在ip沖突?不存在的,發出免費arp消息,存在,系統會把ip置為169.254網段的不可用ip,避免ip沖突。
B. 虛拟機之類的linux作業系統,網卡激活後,隻發免費的arp通知自己使用了這個ip位址,而沒有防止ip沖突的機制。
C. Pc網卡激活後,先廣播arp請求來擷取網關的mac位址,然後啟動單點傳播arp請求消息進行主動探查相鄰網關是否線上,而不是等待arp的老化時間到後,再發arp廣播消息。當兩次探查失敗,就會清除網關的arp表項,重新擷取。
D. 交換機的arp mode設定為arp learn reply,就是嚴格的學習arp表項,隻建立和更新自己發出的arp請求得到的應答消息裡的mac位址和ip對照關系。而對pc發出的arp請求不予理睬,但收到免費的arp消息會更新arp表項,導緻arp表發生變化。
Learn all模式是學習所有的arp消息,即受到arp廣播,單點傳播,免費的arp消息均生成或更新arp表項。