目录
普通ARP与免费ARP
ARP(Address resolution protocol)地址解析协议
ARP的基本概念
ARP的分类
ARP主要分为普通的ARP、免费ARP和代理ARP(此处主要介绍普通ARP和免费ARP)
普通ARP和免费ARP的作用
1、通过ARP的请求和应答报文,可以根据目的IP地址来解析其对应的MAC地址
2、发送免费ARP请求,可以探测本机的IP地址在广播域内是否冲突、告知其他网络节点自己的IP地址和MAC地址、更新其他网络节点的ARP缓存表
ARP报文中涉及的全0-MAC地址和全F-MAC地址
全F为数据链路层封装的MAC,表示二层广播发送(免费ARP应答的Target MAC也为全F,表示该目的IP对应的MAC为非未知的)
全0为ARP请求报文的Target MAC封住的,表示目的MAC未知
ARP缓存表
用于缓存IP地址和MAC地址的映射关系,动态获取到的ARP条目老化时间为20分钟,1200s
ARP缓存表和MAC地址表的区别
ARP缓存表缓存的是IP地址和MAC地址之间的关系;MAC地址表缓存的是端口和MAC地址之间的关系
ARP缓存表主要用于自身进行数据转发;MAC地址表用来指导别人进行数据转发
动态ARP老化时间1200s;动态MAC地址老化时间300s
普通ARP报文讲解
什么情况下发送ARP
当主机去访问其它主机时,需要二层封装MAC地址,如果此时本地的ARP缓存表没有目标主机相应的MAC地址,就需要发送ARP报文进行请求
通过案例介绍ARP流程以及ARP的报文结构
案例场景
PC1发送ARP请求(此处ARP报文的Target MAC显示错误,应该为全0)
数据链路层:源MAC为自己PC1的MAC地址,目的MAC为广播MAC
ARP报文:Sender IP为自己PC1的IP地址,Sender MAC为自己PC1的MAC地址
Target IP为目的PC2的IP地址,Target MAC为全0(表示该MAC地址未知)PC2收到后发送ARP应答
数据链路层:源MAC为自己PC2的MAC地址,目的MAC为PC1的MAC
ARP报文:Sender IP为自己PC2的IP地址,Sender MAC为自己PC2的MAC地址
Target IP为目的PC1的IP地址,Target MAC为目的PC1的MAC地址
免费ARP报文讲解
什么时候发送免费ARP
1、当设备端口配置IP地址时,都会连续发送三次免费ARP来判断自己所配地址在广播域内是否冲突(如果没有收到免费ARP应答,则表示此地址不冲突)
2、VRRP协议的主设备也会发送免费ARP把报文
免费ARP请求和应答的特点
免费ARP请求也是ARP请求的一种,不同的是免费ARP的发送者和接收者IP地址都是自己
免费的ARP应答也是ARP应答的一种,不同的是免费ARP的发送者和接收者IP地址都是自己,并且接收者的MAC地址为全1
通过案例介绍免费ARP流程以及免费ARP的报文结构
案例场景
PC1发送免费ARP请求
数据链路层:源MAC为自己PC1的MAC地址,目的MAC为广播MAC
ARP报文:Sender IP和Target IP都为自己PC1的IP地址
Sender MAC为自己PC1的MAC地址,Target MAC为全0(表示该MAC地址未知)PC2发送免费ARP应答(告知此IP地址已经被自己使用)
数据链路层:源MAC为自己PC2的MAC地址,目的MAC为广播MAC
ARP报文:Sender IP和Target IP都为自己PC2的IP地址
Sender MAC为自己PC2的MAC地址,Target MAC为全F
ARP代理讲解
ARP代理类型
代理ARP场景下,设备通过ARP请求获得的MAC地址为ARP代理设备的MAC地址(不是目的IP对应的真实物理地址)
路由式ARP代理(常说的ARP代理就是此类型的)
应用场景
如果ARP请求是从一个网段的主机发往同一网段但不再同一物理网络上(被隔离)的主机,那么连接这两个网络的具有ARP代理功能的设备就会回应该ARP请求,这个过程称为ARP代理
即:需要互通的主机在路由器视角下为不同网段,但是主机两端都互相认为对方为同网段
代理设备代理回应ARP请求的条件
开启ARP代理功能
本地有去往目的IP的路由表
收到该ARP请求的接口与路由表下一跳不是同一个接口
Vlan内ARP代理
应用场景
需要互通的主机处于相同网段,并属于相同Vlan,但是Vlan内配置了端口隔离的场景
Vlan间ARP代理——后续在Super-Vlan讲解
应用场景
需要互通的主机处于相同网段,但是属于不同Vlan的场景(也就是Super-Vlan场景)
路由式ARP案例分析
场景介绍
PC9 ping PC10的通信过程
PC9和PC10不需要配置网关(因为对于这两台设备而言,其互访是同网段互访)
但是AR1认为PC9和PC10为不同网段
路由器没有开启ARP代理的情况(PC9无法与PC10通信)
PC9去访问PC10,发现目的IP与自己为同一网段,此时查看ARP表项,发现没有关于此目的IP的MAC地址;
此时PC9发送的ARP请求广播到达AR1的G0/0/0口之后,无法送达到G0/0/1口(路由器不同接口为不同广播域);
此时PC9和PC10无法通信
路由器开启ARP代理的情况(PC9与PC10可以通信)
第一阶段:PC9学习到PC10的MAC
PC9去访问PC10,发现目的IP与自己为同一网段,此时查看ARP表项,发现没有关于此目的IP的MAC地址;
PC9发送的ARP请求广播到达AR1的G0/0/0口之后,AR1发现接收此报文的接口开启了ARP代理,并且自己有关于该报文目的IP的路由,则此时AR1代替PC10向PC9发送ARP应答报文;PC9收到该应答后建立关于PC10-IP地址的ARP映射;AR1建立关于PC9的映射
具体信息
数据链路层:源MAC为PC9的MAC地址、目的MAC为广播全F
ARP层:Send-IP为PC9的IP地址,Target-IP为PC10的IP地址
Send-mac为PC9的MAC地址,Target-mac为全0
具体信息
数据链路层:源MAC为G0/0/0的MAC地址、目的MAC为PC9的MAC地址
ARP层:Send-IP为PC10的IP地址,Target-IP为PC9的IP地址
Send-mac为G/0/0的MAC地址,Target-mac为PC9的MAC地址
具体信息
IP:192.168.2.1 MAC:G0/0/0的MAC地址
第二阶段:AR1学习PC10的MAC、PC10学习到AR1的MAC
虽然PC之间认为两者为同网段,但是AR1认为PC9和PC10为不同网段,当PC9和PC10进行交互时自身需要重新封装MAC地址,但是此时没有关于PC10的MAC地址映射;因此AR1需要通过自己的地址去请求PC10的MAC地址(向PC10发送ARP请求);
PC10收到后建立关于AR1-G0/0/1地址的ARP映射,并回应ARP应答给AR1;此时AR1建立关于PC10的映射
具体信息
数据链路层:源MAC为G0/0/1的MAC地址,目的MAC为全FF
ARP层:Send-IP为G0/0/1的IP地址,Target-IP为PC10的IP地址
Send-mac为G/0/1的MAC地址,Target-mac为全0
具体信息
数据链路层:源MAC为PC10的MAC地址,目的MAC为G0/0/1的MAC地址
ARP层:Send-IP为PC10的IP地址,Target-IP为G0/0/1的IP地址
Send-mac为PC10的MAC地址,Target-mac为G/0/1的MAC地址
具体信息
IP:192.168.2.254 MAC:G0/0/1的MAC地址
第三阶段:PC10学习到PC9的MAC
在AR1去请求PC10的MAC地址的同时(即PC9建立PC10的ARP映射表后),PC9就封装ICMP报文发送给PC10;
当报文到达AR1后,AR1发现目MAC为自己,并且目的IP存在于路由表中;于是AR1将此PC9传递过来的报文重新封装发给PC10(AR1通过第二阶段获得了PC10的MAC)
#########################
PC10收到ICMP报文后,需要进行回应;回应时PC10发现PC9为自己同网段地址,但是自身没有关于PC9的ARP映射,则此时PC9发送ARP请求报文
PC10发送的ARP请求广播到达AR1的G0/0/1口之后,AR1发现自己接收此报文的接口有关于该报文目的IP的路由,则此时AR1代替PC9向PC10发送ARP应答报文;
PC10收到该应答后建立关于PC9-IP地址的ARP映射
具体信息
数据链路层:源MAC为PC10的MAC地址,目的MAC为全F
ARP层:Send-IP为PC10的IP地址,Target-IP为PC9
Send-mac为PC10的MAC地址,Target-mac为全0
具体信息
数据链路层:源MAC为G0/0/1的MAC地址、目的MAC为PC10的MAC地址
ARP层:Send-IP为PC9的IP地址,Target-IP为PC10的IP地址
Send-mac为G/0/1的MAC地址,Target-mac为PC10的MAC地址
具体信息
IP:192.168.1.1 MAC:G0/0/1的MAC地址
此时PC9和PC10就可以完成通信
ARP攻击
ARP欺骗攻击
ARP协议的缺陷
1、设备不对收到的ARP请求检验,就将报文中相应的MAC地址和IP地址建立映射
2、设备发送ARP请求后,对于收到的ARP响应不做校验,将报文中相应的MAC地址和IP地址建立映射
3、设备发送ARP请求广播包,整个网络都收到该报文针对ARP协议的缺陷诞生出ARP欺骗攻击
ARP欺骗的目的(造成的影响)
信息监听与转发、信息拦截、信息篡改
ARP欺骗的具体原理
1、ARP伪造同网段其他主机(欺骗主机)
- 设备1去请求设备2的MAC地址,发送ARP广播,设备3伪造设备2的应答包发送给设备1(伪造包的源IP为设备2的地址、源MAC为设备3的MAC);此时设备1对应设备2 IP地址的MAC地址就是设备3
- 但是如果此时设备1收到设备2发来的ARP应答包,就会更新ARP表项(此时ARP表项就变为正确的ARP表项了)
- 但是如果设备3一直发送伪造的ARP应答,就可以保证设备1的ARP表项关于设备2 IP地址对应的MAC大部分时间都是设备2的;此时设备1发送给设备2的消息都发送给了设备3
2、ARP伪造网关(欺骗网关)
- PC2向PC1发送伪造的ARP应答(源IP为网关,MAC地址为伪造设备),PC1发给网关的数据就被PC2窃取,然后PC2将信息篡改发送给真正的网关
ARP欺骗的解决方式
静态配置ARP表项
在交换机上做IP和MAC地址绑定(检验正确的数据包才可以通过)
划分Vlan(只是减少ARP欺骗的范围)
ARP泛洪攻击
发送大量ARP请求/应答报文,使得设备的ARP表溢出,CPU负荷过重,造成设备难以响应正常服务(限制接口学习数量、静态配置ARP表项等)
ARP中间人攻击
中间人攻击就是同时欺骗局域网内的主机和主机的网关(通过发送假的ARP报文将主机/用户的IP地址与自己的MAC绑定),使得主机和网关的数据都会发送给同一个攻击者, 进行信息的篡改和泄露
具体流程为:客户端数据包经过中间人,再由中间人转发给服务器
ARP中间人攻击其实也就是利用ARP进行欺骗,所以也可以通过防范ARP欺骗的方法来防范ARP中间人攻击