IP衝突引起的網路異常,可以通過檢查IP是否衝突,排除故障。我們可以用一些工具進行檢查,例如arp-scan、arping軟體進行檢視。
這裡使用arping進行檢查裝置的MAC地址,通過查檢視MAC地址是否唯一,從而判斷IP是否衝突,
原理:每臺裝置的MAC地址是唯一的,若arping返回的MAC出現2個甚至多個,說明這個IP對應於多臺裝置,則存在IP地址衝突的情況。
作者:良知猶存
轉載授權以及圍觀:歡迎關注微信公眾號:羽林君
或者新增作者個人微信:become_me
arping命令來自於英文片語」ARP ping「的縮寫,其功能是用於傳送ARP請求報文,ARP全稱為」Address Resolution Protocol「,中文譯為地址解析協定。arping命令是以廣播地址傳送arp packets,乙太網內所有的主機都會收到這個arp packets,但是本機收到之後不會Reply任何資訊,來測試網路狀態,能夠判斷某個指定IP地址是否在網路上已被使用,並能夠獲取更多裝置資訊,像是加強版的ping命令。
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這個軟體
-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 ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
推薦閱讀
【3】CPU中的程式是怎麼執行起來的 必讀
本公眾號全部原創乾貨已整理成一個目錄,回覆[ 資源 ]即可獲得。