openwrt開發使用-arping

2023-04-16 21:00:50

前言

IP衝突引起的網路異常,可以通過檢查IP是否衝突,排除故障。我們可以用一些工具進行檢查,例如arp-scan、arping軟體進行檢視。

這裡使用arping進行檢查裝置的MAC地址,通過查檢視MAC地址是否唯一,從而判斷IP是否衝突,

原理:每臺裝置的MAC地址是唯一的,若arping返回的MAC出現2個甚至多個,說明這個IP對應於多臺裝置,則存在IP地址衝突的情況。

作者:良知猶存

轉載授權以及圍觀:歡迎關注微信公眾號:羽林君

或者新增作者個人微信:become_me


arping介紹:

arping命令來自於英文片語」ARP ping「的縮寫,其功能是用於傳送ARP請求報文,ARP全稱為」Address Resolution Protocol「,中文譯為地址解析協定。arping命令是以廣播地址傳送arp packets,乙太網內所有的主機都會收到這個arp packets,但是本機收到之後不會Reply任何資訊,來測試網路狀態,能夠判斷某個指定IP地址是否在網路上已被使用,並能夠獲取更多裝置資訊,像是加強版的ping命令。

openwrt編譯:

make menuconfig進入,「 \ 」 進行搜尋arping,檢視編譯具體的設定 搜尋情況如下:

Symbol: BUSYBOX_CONFIG_ARPING [=n]                                                                                                    
Type  : bool                                                                                                                      
Defined at package/utils/busybox/config/networking/Config.in:92                                                                   
  Prompt: arping (9 kb)                                                                                                           
  Depends on: (PACKAGE_busybox [=y] || PACKAGE_busybox-selinux [=n]) && BUSYBOX_CUSTOM [=n]                                       
  Location:                                                                                                                       
 (1) -> Base system                                                                                                                
       -> Networking Utilities                                                                                                     
                                                                                                                                   
                                                                                                                                   
Symbol: BUSYBOX_CONFIG_FEATURE_UDHCPC_ARPING [=n]                                                                                 
Type  : bool                                                                                                                      
Defined at package/utils/busybox/config/networking/udhcp/Config.in:72                                                             
  Prompt: Verify that the offered address is free, using ARP ping                                                                 
  Depends on: (PACKAGE_busybox [=y] || PACKAGE_busybox-selinux [=n]) && BUSYBOX_CUSTOM [=n] && BUSYBOX_CONFIG_UDHCPC [=n]         
  Location:                                                                                                                       
 (2) -> Base system                                                                                                                
       -> Networking Utilities                                                                                        
         -> udhcpc (24 kb) (BUSYBOX_CONFIG_UDHCPC [=n])

Symbol: BUSYBOX_DEFAULT_ARPING [=n]                                                                                
Type  : bool                                                                                                         
Defined at package/utils/busybox/Config-defaults.in:2241                                                             
  Depends on: PACKAGE_busybox [=y] || PACKAGE_busybox-selinux [=n]                                                   
                                                                                                                      
                                                                                                                      
Symbol: BUSYBOX_DEFAULT_FEATURE_UDHCPC_ARPING [=n]                                                                   
Type  : bool                                                                                                         
Defined at package/utils/busybox/Config-defaults.in:2676                                                             
  Depends on: PACKAGE_busybox [=y] || PACKAGE_busybox-selinux [=n]

第一個就是Prompt: arping (9 kb) ,直接開始設定,進入 Base system

設定Customize busybox options為y開啟,這個時候就可以後續的Networking Utilities設定

找到Networking Utilities 裡面找一下arping 設定y make編譯

編譯韌體進行替換升級 sysupgrade -n op openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-sysupgrade.bin

重啟後就可以看到arping這個軟體

arping使用:

選項

-f:表示在收到第一個響應報文後就退出;
-q:quiet output不顯示任何資訊;
-b:用於傳送乙太網廣播幀(FFFFFFFFFFFF)。arping一開始使用廣播地址,在收到響應後就使用unicast地址。
-D:檢測某個IP是否被使用,後邊跟上一個IP地址
-U:主動的ARP模式,更新鄰居的arp表
-A:ARP回覆模式,更新鄰居arp
-c N:傳送封包的數目
-w timeout:設定一個超時時間,單位是秒。如果到了指定時間,arping還沒到完全收到響應則退出;
-I IFACE:指定使用的乙太網裝置,預設使用eth0
-s SRC_IP:指定源IP地址
DST_IP:指定目標IP地址

arping -I br-lan -c 3 192.168.1.151 我們可以檢視mac地址看是否有重複ip的裝置

同樣類似使用wireshark捕獲資料也可以看到 執行如下命令:ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa [email protected] 'tcpdump -s 0 -U -n -w - -i br-lan not port 22' | ./wireshark.exe -k -i - 這個時候也可以看到arping三次的過程 附錄: 一個列印MAC地址的指令碼:arping -I br-lan -c 3 192.168.1.151 | awk '/reply/ {macaddr_str=$5; mac=substr(macaddr_str,2,length(macaddr_str) - 2);print mac}'

結語

這就是我自己在openwrt使用arping操作的分享。如果大家有更好的想法,也歡迎大家加我好友交流分享哈。


作者:良知猶存,白天努力工作,晚上原創公號號主。公眾號內容除了技術還有些人生感悟,一個認真輸出內容的職場老司機,也是一個技術之外豐富生活的人,攝影、音樂 and 籃球。關注我,與我一起同行。

                              ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推薦閱讀

【1】jetson nano開發使用的基礎詳細分享

【2】Linux開發coredump檔案分析實戰分享

【3】CPU中的程式是怎麼執行起來的 必讀

【4】cartographer環境建立以及建圖測試

【5】設計模式之簡單工廠模式、工廠模式、抽象工廠模式的對比

本公眾號全部原創乾貨已整理成一個目錄,回覆[ 資源 ]即可獲得。