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