arping命令详解

  • 格式:pdf
  • 大小:139.54 KB
  • 文档页数:3

arping命令详解

⼀、版本

arping命令是⽤于发送arp请求到相邻主机的⼯具,arping使⽤arp数据包

arping有两个版本,⼀个版本是Thomas Habets这个⼈写的,这个版本有个好处是可以arping

也就是说我们可以通过MAC地址得到IP。还有⼀个版本是Linux iputils suite的,这个版本就不能通过MAC地址,解析出IP地

址了。

可以使⽤arping -V来查看⾃⼰系统的arping的版本

据观察Redhat\CentOS使⽤的是Linux iputils suite版本的,debian使⽤的是Thomas Habets。

注意两个版本的的arping使⽤的参数有很⼤的区别,所以要根据⾃⼰的arping版本去使⽤相应的参数。

不看版本在⽹上抄的命令可能在⾃⼰的系统上⽆法执⾏。下⾯介绍Linux iputils suite版本的arping命令⽤法。

⼆、语法

Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination

三、参数释义

-A:与-U参数类似,但是使⽤的是ARP REPLY包⽽⾮ARP REQUEST包。

-b:发送以太⽹⼴播帧,arping在开始时使⽤⼴播地址,在收到回复后使⽤unicast单播地址。

-c:发送指定的count个ARP REQUEST包后停⽌。如果指定了-w参数,则会等待相同数量的ARP REPLY包,直到超时为⽌

。-D:重复地址探测模式,即,Duplicate address detection mode (DAD),⽤来检测有没有IP地址冲突,如果没有IP冲突则返

回0。-f:收到第⼀个响应包后退出。

-h:显⽰帮助页。

-I:⽤来发送ARP REQUEST包的⽹络设备的名称。

-q:quite模式,不显⽰输出。

-U:⽆理由的(强制的)ARP模式去更新别的主机上的ARP CACHE列表中的本机的信息,不需要响应。

-V:显⽰arping的版本号。

-w:指定⼀个超时时间,单位为秒,arping在到达指定时间后退出,⽆论期间发送或接收了多少包。

在这种情况下,arping在发送完指定的count(-c)个包后并不会停⽌,

⽽是等待到超时或发送的count个包都进⾏了回应后才会退出。-s:设置发送ARP包的IP资源地址,如果为空,则按如下⽅式处理:

1、DAD模式(-D)设置为0.0.0.0;

2、Unsolicited模式(-U)设置为⽬标地址;

3、其它⽅式,从路由表计算。

四、实例

1、查看某个IP的MAC地址

有多个⽹卡可以⽤ -I 指定⽹卡接⼝

1 [root@CentOS7.9 ~]# arping -I enp5s0f0 192.168.52.1

2 ARPING 192.168.52.1 from 192.168.52.14 enp5s0f0

3 Unicast reply from 192.168.52.1 [00:00:5E:00:01:69] 3.024ms

4 Unicast reply from 192.168.52.1 [00:00:5E:00:01:69] 2.988ms

5 ^CSent 2 probes (1 broadcast(s))

6 Received 2 response(s)

7 [root@CentOS7.9 ~]#

2、查看某个IP的MAC地址,并指定count数量

-c 可以指定发送特定数量的ARP REQUEST包

1 [root@CentOS7.9 ~]# arping -c 2 -I enp5s0f0 192.168.52.1

2 ARPING 192.168.52.1 from 192.168.52.14 enp5s0f03 Unicast reply from 192.168.52.1 [00:00:5E:00:01:69] 3.394ms

4 Unicast reply from 192.168.52.1 [00:00:5E:00:01:69] 3.235ms

5 Sent 2 probes (1 broadcast(s))

6 Received 2 response(s)

7 [root@CentOS7.9 ~]#

3、探测重复地址

-D 可以探测是否有重复ip地址,测试发现-D似乎只有在同⽹段主机上才有⽤,在和被测ip不同⽹断⽆效。 有重复地址即存在IP冲突则返回1

1 [root@CentOS7.9 ~]# arping -c 1 -D -I enp5s0f0 192.168.52.18

2 ARPING 192.168.52.18 from 0.0.0.0 enp5s0f0

3 Unicast reply from 192.168.52.18 [A0:B3:CC:E5:8B:46] 4.741ms

4 Sent 1 probes (1 broadcast(s))

5 Received 1 response(s)

⽆重复地址则返回0

1 [root@CentOS7.9 ~]# arping -c 1 -D -I enp5s0f0 192.168.52.18

2 ARPING 192.168.52.18 from 0.0.0.0 enp5s0f0

3 Sent 1 probes (1 broadcast(s))

4 Received 0 response(s)

5 [root@CentOS7.9 ~]#

4、更新邻近主机arp缓存

每台主机都会在⾃⼰的 ARP 缓冲区中建⽴⼀个 ARP 列表,

以表⽰ IP 地址和 MAC 地址之间的对应关系,⼆层的数据传输靠的就是MAC地址。

不同⼚商默认的ARP表⽼化时间也不⼀样:思科是 5分钟,华为是 20分钟。ARP 表缓存⽼化时间过长有时可能会导致⼀些⽹络问题,我们后⾯讨论。先看下arp协议⼤致的⼯作原理。

**ARP协议⼯作原理**

ARP 协议包(ARP 报⽂)主要分为 ARP 请求包和 ARP 响应包。

⽹络中的主机可以通过这两种报⽂获取ip和MAC的对应关系或更新邻近主机的arp表。

***ARP请求包***

某个主机需要发送报⽂时,⾸先检查 ARP 列表中是否有对应 IP 地址的⽬的主机的 MAC 地址,

如果有,则直接发送数据,如果没有,

就向本⽹段的所有主机发送 ARP ⼴播数据包,该数据包包括的内容有:源主机 IP 地址,

源主机 MAC 地址,⽬的主机的 IP 地址等。当本⽹络的主机收到该 ARP 数据包时:

(A)⾸先检查数据包中的 IP ⽬标地址是否是⾃⼰的 IP 地址,如果不是,则忽略该数据包。

(B)如果是,则**⾸先从数据包中取出源主机的 IP 和 MAC 地址写⼊到 ARP 列表中,

如果已经存在,则覆盖。然后将⾃⼰的 MAC 地址写⼊ ARP 响应包中,

单播给发送请求的主机,告诉源主机⾃⼰就是它想要找的 MAC地址。源主机收到 ARP 响应包后。

将⽬的主机的 IP 和 MAC 地址写⼊ ARP 列表,**并利⽤此信息发送数据。

如果源主机⼀直没有收到 ARP 响应数据包,表⽰ ARP 查询失败。

***ARP响应包***

要更新邻近主机关于⾃⼰的arp记录可以发送ARP响应包⽂。

如:某设备(⽹络接⼝)新加⼊⽹络或mac地址发⽣变化亦或接⼝发⽣重启时,

会**发送免费ARP报⽂把⾃⼰IP地址与Mac地址的映射关系⼴播给其他主机。

⽹络上的主机接收到免费ARP报⽂时,会更新⾃⼰的ARP缓冲区。**将新的映射关系更新到⾃⼰的ARP表中。

**ARP表⽼化时间造成的问题**

在⼀些HA的场景会配置浮动ip,可能会出现浮动ip切到其他主机后⽹络不通的问题,

这很有可能是交换机ARP表没有更新造成的,

因为在ip切换的过程中也许没有⽹络接⼝状态的变化触发ARP表的更新,

交换机或其他主机缓存的依然是⽼的数据。等到交换机ARP表⽼化时间到了再次更新arp表⽹络就通了。

显然我们没有那么多的时间,⽽且这样HA的意义⼜何在呢?

为了使交换机尽快更新ARP表,

可以将交换机的ARP缓存清理掉,让交换机⾃动学习⼀遍,

但交换机不是每个系统管理员都能操作的。

最⽅便的办法是在服务器上发送ARP请求或响应报⽂,

从⽽更新交换机和邻近主机的ARP缓存,操作完成后⽹络就通了。

前⾯说了这么多,其实就是为了引出最后的ARP缓存导致⽹络不通的问题和解决办法,

但如果对ARP⼯作原理的基本了解,是很难想到问题所在的。如下两台命令可以帮助更新APR缓存表:

在浮动ip所在的主机执⾏如下两条命令中任意⼀个,192.168.52.18 为vip,enp5s0f0是vip需要绑定的⽹卡名

1 arping -c 3 -U -I enp5s0f0 192.168.52.18

2 arping -c 3 -A -I enp5s0f0 192.168.52.18