春会来,事会顺,人会好,花会开。
一,什么是arping
https://man.he.net/man8/arping
arping - 向相邻主机发送 ARP 请求(ARP REQUEST)。
通过 ARP 数据包在指定网络接口上对目标主机进行探测(类似 ping 但使用 ARP 协议),并可指定源 IP 地址。
arping 是 iputils 软件包的一部分。
[root@master1 ~]# rpm -ql iputils | grep bin/usr/bin/ping/usr/bin/ping6/usr/bin/tracepath/usr/bin/tracepath6/usr/sbin/arping/usr/sbin/clockdiff/usr/sbin/ifenslave/usr/sbin/ping6/usr/sbin/rdisc/usr/sbin/tracepath/usr/sbin/tracepath6
二,参数
[root@master1 ~]# arping -hUsage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination-f收到第一个回复后立即退出(快速模式)。-q静默模式,不显示输出信息。-b持续发送广播包,不切换为单播模式(默认行为是先广播,收到回复后切换为单播)。-D启用重复地址检测模式(DAD,Duplicate Address Detection),用于检测本地网络中是否存在 IP 冲突。-U主动 ARP 模式(Unsolicited ARP),主动更新邻居主机的 ARP 缓存(无需等待请求)。-AARP 回复模式(ARP Answer),模拟回复邻居主机的 ARP 请求(用于更新邻居缓存)。-V显示程序版本并退出。-c 次数指定发送的 ARP 请求包数量。-w 超时设置等待回复的超时时间(秒)。-I 设备指定使用的网络接口(如 eth0、ens33)。-s 源地址指定 ARP 请求包的源 IP 地址。destination : 需要探测或操作的 IP 地址。
三,例子
1、快速检测目标主机是否存活
[root@master1 ~]# arping -f -c 99 -I eno1 172.25.61.xxxARPING 172.25.61.106 from 172.25.61.52 eno1Unicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5] 1.034msSent 1 probes (1 broadcast(s))Received 1 response(s)
命令参数解析
arping: 发送 ARP 请求的工具,用于测试二层(数据链路层)连通性。-f: 关键参数。表示 "fast" 模式。一旦收到第一个响应包,就立即停止发送并退出。这就是为什么你要求发99个包 (-c 99),但实际上只发了1个就停止了的原因。-c 99: 限制发送包的数量为99个(但在 -f 生效时被提前中断了)。-I eno1: 指定使用 eno1 网卡接口发送请求。172.25.61.xxx: 目标 IP 地址。
2、静默检测 IP 冲突(DAD 模式),在分配 IP 地址前,检测本地网络中是否已存在该 IP(避免冲突),也可以应用在自动化脚本中检测 IP 可用性(如 DHCP 服务器分配地址前)。
[root@master1 ~]# arping -q -D -c 99 -I eno1 172.25.61.106# 查看返回值[root@master1 ~]# echo $?1
-q:静默模式(不显示输出)。-D:启用重复地址检测(DAD),若收到回复则认为 IP 冲突。-c 2:发送 2 个探测包。返回值:0 → 无冲突(IP 可用)。1 → 存在冲突(IP 已被占用)。
3、强制更新邻居主机的 ARP 缓存,当主机的 IP 或 MAC 地址变更后,通知其他主机更新 ARP 缓存
[root@master1 ~]# arping -U -I eno1 172.25.61.106bind: 无法指定被请求的地址[root@master1 ~]# arping -U -I eno1 172.25.61.52ARPING 172.25.61.52 from 172.25.61.52 eno1^CSent 2 probes (2 broadcast(s))Received 0 response(s)
第一次使用 -U 时,arping 会尝试构造一个 ARP 数据包,其源 IP 地址设置为你指定的目标 IP (172.25.61.106)。报错是因为,Linux 内核的安全机制要求:你不能随意伪造源 IP 发送数据包,除非该 IP 确实配置在本机的网卡上。4、持续广播探测目标(绕过单播切换),目标主机可能屏蔽单播 ARP 请求,需强制使用广播探测。
[root@master1 ~]# arping -b -c 5 -I eno1 172.25.61.106ARPING 172.25.61.106 from 172.25.61.52 eno1Unicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5] 0.884msUnicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5] 0.807msUnicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5] 0.808msUnicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5] 0.958msUnicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5] 0.890msSent 5 probes (5 broadcast(s))Received 5 response(s)
-b:持续发送广播包(默认行为是先广播,收到回复后切换为单播)。-c 5:发送 5 个广播包。
用途:诊断某些特殊网络设备(如老式交换机)的兼容性问题。绕过主机对单播 ARP 的过滤(如防火墙规则)。5、结合 tcpdump 抓包分析(高级调试),深入分析 ARP 通信过程(如排查 ARP 欺骗攻击)。
#运行 arping 探测目标[root@master1 ~]# arping -b -c 99 -I eno1 172.25.61.52ARPING 172.25.61.52 from 172.25.61.52 eno1Sent 99 probes (99 broadcast(s))Received 0 response(s)
#在另一台主机(或同一主机)启动抓包[root@master1 ~]# tcpdump -i eno1 -n arptcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes21:12:48.435901 ARP, Request who-has 192.168.200.237 tell 192.168.200.212, length 4621:12:48.445118 ARP, Request who-has 192.168.200.1 tell 192.168.200.228, length 4621:12:48.445881 ARP, Request who-has 192.168.200.193 tell 192.168.201.235, length 4621:12:48.535890 ARP, Request who-has 172.25.61.52 (Broadcast) tell 172.25.61.52, length 2821:12:48.567786 ARP, Request who-has 172.25.61.151 tell 172.25.61.50, length 4621:12:48.855024 ARP, Request who-has 172.25.61.77 tell 172.25.61.48, length 4621:12:48.966919 ARP, Request who-has 10.200.100.211 tell 10.0.0.2, length 4621:12:49.005061 ARP, Request who-has 172.25.61.121 tell 172.25.61.254, length 4621:12:49.273291 ARP, Request who-has 192.168.200.193 tell 192.168.201.76, length 4621:12:49.436903 ARP, Request who-has 192.168.200.237 tell 192.168.200.212, length 4621:12:49.443479 ARP, Request who-has 192.168.200.1 tell 192.168.200.228, length 4621:12:49.447398 ARP, Request who-has 192.168.200.193 tell 192.168.201.235, length 4621:12:49.465789 ARP, Request who-has 172.25.61.77 tell 172.25.61.48, length 4621:12:49.535931 ARP, Request who-has 172.25.61.52 (Broadcast) tell 172.25.61.52, length 28
异常情况:如重复的 ARP Reply(可能存在 ARP 欺骗)。四,补充
相关命令
ping(8) clockdiff(8) tracepath(8)
作者
由 Alexey Kuznetsov(《mailto:kuznet@ms2.inr.ac.ru》)编写
安全说明
运行 arping 需要 CAP_NET_RAW 权限。不建议以 set-uid root 权限运行,因为用户可能通过修改邻居主机的 ARP 缓存实施攻击。
五,总结
arping 是一个基于 ARP 协议的网络探测工具,常用于诊断本地网络连接问题(如 IP 冲突检测、邻居主机存活检查等)。其功能类似于 ping,但直接操作链路层(L2),适用于需要绕过网络层(L3)的场景。
最后的最后(Last but not least),欢迎交流:
关注公众号留言,或者在下方直接留言: