arping详解

版本

arping主要干的活就是查看ip的MAC地址及IP占用的问题。

arping有两个版本,一个版本是Thomas Habets这个人写的,这个版本有个好处是可以arping <MAC地址>,也就是说我们可以通过MAC地址得到IP。还有一个版本是Linux iputils suite的,这个版本就不能通过MAC地址,解析出IP地址了。

可以使用arping -V来查看自己系统的arping的版本

楼主观察了CentOS使用的是Linux iputils suite版本的,debian使用的是Thomas Habets。

注意两个版本的的arping使用的参数有很大的区别,所以要根据自己的arping版本去使用相应的参数。别到网上抄了个,结果在自己的系统上不能执行。

楼主使用的系统debian是Thomas Habets版本的,所以下面的很多参数只适合debian操作系统。

TH版简介

过程:给一个主机,发送arp或者ICMP包,并打印回复的消息。主机可以以hostname,ip地址,mac地址等形式出现。一个请求包,每隔一秒发送一次。为什么说发送的包有arp和icmp呢,因为,当主机为ip或hostname的时候,发送的是arp请求包。当主机是mac地址的时候,发送的则是icmp的echo广播包

参数

-0:指定源地址为0.0.0.0,这个一般是在我们刚刚安装好系统,电脑还没配置好IP的时候

-a:Audible ping.这个当有reply回来的时候,你的电脑有喇叭的话,就会滴滴的叫

-A:Only count addresses matching requested address

-b:类似-0,指定源broadcast为255.255.255.255

-B:指定这个就相当于 arping 255.255.255.255

-c count:发送指定数量的arp包后,即停止退出

-d:这个比较重要,当局域网有IP占用的时候,可以指定这个参数,当有相同的IP的不同MAC地址reply的时候,arping会退出,退出码为1
-D:这个检测是否丢包的,当丢包的时候打印感叹号,正常的时候打印逗号

-e:和-a相反,当没有reply的时候,会滴滴滴

-p:打开混杂模式,当前用户对mac无权限时,可以加上这个选

-r:输出的时候只打印MAC,写脚本的时候用得到,不用自己对结果awk了

-R:输出的时候只打印IP,和上面一样

-s MAC:指定源MAC地址

-S IP:指定源IP,设置了源IP,如果目标主机没有到源IP的route,则有可能收不到answer

-t MAC:指定目的MAC

-T IP:指定目的IP,

-i interface:指定发送arp包的设备。不指定的话,默认为系统的第一块网卡

-q:表示不打印输出,写脚本不想打印输出的时候,应该用的到

-u:没啥大用,结果显示的时候,加这个参数和不加,index的显示形式不同

-v:打印详细的输出,默认打印的好像就是verbose

-w deadline:指定两个ping直接的时间间隔,单位为毫秒,默认为1秒

用法

讲了这么多,感觉大多数的参数都用不到吧。记住常见用法就OK了

用法1:查看某个IP的MAC地址

1
arping 192.168.131.155

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

1
arping -c 1 192.168.131.155

用法3:当有多块网卡的时候,指定特定的设备来发送请求包

1
arping -i eth1 -c 1 192.168.131.155

用法4:查看某个IP是否被不同的MAC占用

1
arping -d 192.168.131.155

用法5:查看某个MAC地址的IP,要在同一子网才查得到

1
arping -c 1 52:54:00:a1:31:89

用法6:确定MAC和IP的对应,确定指定的网卡绑定了指定的IP

1
arping -c 1  -T 192.168.131.156  00:13:72:f9:ca:60

用法7:确定IP和MAC对应,确定指定IP绑在了指定的网卡上

1
arping -c 1  -t  00:13:72:f9:ca:60 192.168.131.156

用法8:有时候,本地查不到某主机,可以通过让网关或别的机器去查。以下几种形式测了下都可以

1
2
3
arping   -c 1  -S 10.240.160.1 -s 88:5a:92:12:c1:c1  10.240.162.115
arping -c 1 -S 10.240.160.1 10.240.162.115
arping -c 1 -s 88:5a:92:12:c1:c1 10.240.162.11