导航

    <#CACHE_INCLUDE_NAVBAR#>
« 輕輕松松刪除EISA隱藏分區Oracle歸檔日誌大小的修改方法 »

sendarp.c解析ip沖突解決辦法

2010年11月26日 LPI 0条评论 0个引用

ip沖突是個很基本,也很不應該犯的錯誤,我來到這個公司3年來,只遇到過2次,但這兩次都很致命,都是在很關鍵的產品上出了問題,如果您也想仔細了解哦arp相關的更深層次的知識,我願意把我們研究的結果共享出來。

  研究了壹下arping命令的工作機制和原理,並詳細的查看了arping命令的源碼。

  列出幾個我們在檢查ip地址沖突時候比較有用的參數:

  arping  [  -AbDfhqUV]   [  -c count]  [ -w deadline]  [ -s source]  -I interface destination

  # 註釋 :arping 是用於發送 ARP 請求到壹個相鄰主機的工具

  -b   # 註釋 :-b 用於發送以太網廣播幀(FFFFFFFFFFFF) 。arping 壹開始使用廣播地址,在收到響應後就使用 unicast 地址。

  -c count # 註釋 :-c 表示發送指定數量的 ARP 請求數據包後就停止。

  -I interface # 註釋 :-I 指定用那個接口來發送 ARP 請求包。這個選項是必須的。

  -s source # 註釋 :-s 設定 arping 發送的 arp 數據包中的  SPA 字段的值。如果為空,則按下面處理

  #     -)1、如果是 DAD 模式(沖突地址探測),則設置為 0.0.0.0

  #     -)2、如果是 Unsolicited ARP 模式(Gratutious ARP)則設置為目標地址

  #     -)3、否則從路由表得出

  -U       # 註釋:-U 就是啟用 Gratutious 模式,它用於更新別的主機上的 ARP 表中本地主機的條目。不需要響應。

  arping命令中發送arp packets時候,是往FF:FF:FF:FF:FF:FF這個以太網內的廣播地址發送,包括發送arping命令的本機也會收到這個arp packets(但是本機收到之後不會Reply任何信息)。比如當我們在192.168.10.138上執行下面的命令時:

  arping 192.168.10.139

  會默認使用eth0,向局域網內所有的主機發送壹個:who-has 192.168.10.139的arp request,tell 192.168.10.138 your mac address,類似這樣:

  "我是主機192.168.10.138 , mac是xxxxxxxxxxx ,ip為192.168.10.139的主機請告之妳的mac"

  ip為192.168.10.139的主機響應這個廣播,應答ARP廣播為:"我是192.168.10.139,我的mac為xxxxxxxxxx2",此應答只發回給192.168.10.138而不是廣播,收到之後,192.168.10.138主機刷新自己的ARP緩存。

  我們平時使用arping命令檢測ip地址沖突的情景大概有以下幾種:

  1、壹個ip(192.168.10.139)被綁在了兩臺或多臺不同的機器(A、B...)上

  例如我們在192.168.10.138這臺機器上進行監控:

  方法壹:arping -I eth1 -c 1 192.168.10.139  返回多個mac地址(A、B...)

  方法二:arping -I eth1 -b 192.168.10.139  持續的返回多個mac地址(A、B...A、B...)

  此處執行完命令之後如果出現了多個mac地址,就可以判定是存在ip地址重復綁定的問題

  2、有ip沖突的壹臺或多臺機器(A、B...)上又錯誤的綁著監控機的ip(192.168.10.138)

  我們仍然在192.168.10.138這臺機器上進行監控:

  arping -I eth1 -c 1 192.168.10.139

  此時綁著監控機ip(192.168.10.138),同時又綁著(192.168.10.139)機器(假設為A)不會返回自己的mac地址。

  因為這臺機器A收到arp請求的時候,會比較來源地址和自己的ip地址,發現來源ip存在於自己的網卡上,以太網協議會認為這個包是來自於自己,不予以響應,自然就不會有反饋了。所以此時執行上面的arping命令知會打印出除了機器A之外綁定了(192.168.10.139)的機器mac列表。

  解決這種特殊情況,需要使用-s參數,指定壹個ip作為我們發送arp packet的source ip。

  比如我們在監控機eth1 192.168.10.138上面綁壹個192.168.10.138

  ifconfig eth1:1 192.168.10.138

  arping -I eth1 -c 1 192.168.10.139 -s 192.168.10.138,此時綁著監控機ip(192.168.10.138)同時又擁有(192.168.10.139)的這臺機器A的mac地址又會正常的打印出來。因為它收到arp packet的時候,對比來源ip,在自己的網卡上沒有發現來源ip,所以會像正常arp包壹樣反饋自己的mac地址。

  3、當有新的ip(192.168.10.139)綁定在機器A上時,手工執行

  arping 192.168.10.139

  這樣arp會在局域網裏發廣播,Gratutious ARP,告訴局域網內其它的機器在arp表裏添加壹項(192.168.10.39和A綁著該地址的網卡mac),表示這個ip已經被使用了,這樣能更進壹步在其它機器綁定ip時避免重復綁定的問題。

 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Arwen Build 81206