arping命令詳解


arping命令詳解

一、版本

arping命令是用於發送arp請求到相鄰主機的工具,arping使用arp數據包
arping有兩個版本,一個版本是Thomas Habets這個人寫的,這個版本有個好處是可以arping <MAC地址>,也就是說我們可以通過MAC地址得到IP。還有一個版本是Linux iputils suite的,這個版本就不能通過MAC地址,解析出IP地址了。

可以使用arping -V來查看自己系統的arping的版本

據觀察Redhat\CentOS使用的是Linux iputils suite版本的,debian使用的是Thomas Habets。

注意兩個版本的的arping使用的參數有很大的區別,所以要根據自己的arping版本去使用相應的參數。不看版本在網上抄的命令可能在自己的系統上無法執行。下面介紹Linux iputils suite版本的arping命令用法。

二、語法

Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination

三、參數釋義

-A:與-U參數類似,但是使用的是ARP REPLY包而非ARP REQUEST包。
-b:發送以太網廣播幀,arping在開始時使用廣播地址,在收到回復后使用unicast單播地址。
-c:發送指定的count個ARP REQUEST包后停止。如果指定了-w參數,則會等待相同數量的ARP REPLY包,直到超時為止。
-D:重復地址探測模式,即,Duplicate address detection mode (DAD),用來檢測有沒有IP地址沖突,如果沒有IP沖突則返回0。
-f:收到第一個響應包后退出。
-h:顯示幫助頁。
-I:用來發送ARP REQUEST包的網絡設備的名稱。
-q:quite模式,不顯示輸出。
-U:無理由的(強制的)ARP模式去更新別的主機上的ARP CACHE列表中的本機的信息,不需要響應。
-V:顯示arping的版本號。
-w:指定一個超時時間,單位為秒,arping在到達指定時間后退出,無論期間發送或接收了多少包。在這種情況下,arping在發送完指定的count(-c)個包后並不會停止,而是等待到超時或發送的count個包都進行了回應后才會退出。
-s:設置發送ARP包的IP資源地址,如果為空,則按如下方式處理:
    1、DAD模式(-D)設置為0.0.0.0;
    2、Unsolicited模式(-U)設置為目標地址;
    3、其它方式,從路由表計算。

四、實例

1、查看某個IP的MAC地址

有多個網卡可以用 -I 指定網卡接口

1 [root@CentOS7.9 ~]# arping -I enp5s0f0 192.168.52.1
2 ARPING 192.168.52.1 from 192.168.52.14 enp5s0f0
3 Unicast reply from 192.168.52.1 [00:00:5E:00:01:69] 3.024ms
4 Unicast reply from 192.168.52.1 [00:00:5E:00:01:69] 2.988ms
5 ^CSent 2 probes (1 broadcast(s))
6 Received 2 response(s)
7 [root@CentOS7.9 ~]#

2、查看某個IP的MAC地址,並指定count數量

-c 可以指定發送特定數量的ARP REQUEST包

1 [root@CentOS7.9 ~]# arping -c 2 -I enp5s0f0 192.168.52.1
2 ARPING 192.168.52.1 from 192.168.52.14 enp5s0f0
3 Unicast reply from 192.168.52.1 [00:00:5E:00:01:69] 3.394ms
4 Unicast reply from 192.168.52.1 [00:00:5E:00:01:69] 3.235ms
5 Sent 2 probes (1 broadcast(s))
6 Received 2 response(s)
7 [root@CentOS7.9 ~]#

3、探測重復地址

-D 可以探測是否有重復ip地址,測試發現-D似乎只有在同網段主機上才有用,在和被測ip不同網斷無效。

有重復地址即存在IP沖突則返回1

 [root@CentOS7.9 ~]# arping -c 1 -D -I enp5s0f0 192.168.52.18
 ARPING 192.168.52.18 from 0.0.0.0 enp5s0f0
 Unicast reply from 192.168.52.18 [A0:B3:CC:E5:8B:46] 4.741ms
 Sent 1 probes (1 broadcast(s))
 Received 1 response(s)

無重復地址則返回0

 [root@CentOS7.9 ~]# arping -c 1 -D -I enp5s0f0 192.168.52.18
 ARPING 192.168.52.18 from 0.0.0.0 enp5s0f0
 Sent 1 probes (1 broadcast(s))
 Received 0 response(s)
 [root@CentOS7.9 ~]#

4、更新鄰近主機arp緩存

每台主機都會在自己的 ARP 緩沖區中建立一個 ARP 列表,以表示 IP 地址和 MAC 地址之間的對應關系,二層的數據傳輸靠的就是MAC地址。不同廠商默認的ARP表老化時間也不一樣:思科是 5分鍾,華為是 20分鍾。ARP 表緩存老化時間過長有時可能會導致一些網絡問題,我們后面討論。先看下arp協議大致的工作原理。

ARP協議工作原理
  ARP 協議包(ARP 報文)主要分為 ARP 請求包和 ARP 響應包。網絡中的主機可以通過這兩種報文獲取ip和MAC的對應關系或更新鄰近主機的arp表。

ARP請求包

某個主機需要發送報文時,首先檢查 ARP 列表中是否有對應 IP 地址的目的主機的 MAC 地址,如果有,則直接發送數據,如果沒有,就向本網段的所有主機發送 ARP 廣播數據包,該數據包包括的內容有:源主機 IP 地址,源主機 MAC 地址,目的主機的 IP 地址等。當本網絡的主機收到該 ARP 數據包時:
 (A)首先檢查數據包中的 IP 目標地址是否是自己的 IP 地址,如果不是,則忽略該數據包。
 (B)如果是,則首先從數據包中取出源主機的 IP 和 MAC 地址寫入到 ARP 列表中,如果已經存在,則覆蓋。然后將自己的 MAC 地址寫入 ARP 響應包中,單播給發送請求的主機,告訴源主機自己就是它想要找的 MAC地址。源主機收到 ARP 響應包后。將目的主機的 IP 和 MAC 地址寫入 ARP 列表,並利用此信息發送數據。如果源主機一直沒有收到 ARP 響應數據包,表示 ARP 查詢失敗。

ARP響應包
  要更新鄰近主機關於自己的arp記錄可以發送ARP響應包文。如:某設備(網絡接口)新加入網絡或mac地址發生變化亦或接口發生重啟時,會發送免費ARP報文把自己IP地址與Mac地址的映射關系廣播給其他主機。網絡上的主機接收到免費ARP報文時,會更新自己的ARP緩沖區。將新的映射關系更新到自己的ARP表中。

ARP表老化時間造成的問題

在一些HA的場景會配置浮動ip,可能會出現浮動ip切到其他主機后網絡不通的問題,這很有可能是交換機ARP表沒有更新造成的,因為在ip切換的過程中也許沒有網絡接口狀態的變化觸發ARP表的更新,交換機或其他主機緩存的依然是老的數據。等到交換機ARP表老化時間到了再次更新arp表網絡就通了。顯然我們沒有那么多的時間,而且這樣HA的意義又何在呢?為了使交換機盡快更新ARP表,可以將交換機的ARP緩存清理掉,讓交換機自動學習一遍,但交換機不是每個系統管理員都能操作的。最方便的辦法是在服務器上發送ARP請求或響應報文,從而更新交換機和鄰近主機的ARP緩存,操作完成后網絡就通了。前面說了這么多,其實就是為了引出最后的ARP緩存導致網絡不通的問題和解決辦法,但如果對ARP工作的工作缺乏基本的了解,在出現類似故障時是很難想到問題所在的。如下兩台命令可以幫助更新APR緩存表:

在浮動ip所在的主機執行如下兩條命令中任意一個,192.168.52.18 為vip,enp5s0f0是vip需要綁定的網卡名

 arping -c 3 -U -I enp5s0f0 192.168.52.18
 arping -c 3 -A -I enp5s0f0 192.168.52.18


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM