静态路由协议 ARP协 ARP攻击简介

本文深入探讨了ARP协议的工作原理,解释了为何PING命令的第一个包会丢失,以及静态路由配置中下一跳IP与仅指定接口的区别。通过Cisco Packet Tracer的演示,详细分析了不同广播域下ARP请求与响应的过程,包括代理ARP的触发条件及其在网络通信中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次问题用到的命令

特权模式下
清楚arp表命令
clear arp-cache

查看路由表
show ip route

测试连通性
ping [IP地址]

重启设备
reload

全局模式下
配置静态路由
ip route [需要添加的网段] [子网掩码] [下一跳接口IP/接口]

关闭代理ARP
no ip proxy-arp

绑定MAC地址
arp [需要绑定的IP] [需要绑定的MAC地址] arpa

ARP全称为:(Address REsolution Protocol) 地址解析协议

ARP的作用:将已知的IP地址解析为MAC地址

这里主要说明两个问题

1. 在进行PING命令时,第一个包会丢失。这是为什么

2.静态路由只写出接口和写上下一跳接口IP的区别。

下面几张图都是通过cisco packet tracer 调试模式下抓出来的数据包

第一个问题拓扑图如下
在这里插入图片描述

第一种情况在用同一个广播域下

192.168.1.1 ping 192.168.1.2
在这里插入图片描述

红色的框代表192.168.1.1接口的MAC地址
绿色的框代表发送的广播请求MAC地址和目标接口的MAC地址

MAC地址是以16进制表示的,所以对MAC地址的广播就是16个F表示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
简单小结
在这里插入图片描述
1.因为PING命令使用的是ICMP协议,该协议需要获取接口IP的MAC地址,所以需要先使用ARP协议获取MAC地址。(上图就是ICMP报文)

2.ARP通过广播发单播回的形式请求MAC地址,目标设备会单独回复一个ARP包给源路由器,源路由器将发回MAC地址记录到ARP表中。

3.下一次访问同一个IP时,就可以直接访问,不会出现第一个包丢失的情况了。


第二种情况在不同广播域下(写下一跳IP的情况)

以下是拓扑图
在这里插入图片描述
192.168.1.1 ping 192.168.2.2
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

简单小结

在这里插入图片描述ARP表
在这里插入图片描述路由表
在这里插入图片描述ICMP包
1.因为设备没有PING过没有MAC地址,所以都在发送ARP包请求MAC地址。但是为什么PING完后只有两条MAC地址,而没有2.2的MAC地址。

2.因为ARP并不请求目标的MAC地址,是去请求下一跳的MAC地址,而且路由器是根据路由表去解析和转发,不会超出自己的广播域。

3.R2打开MAC层查看确定是同一个广播域发来的,再去查看IP层,可以转发就把MAC地址换成能转发的接口的MAC地址,IP层不会被动。

**4.**在网络中每经过一个路由器,ARP都要都要编写一个新的头目,都是同一个广播域一层一层递推。


第三种情况在不同广播域下(只有出接口的情况)

拓扑图如下
在这里插入图片描述
将下一跳改为接口
在这里插入图片描述
更改前路由表
在这里插入图片描述
更改前ARP表
在这里插入图片描述

更改后路由表
在这里插入图片描述
更改后ARP表
在这里插入图片描述
这里会涉及一个东西叫做代理ARP在路由器中没有下一跳IP的时候就会触发这个东西,思科设备接口默认代理ARP都是开启的,如果没有开启代理ARP只写出接口不写IP是不能通的。最直观的现象就是PING一条IP,就会形成一条新的映射,对应的MAC地址很有可能是同一个MAC地址。

在没有下一跳IP的时候,在这个拓扑图里,根据ICMP包内容,路由器将会在1.0的广播域里,去解析2.2的MAC地址,当然是不可能成功的。
这个时候能听到的只有1.2能响应,前提是开始代理ARP,如果发现这个包解析的不是本段的IP地址,认为没有网关,看自己有没有能力访问,如果这个设备有这个访问的地址。
这个时候出口接口连接的那个那个路由器上的接口的MAC地址发给源路由器,源路由器就会将这些MAC添加到ARP映射表。
这就是为什么全部都是1.2的MAC地址的原因

另外说一句只写出接口的话,超过三个路由器,就算设置每个路由设置了正确的出口方向,都有两个包,一个成功一个失败。

描述一下整个过程先上图

在这里插入图片描述
首先R1发送一个ICMP包,因为ICMP包中没有MAC地址发送失败

R1发送ARP包请求MAC地址,会从下一跳接口发出

R2接收到R1的请求,将R1的MAC地址写入自己的ARP表中,再回发一个ARP包,告诉R1接口的MAC地址。

R1收到ARP包,将R2的MAC地址写入到自己的ARP表中。

R1再发送ICMP包,给R2,R2接收到R1发过来的信息,R2发送一个ICMP包,因为ICMP包中没有MAC地址发送失败。

R2和R3重复R1和R2的过程,获取到R3接口的MAC地址,保存到R2的ARP表中。

R1再发送ICMP包,给R2,R2再发送ICMP包给R3,R3接收到ICMP包。R3发送一个ICMP包,给R2,R2发送一个ICMP包给R1,这样就完成一环PING命令。

这张拓扑图是不怎么看的出效果的因为只有一条路,如果只有一条路的话,不过是只写出接口,还是下一跳,都是差不多的。只不过只写出接口会产生大量的映射列表,挤占内存空间

一个具体的例子说明其区别

在这里插入图片描述
如果是这个样的拓扑图只写了出接口,R1去PINGR6,如果R2只写下面的接口就会产生次优先路径,上下接口都写会产生大量广播,都回去帮R1寻找,浪费资源。且ARP遵循**“后到优先”**,后到的会顶替先到的MAC地址,一般情况都是次优先路径后道,这也是会有ARP攻击的原因。

ARP广播请求单播响应,LAN以外有的网段,有下一跳的解析下一跳,有网关的解析网关,都没有就触发代理。

简单总结一下

1.在下一跳接口为IP时路由表中记录了下一跳接口IP,其ARP表只记录了1.1和1.2接口的ARP地址,印证了上面的有这条路由的路由器会去帮它寻找。

2.再改为接口后,没有了接口IP,但是其ARP记录了每一个访问过得接口IP的MAC地址,但是都是一样的,这个就是触发了,代理ARP

3.只写接口的话不但会产生大量的映射列表挤占空间、产生次优先路径,而且在超过三个路由器以后,还会产生巨大的丢包率,发两个丢一个。

ARP攻击

因为ARP是广播请求,在同一个网段内的所有设备都会接收到,如果有人在假装成你想访问的MAC地址。就算你之前有请求到了你想请求的MAC地址,但是ARP遵循“后到优先”的原则,原来的MAC地址就会被替换掉。
在这里插入图片描述
假设PC0去访问server1,路由器发送了server1的MAC地址给PC0,但是只要Latop1知道你先请求的IP地址。然后假冒你请求的MAC,即使网关回复你真的MAC地址,只要这个时候我再去访问你一次,你就会把所有的数据发送到我这里来。

手动绑定就没问题了,是要麻烦一点,不过也没有办法。

遭遇这种攻击最直观的现象就是你断网了。

IPv6果断放弃了这种机制了,因为IPv6没有广播机制了,取而代之是邻居机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值