一、ARP地址解析实验
1. 基本配置
实验环境:ensp
模拟环境:
- 路由器R1是公司出口网关,连接到外网。公司内所有员工在使用10.1.0.0/16,通过交换机连接到网关路由器上,为了防止ARP欺骗配置静态ARP。
- 主机没有配置默认网关,且分属不同广播域,造成无法通信,在路由器上配置ARP代理功能,实现网络内所有主机的通信。
1.1 ARP request包和reply包
R1配置:
Int g 0/0/0
Ip add 10.1.1.254 24
Int g 0/0/1
Ip add 10.1.2.254 24
PC1 ping 10.1.1.254
PC2没有Ping路由器,看ARP缓存:
ARP表现为空,没有任何条目;
查看R1的ARP缓存表:
不但存在R1两个接口的IP地址和MAC地址的映射,还包含了PC1 IP和MAC地址的映射;
接下来我们用PC2 PING R1的接口10.1.2.254查看ARP的包;
因为PC2的arp表项中没有10.1.2.254与MAC地址的映射表,所以PC2会发送ARP 广播请求;
PC-2发送的ARP广播request报文
PC-2发送的ARP广播reply报文
R1 ARP缓存表
可以看出R1的ARP缓存表中有了接口的映射,以及PC-1,PC-2,PC-3的IP地址和MAC地址映射,但是PC的MAC地址都是动态映射的,如果一段时间没有更新就会被删除。
2. 静态ARP
ARP工作行为,往往会被攻击者利用,如果攻击者发送伪造的ARP报文,而且报文里面所通告的IP地址和MAC地址映射是错误的,则主机或网关会把错误的映射更新到ARP表中,当主机发送数据到指定的目标IP地址时,从ARP表里得到了不正确的MAC地址,并用之封装,导致数据帧无法正确发送。
模拟ARP攻击(修改MAC地址):正确的PC1的MAC地址是:54-89-98-92-11-BB
[R1]arp static 10.1.1.1 5489-9898-11cc
R1配置了静态ARP的 ARP缓存表
此时R1 Ping 10.1.1.1是不能够通的,PC-1 Ping 网关也是不能通的,因为路由器R1上的ARP映射错误;
R1 Ping PC-1:
PC-1 Ping 网关:
在R1的G0/0/0接口抓包,R1配置静态ARP后ping 10.1.1.1 抓包
可以看到目的MAC地址被错误封装。
为了防止ARP欺骗攻击,防止其感染路由表的ARP表,可以通过静态配置ARP表项来实现。如果IP地址和一个Mac地址的静态映射已经出现在ARP表项中,则通过动态ARP方式学来的映射无法进入ARP表。
3. 配置Proxy ARP(代理ARP)
- 配置静态ARP,如果是一个比较大的网络,一直配置静态arp的话,手动配置工作量大,维护不方便。
PC-2 ping PC-3(不同网段之间):
在PC-2的E0/0/1接上抓包:
R1 G0/0/0接口开启代理arp命令:
[R1]int G0/0/0
[R1-GigabitEthernet0/0/0] arp-proxy enable
开启代理arp后抓包:
1. Request包
2. Reply包
流程:R1的接口G0/0/0开启了 代理arp后,收到PC-2的request广播报文请求后,R1根据ARP请求中的目的IP地址10.1.2.3查看自身的路由表是否有对应的目标网络,R1的G0/0/1接口有就是10.1.2.0/24网路,所以R1直接把自身的G0/0/0接口的MAC地址响应给PC-2,PC-2收到此arp响应后的MAC地址作为目标硬件地址发送报文给R1,R1收到后再转发给PC-3.
注意:此时PC-3是ping不同PC-2 的,因为R1所连接的Pc-3的G0/0/1接口没有开启代理arp功能
PC-3 ping PC-2不通
在G0/0/1接口开启arp代理功能再ping
二、免费ARP报文分析
字段 | 长度(bit) | 含义 |
---|---|---|
Ethernet Address of destination | 48比特 | 目的以太网地址。发送ARP请求时,为广播的MAC地址,0xFF.FF.FF.FF.FF.FF。 |
Ethernet Address of sender | 48比特 | 源以太网地址。 |
Frame Type | 16比特 | 表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0x0806。 |
Hardware Type | 16比特 | 表示硬件地址的类型。对于以太网,该类型的值为“1”。 |
Protocol Type | 16比特 | 表示发送方要映射的协议地址类型。对于IP地址,该值为0x0800。 |
Hardware Length | 8比特 | 表示硬件地址的长度,单位是字节。对于ARP请求或应答来说,该值为6。 |
Protocol Length | 8比特 | 表示协议地址的长度,单位是字节。对于ARP请求或应答来说,该值为4。 |
OP | 16比特 | 操作类型: 1 ARP请求 2 ARP应答 3 RARP请求 4 RARP应答 |
Ethernet Address of sender | 48比特 | 发送方以太网地址。这个字段和ARP报文首部的源以太网地址字段是重复信息。 |
IP Address of sender | 32比特 | 发送方的IP地址。 |
Ethernet Address of destination | 48比特 | 接收方的以太网地址。发送ARP请求时,该处填充值为0x00.00.00.00.00.00。 |
ess of sender | 32比特 | 发送方的IP地址。 |
Ethernet Address of destination | 48比特 | 接收方的以太网地址。发送ARP请求时,该处填充值为0x00.00.00.00.00.00。 |
IP Address of destination | 32比特 | 接收方的IP地址。 |