侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux arping命令教程:如何探测和测试网络上的主机(附实例教程和注意事项)

Linux arping命令介绍

arping是一个用于探测和测试网络上主机的工具。它与ping命令不同,ping命令是在网络层工作,而arping是在数据链路层工作,使用地址解析协议(ARP)。使用arping时,会向目标主机发送ARP请求,并等待ARP回复。arping可以测试一个IP地址是否已经被网络上的其他设备使用,并能够获取更多的设备信息。

Linux arping命令适用的Linux版本

arping命令在大多数Linux发行版中都是可用的,但是可能需要安装iputils包。在Fedora 36中,arping已经预装了,但是在Manjaro 21和Ubuntu 22.04中,需要手动安装。安装命令如下:

  • 在Manjaro 21中,使用pacman命令安装:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S iputils
  • 在Ubuntu 22.04中,使用apt命令安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt install iputils-arping

Linux arping命令的基本语法

arping命令的基本语法格式如下:

arping [选项] 目标

其中,目标可以是IP地址或主机名。如果没有指定任何选项,arping会一直向目标发送ARP请求,直到用户按下Ctrl+C终止。

Linux arping命令的常用选项或参数说明

arping命令有很多选项或参数,可以用来控制arping的行为和输出。以下是一些常用的选项或参数:

选项或参数说明
-a只显示已经分配了IP地址的主机的回复
-A发送ARP回复而不是ARP请求
-b发送广播ARP请求而不是单播ARP请求
-c 数字发送指定数量的ARP请求,然后停止
-C 数字统计指定数量的ARP回复,然后停止
-D检测目标IP地址是否是重复的
-f当收到第一个ARP回复时停止
-F指定发送ARP请求的网络接口
-g与-b选项相同
-h显示帮助信息
-i 秒设置ARP请求之间的间隔时间
-I 网络接口指定发送ARP请求的网络接口
-q安静模式,不显示任何输出
-r显示原始的ARP回复数据
-s MAC地址指定发送ARP请求的源MAC地址
-S IP地址指定发送ARP请求的源IP地址
-t MAC地址指定发送ARP请求的目标MAC地址
-u无缓冲模式,立即显示输出
-U发送无应答的ARP请求
-v显示详细的输出
-w 秒设置等待ARP回复的超时时间

Linux arping命令的实例

实例1:向目标主机发送ARP请求并显示回复

[linux@bashcommandnotfound.cn ~]$ arping 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.765ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.676ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.672ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.663ms
^C
--- 192.39.59.17 statistics ---
4 packets transmitted, 4 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.663/0.694/0.765/0.038 ms

这个实例中,我们向IP地址为192.39.59.17的目标主机发送ARP请求,并显示收到的ARP回复。输出中显示了目标主机的MAC地址,以及每个ARP回复的延迟时间。我们按下Ctrl+C终止arping,并显示了一些统计信息。

实例2:向目标主机发送指定数量的ARP请求并显示回复

[linux@bashcommandnotfound.cn ~]$ arping -c 3 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.754ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.668ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.676ms
--- 192.39.59.17 statistics ---
3 packets transmitted, 3 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.668/0.699/0.754/0.036 ms

这个实例中,我们使用-c选项指定了发送3个ARP请求,然后停止。输出中显示了收到的3个ARP回复,以及一些统计信息。

实例3:向目标主机发送广播ARP请求并显示回复

[linux@bashcommandnotfound.cn ~]$ arping -b 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Broadcast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.762ms
Broadcast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.669ms
Broadcast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.677ms
^C
--- 192.39.59.17 statistics ---
3 packets transmitted, 3 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.669/0.702/0.762/0.038 ms

这个实例中,我们使用-b选项指定了发送广播ARP请求,而不是单播ARP请求。输出中显示了收到的广播ARP回复,以及一些统计信息。

实例4:检测目标IP地址是否是重复的

[linux@bashcommandnotfound.cn ~]$ arping -D 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.755ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.669ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.677ms
^C
--- 192.39.59.17 statistics ---
3 packets transmitted, 3 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.669/0.700/0.755/0.036 ms
IP address is duplicated by 00:50:56:B2:AB:CD

这个实例中,我们使用-D选项来检测目标IP地址是否是重复的。这个选项的作用是在发送ARP请求时,将源IP地址和目标IP地址设置为相同的值。如果收到了ARP回复,说明网络上有其他设备使用了这个IP地址,造成了IP地址冲突。输出中显示了收到了三个ARP回复,以及一个提示:IP address is duplicated by 00:50:56:B2:AB:CD。这表示有一个设备的MAC地址是00:50:56:B2:AB:CD,也使用了192.39.59.17这个IP地址。这可能会导致网络通信的异常或失败。要解决这个问题,可以尝试更换IP地址,或者找出造成冲突的设备并关闭它。

实例5:发送ARP回复而不是ARP请求

[linux@bashcommandnotfound.cn ~]$ arping -A 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Sent 3 probe (s) (0 broadcast (s))
Received 0 response (s)

这个实例中,我们使用-A选项指定了发送ARP回复而不是ARP请求。这可以用来模拟一个IP地址的存在,或者欺骗其他主机。输出中显示了没有收到任何ARP回复,因为我们没有发送任何ARP请求。

实例6:显示原始的ARP回复数据

[linux@bashcommandnotfound.cn ~]$ arping -r 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Reply from 192.39.59.17 [00:50:56:B2:AB:CD] for 192.39.59.16 [00:50:56:AB:CD:EF] 0.763ms
Reply from 192.39.59.17 [00:50:56:B2:AB:CD] for 192.39.59.16 [00:50:56:AB:CD:EF] 0.669ms
Reply from 192.39.59.17 [00:50:56:B2:AB:CD] for 192.39.59.16 [00:50:56:AB:CD:EF] 0.677ms
^C
--- 192.39.59.17 statistics ---
3 packets transmitted, 3 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.669/0.703/0.763/0.038 ms

这个实例中,我们使用-r选项指定了显示原始的ARP回复数据。输出中显示了每个ARP回复的源MAC地址,目标MAC地址,以及延迟时间。

实例7:指定发送ARP请求的源IP地址和MAC地址

[linux@bashcommandnotfound.cn ~]$ arping -s 00:11:22:33:44:55 -S 192.39.59.18 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.18 eth0
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.762ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.669ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.677ms
^C
--- 192.39.59.17 statistics ---
3 packets transmitted, 3 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.669/0.702/0.762/0.038 ms

这个实例中,我们使用-s选项指定了发送ARP请求的源MAC地址为00:11:22:33:44:55,使用-S选项指定了发送ARP请求的源IP地址为192.39.59.18。这可以用来伪造一个ARP请求,或者测试一个IP地址的可用性。

实例8:指定发送ARP请求的目标MAC地址

[linux@bashcommandnotfound.cn ~]$ arping -t 00:50:56:B2:AB:CD 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.763ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.669ms
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.677ms
^C
--- 192.39.59.17 statistics ---
3 packets transmitted, 3 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.669/0.703/0.763/0.038 ms

这个实例中,我们使用-t选项指定了发送ARP请求的目标MAC地址为00:50:56:B2:AB:CD。这可以用来直接向一个已知的MAC地址发送ARP请求,而不需要先进行ARP解析。

实例9:发送无应答的ARP请求

[linux@bashcommandnotfound.cn ~]$ arping -U 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Sent 3 probe (s) (0 broadcast (s))
Received 0 response (s)

这个实例中,我们使用-U选项指定了发送无应答的ARP请求。这意味着我们不期待收到任何ARP回复,也不会显示任何输出。这可以用来更新其他主机的ARP缓存,或者测试网络的可靠性。

实例10:设置ARP请求之间的间隔时间和超时时间

[linux@bashcommandnotfound.cn ~]$ arping -i 2 -w 1 192.39.59.17
ARPING 192.39.59.17 from 192.39.59.16 eth0
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.764ms
Timeout
Unicast reply from 192.39.59.17 [00:50:56:B2:AB:CD]  0.670ms
^C
--- 192.39.59.17 statistics ---
3 packets transmitted, 2 packets received,  33% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.670/0.717/0.764/0.047 ms

这个实例中,我们使用-i选项指定了ARP请求之间的间隔时间为2秒,使用-w选项指定了等待ARP回复的超时时间为1秒。输出中显示了有一次超时,以及其他两次的ARP回复。

Linux arping命令的注意事项

  • arping命令需要root权限才能运行,否则会报错:
[linux@bashcommandnotfound.cn ~]$ arping 192.39.59.17
arping: socket: Operation not permitted
  • arping命令只能探测本地网络上的主机,不能跨越路由器或网关。
  • arping命令可能会受到防火墙或其他安全设备的限制,导致无法收到ARP回复。
  • arping命令可能会引起网络上的其他主机的注意,或者被认为是一种攻击行为,因此要谨慎使用。
  • 如果在执行arping命令时遇到bash: arping: command not found的错误,可能是因为没有安装iputils包,可以使用命令安装。
0

评论区