08
2024
08
16:04:52

linux之arp和arping命令

维护或查看系统arp缓存,该命令已废弃,使用ip neigh代替。

arp为地址解析协议,将给定的ipv4地址在网络中查找其对应的MAC地址。

一般会使用arp协议获取局域网内的主机MAC,所以局域网主机之间也互称为网络邻居。

arp命令

arp命令语法:

  1. arp -n -v -i           # 查看arp缓存

  2. arp -i ethX -d hostname     # 针对X端口 删除arp缓存条目

  3. 选项说明:

  4. -n:不解析ip地址为名称

  5. -v:详细信息

  6. -i:指定操作的接口

  7. -d:删除一个arp条目

hostname:操作该主机的arp条目,除了删除还有其他动作,如手动添加主机的arp条目,此处就不解释该用法了

例如:

  1. [root@xuexi ~]# arp -n

  2. Address HWtype HWaddress Flags Mask Iface

  3. 192.168.100.1            ether   00:50:56:c0:00:08   C                     eth1

  4. 192.168.100.254          ether   00:50:56:e7:e1:d4   C                     eth0

  5. 192.168.100.70           ether   00:0c:29:71:81:64   C                     eth0

  6. 192.168.100.1            ether   00:50:56:c0:00:08   C                     eth0

  7. 192.168.100.2            ether   00:50:56:e2:16:04   C                     eth1

  8. 192.168.100.254          ether   00:50:56:e7:e1:d4   C                     eth1

  9. 192.168.100.2            ether   00:50:56:e2:16:04   C                     eth0

其实查看的信息是/proc/net/arp文件中的内容。

  1. [root@xuexi ~]# cat /proc/net/arp

  2. IP address       HW type     Flags       HW address            Mask Device

  3. 192.168.100.1 0x1 0x2 00:50:56:c0:00:08 *        eth1

  4. 192.168.100.254 0x1 0x2 00:50:56:e7:e1:d4     *        eth0

  5. 192.168.100.70 0x1 0x2 00:0c:29:71:81:64 *        eth0

  6. 192.168.100.1 0x1 0x2 00:50:56:c0:00:08 *        eth0

  7. 192.168.100.2 0x1 0x2 00:50:56:e2:16:04 *        eth1

  8. 192.168.100.254 0x1 0x2 00:50:56:e7:e1:d4     *        eth1

  9. 192.168.100.2 0x1 0x2 00:50:56:e2:16:04 *        eth0

代码语言:javascript
复制
[root@xuexi ~]# arp -d 192.168.100.70 -i eth0   # 删除arp缓存条目

arp命令一次只能删除一条arp条目,要批量删除或清空整个arp条目,使用ip neigh flush命令。如:

  1. [root@xuexi ~]# ip neigh flush all            # 清空所有

  2. [root@xuexi ~]# ip neigh flush dev eth0     # 删除eth0上缓存的arp条目

arping命令

arping用于发送arp请求报文,解析并获取目标地址的MAC。默认将先发送广播报文,收到回复后再发送单播报文,局域网内所有主机都能收到广播报文,但只有目标主机才会回复自己的MAC地址。

注意:发送arp请求报文实际上是另类的ping,所以可以探测目标是否存活,也需要和目标通信,通信时目标主机上也会缓存本主机(即源地址)的arp条目。

语法:

  1. arping [-fqbDU] [-c count] [-w timeout] [-I device] [-s source] destination

  2. -f : 收到第一个reply就立即退出

  3. -q : 安静模式,什么都不输出

  4. -b : 只发送广播,不发送单播

  5. -D : 地址冲突检测

  6. -U : 主动更新邻居的arp缓存(Unsolicited ARP mode)

  7. -c count : 发送多少个arp请求包后退出

  8. -w timeout : 等待reply的超时时间

  9. -I device : 使用哪个接口发送请求包。发送arp请求包接口的MAC地址将缓存在目标主机上

  10. -s source : 指定arp请求报文中源地址,若发送的接口和源地址不同,则目标主机将缓存该地址和接口的MAC地址,而非该源地址所在接口的MAC地址

  11. destination : 向谁发送arp请求报文,即要获取该IP或主机名的MAC地址

例如:

(1).请求解析192.168.100.70主机的MAC地址

  1. [root@xuexi ~]# arping -f 192.168.100.70

这将会发送广播报文,直到收到192.168.100.70的回复才退出。

同时,192.168.100.70也会缓存本机的IP和MAC对应条目,由于此处没有指定请求报文的发送接口和源地址,所以发送报文时是根据路由表来选择接口和对应该接口地址的。

(2).指定发送一个请求报文给192.168.100.70就退出,发送报文的接口为eth1,并指定请求报文中的源地址为本机eth0接口上的地址192.168.100.54

  1. [root@xuexi ~]# arping -c 1 -I eth1 -s 192.168.100.54 192.168.100.70

发送这样的arp请求包,将会使得目标主机192.168.100.70缓存本机的arp条目为”192.168.100.54 MAC_eth1”,但实际上,192.168.100.54所在接口的MAC地址为MAC_eth0。

arping命令仅能实现这种简单的arp欺骗,更多的arp欺骗方法可以使用专门的工具。

(3).探测对方主机是否存活

例如发送4个探测报文,有回复就说明对方存活

  1. [root@xuexi ~]# arping -c 4 -I eth0 192.168.100.2

  2. ARPING 192.168.100.2 from 192.168.100.54 eth0

  3. Unicast reply from 192.168.100.2 [00:50:56:E2:16:04] 0.593ms

  4. Unicast reply from 192.168.100.2 [00:50:56:E2:16:04] 0.930ms

  5. Unicast reply from 192.168.100.2 [00:50:56:E2:16:04] 0.868ms

  6. Unicast reply from 192.168.100.2 [00:50:56:E2:16:04] 0.844ms

  7. Sent 4 probes (1 broadcast(s))

  8. Received 4 response(s)




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/7479.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: