找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3464

积分

0

好友

455

主题
发表于 16 小时前 | 查看: 3| 回复: 0

arpingiputils 软件包中一个非常实用的网络工具。它的核心功能是向相邻主机发送 ARP 请求,通过在指定网络接口上对目标主机进行探测(类似于 ping 但工作在数据链路层),可用于检查主机存活、诊断二层连通性等多种场景。

一、什么是 arping?

官方文档地址:https://man.he.net/man8/arping

简单来说,arping 就是一个向局域网内相邻主机发送 ARP 请求的工具。你可以把它理解为二层(数据链路层)的 ping 命令。它是 iputils 软件包的一部分,这个包也包含了我们熟悉的 pingtracepath 等工具。

[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

二、命令参数详解

先来看看 arping 支持哪些参数。理解每个参数的作用,是灵活运用它的前提。

[root@master1 ~]# arping -h
Usage: 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 缓存(无需等待请求)。
-A ARP 回复模式(ARP Answer),模拟回复邻居主机的 ARP 请求(用于更新邻居缓存)。
-V 显示程序版本并退出。
-c 次数 指定发送的 ARP 请求包数量。
-w 超时 设置等待回复的超时时间(秒)。
-I 设备 指定使用的网络接口(如 eth0、ens33)。
-s 源地址 指定 ARP 请求包的源 IP 地址。
destination :  需要探测或操作的 IP 地址。

三、实战用例解析

掌握了参数,我们通过几个典型场景来看看 arping 具体怎么用。

1. 快速检测目标主机是否存活(二层连通性)

这是最基础的用法,用于确认目标主机是否在线以及二层网络是否通畅。

[root@master1 ~]# arping -f -c 99  -I eno1  172.25.61.xxx
ARPING 172.25.61.106 from 172.25.61.52 eno1
Unicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5]  1.034ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

命令解析

  • -f:快速模式。只要收到第一个响应,就立即停止发送并退出。所以你指定了发 99 个包 (-c 99),实际只发了 1 个。
  • -I eno1:指定使用 eno1 这块网卡发送请求。
  • 172.25.61.xxx:需要探测的目标 IP 地址。

这个输出不仅告诉你主机在线,还显示了它的 MAC 地址 [00:0C:29:6D:9E:C5] 和响应时间 1.034ms,信息非常直接。

2. 静默检测 IP 冲突(DAD 模式)

在给服务器配置静态 IP 或者 DHCP 服务器分配地址前,最好先检测一下这个 IP 是否已经被网络中的其他设备占用。这在自动化运维脚本中尤其有用。

[root@master1 ~]# arping -q -D  -c 99  -I eno1  172.25.61.106
# 查看返回值
[root@master1 ~]# echo $?
1

命令解析

  • -q:静默模式,不输出任何信息。
  • -D:启用重复地址检测(DAD)。如果收到任何回复,就认为该 IP 地址存在冲突。
  • 返回值解读
    • 0:无冲突,这个 IP 地址当前可用。
    • 1:存在冲突,这个 IP 地址已被其他设备占用。

3. 强制更新邻居主机的 ARP 缓存

当你的服务器更换了网卡(MAC地址变更)或者 IP 地址漂移后,可能需要主动通知网络中的其他主机更新它们的 ARP 缓存表,使用 -U 参数。

[root@master1 ~]# arping -U -I eno1 172.25.61.106
bind: 无法指定被请求的地址
[root@master1 ~]# arping -U -I eno1 172.25.61.52
ARPING 172.25.61.52 from 172.25.61.52 eno1
^CSent 2 probes (2 broadcast(s))
Received 0 response(s)

命令解析
为什么第一次命令会报错 bind: 无法指定被请求的地址?这是因为在使用 -U 模式时,arping 默认会尝试以目标 IP (172.25.61.106) 作为源 IP 来发送 ARP 通告。Linux 内核出于安全考虑,不允许你随意使用一个不属于本机网卡的 IP 地址作为源地址发送数据包。第二次命令成功,是因为 172.25.61.52 这个 IP 配置在本机的 eno1 网卡上。

4. 持续广播探测目标(绕过单播切换)

默认情况下,arping 在发送第一个广播包并收到回复后,后续的请求会改为单播发送。-b 参数可以强制它一直使用广播模式。

[root@master1 ~]# arping -b -c 5 -I eno1 172.25.61.106
ARPING 172.25.61.106 from 172.25.61.52 eno1
Unicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5]  0.884ms
Unicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5]  0.807ms
Unicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5]  0.808ms
Unicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5]  0.958ms
Unicast reply from 172.25.61.106 [00:0C:29:6D:9E:C5]  0.890ms
Sent 5 probes (5 broadcast(s))
Received 5 response(s)

用途

  • 诊断某些特殊网络设备(如老旧交换机)对单播/广播处理异常的问题。
  • 绕过目标主机上可能存在的、过滤单播 ARP 请求的防火墙规则。

5. 结合 tcpdump 抓包分析(高级调试)

要深入理解 ARP 通信过程,或者排查 ARP 欺骗等安全问题,可以将 arpingtcpdump 结合使用。

在一个终端运行 arping 探测:

#运行 arping 探测目标
[root@master1 ~]# arping -b -c 99 -I eno1 172.25.61.52
ARPING 172.25.61.52 from 172.25.61.52 eno1
Sent 99 probes (99 broadcast(s))
Received 0 response(s)

同时在另一个终端(或同一台机器的另一个会话)启动抓包:

[root@master1 ~]# tcpdump -i eno1 -n arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
21:12:48.435901 ARP, Request who-has 192.168.200.237 tell 192.168.200.212, length 46
21:12:48.445118 ARP, Request who-has 192.168.200.1 tell 192.168.200.228, length 46
21:12:48.445881 ARP, Request who-has 192.168.200.193 tell 192.168.201.235, length 46
21:12:48.535890 ARP, Request who-has 172.25.61.52 (Broadcast) tell 172.25.61.52, length 28
21:12:48.567786 ARP, Request who-has 172.25.61.151 tell 172.25.61.50, length 46
...

通过分析抓包结果,你可以清晰地看到网络中所有的 ARP 请求与回复。例如,可以检查是否有异常的、重复的 ARP Reply(这可能预示着 ARP 欺骗攻击),或者确认你的 arping 请求是否真的被发出了。

四、补充信息

相关命令
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层),直接在数据链路层工作。这使得它在诊断本地网络(二层)连接问题时非常高效,比如 IP 地址冲突检测、邻居主机存活状态检查、以及手动维护 ARP 缓存等场景,都是 ping 命令无法替代的。

如果你在 Linux 系统管理或网络运维中经常需要和局域网内的设备打交道,熟练掌握 arping 无疑能让你的工具箱更加充实。希望本文的实战案例能帮助你更好地理解和使用这个命令。更多网络与系统管理的实战技巧,欢迎在云栈社区交流探讨。




上一篇:2026年1月中国大陆显卡与主板出货量统计:环比大幅回升,市场前景如何?
下一篇:Eneba平台获取可绑定谷歌支付的虚拟VISA卡教程
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-2 22:15 , Processed in 0.485610 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表