目录
实验的网络拓扑图
如图,在eNSP仿真软件中,建立如下网络拓扑图:
设备 | 接口 | IP地址 | 子网掩码 | 默认网关 |
---|---|---|---|---|
R1(AR2220) | GE 0/0/1 | 10.1.1.254 | 255.255.255.0 | N/A |
R1(AR2220) | GE 0/0/2 | 10.1.2.254 | 255.255.255.0 | N/A |
PC-1 | Ethernet 0/0/1 | 10.1.1.1 | 255.255.0.0 | N/A |
PC-2 | Ethernet 0/0/1 | 10.1.1.2 | 255.255.0.0 | N/A |
PC-3 | Ethernet 0/0/1 | 10.1.2.3 | 255.255.0.0 | N/A |
实验操作
配置好相关接口IP地址之后,查看路由器中的arp缓存表
此时没有PC对应的信息。此时,我们在PC1上,ping主机PC2,执行如下指令:
PC1> ping 10.1.1.2
再次查看arp缓存表信息,如下图:
发现多出了一条,PC1的IP对应的MAC。
此时,我们模拟ARP攻击,手动将此表中PC1的IP对应的MAC地址修改成错误的。
arp static 10.1.1.1 5489-98Cf-2803
查看表,发现修改成功,如下图,错误的ARP映射出现在表中:
这里,我们直接在路由器上,ping主机PC1,看是否成功:
这里ping不通,因为错误的ARP映射,导致路由器无法正器的发送数据包给PC1。这就是ARP欺骗攻击。
为防止ARP欺骗攻击感染路由表,可以通过配置静态路由来阻止,直白点就是直接手工配置正确的映射,将错误的映射删除,不过这种做法工作量有点大。
ARP代理
路由器R1将网络分割为两个独立的广播域。
默认情况下,路由器上的ARP代理功能是关闭的。如果在PC2上去ping主机PC3,是ping不通的,如下图:
在PC2的E 0/0/1 上抓包来看:
可以观察到,PC2发出了ARP广播,却一直没有收到ARP回复,原因是PC2和PC3分处在两个广播域内,PC2发的ARP请求无法跨越中间的路由器,所以,PC3收不到PC2的ARP请求,PC2也无法知晓目标主机PC3的MAC地址而导致数据封装失败。
但是,如果R1开启了ARP代理之后,情况就不一样了。
在R1的端口 GE 0/0/1上开启ARP动态代理:
arp-proxy enable
同样在PC2上去ping 主机PC3,在PC2的E 0/0/1接口抓包观察,如下图:
ping 通了!抓包的信息如下:
可以看到,ARP回复里面,给出了10.1.2.3的MAC地址,不过,这个MAC地址并不是真正的10.1.2.3的MAC地址,而是路由器R1 的GE 0/0/1接口的MAC地址。
开启ARP代理后,PC2访问PC3的工作过程如下:
R1的接口 GE 0/0/1开启了ARP代理后,收到PC2的ARP广播请求报文后,R1根据ARP请求中的目标IP地址10.1.2.3查看自身的路由表是否有对应的目标网络,R1的GE 0/0/2的接口就是10.1.2.0/24网络,所以,R1直接把自身的GE 0/0/1接口的MAC地址通过ARP响应返回给PC2,PC2接收到此ARP响应后,使用该MAC地址作为目标硬件地址发送报文给R1,R1收到后再把报文转发给PC3。