Arping 命令详解


原文链接: Arping 命令详解

通知网关刷新ARP缓存

经常会有在线更换Linux服务器IP的操作,该操作带来的一个问题是: 我们已经执行了修改IP的操作,但由于网络上(网关)的ARP缓存暂未更新,导致在某一段时间内,该服务器会有网络不通的情况存在。

因此,我们需要在变更IP的同时,通知网关刷新ARP缓存。

  1. 首先清除本地ARP缓存:

/bin/ip neigh flush dev eth0

  1. 其次向网关发送本机的ip/mac地址

/usr/sbin/arping -v -c 2 -S 1.1.1.144 -s 00:17:a4:8d:0e:98 -p 1.1.1.1

1.1.1.144 为本机IP
00:17:a4:8d:0e:98 为本机MAC地址
1.1.1.1 为网关

arping 命令:

说明:arping是用于发送arp请求到一个相邻主机的工具;
arping使用arp数据包,通过ping命令检查设备上的硬件地址。
语法:arping [-bqfDUAV] [-ccount] [-w timeout] [-I device] [-s source] destination
参数:
-b 用于发送以太网广播帧(FFFFFFFFFFFF)。arping一开始使用广播地址,在收到响应后就使用unicast(单播)地址。

-q quiet output 不显示任何信息;
-f 表示在收到第一个响应包后就退出;

-D 重复地址检测模式(不常用)

-U 主动的ARP模式,主动更新邻居的ARP caches,与 –s 配合使用

-A ARP回复模式,与-U选项类似,但是发送的是ARP 回复报文,而不是ARP请求报文,与–s 配合使用

-V 显示版本信息

-c count表示发送指定数量的 ARP 请求数据包后就停止。如果制定了deadline选项,则arping会等待相同数量的arp响应包,直到超时为止;
-w timeout设定一个超时时间,单位是秒。如果到了指定时间,arping 还没有完全收到响应则退出;

-I interface设置ping使用的网络接口;
-s source设定 arping发送的 arp数据包中的 SPA字段的值。如果为空,则按下面处理
如果是 DAD模式(冲突地址探测),则设置为 0.0.0.0;
如果是 Unsolicited ARP模式(Gratutious ARP)则设置为目标地址;--即设置了-A/-U参数
否则从路由表得出;
destination设置目标地址。

使用示例:
发送ARP请求

//向指定IP发送ARP请求
arping 192.168.0.1

示例一、arping -c 5 -I eth0 -s VIP GATEWAY

示例二、arping -Uq -I enp4s0 -s 10.100.2.249 10.100.2.254

通过enp4s0网卡,向10.100.2.254请求10.100.2.249是否可用,并广播通知其他机器(抢占10.100.2.249这个IP)

示例三、arping -c 4 -A -I eth1 192.168.2.119

示例四、-A和-U参数的使用区别

arping -c 4 -U -I eth1 -s 192.168.90.99 192.168.90.96
ARPING 192.168.90.96 from 192.168.90.99 eth1
Unicast reply from 192.168.90.96 [00:21:F6:00:00:3B] 0.981ms
Unicast reply from 192.168.90.96 [00:21:F6:00:00:3B] 0.739ms
-U参数有回复包,第一次使用广播,然后就使用单播Unicast。
arping -c 4 -A -I eth1 -s 192.168.90.99 192.168.90.96
ARPING 192.168.90.96 from 192.168.90.99 eth1
Sent 4 probes (4 broadcast(s))
Received 0 response(s)
-A参数没有回复包。

示例四中的192.168.90.99和192.168.90.96在一个局域网中(即一个Vlan,都是90网段),如果跨Vlan,那么这个命令执行的时候不是有效的,返回结果如下:

arping -c 4 -U -I eth1 -s 192.168.1.248
arping: Weird MAC addr 192.168.1.248

这个时候需要Telnet登录到交换机,进行清除cache操作。如下:

在交换机上查看某个IP对应的MAC

show arp | in 192.168.1.248

清除交换机缓存

clear arp-cache

show arp | in 192.168.1.248

`