局域网中的坑爹协议--ARP(地址解析协议)
在局域网中,当主机或其它三层网络设备有数据要发送给另一台主机或三层网络设备时,它需要知道对方的网络层地址(即IP地址)。但是仅有IP地址是不够的,因为IP报文必须封装成二层帧才能通过物理网络发送,因此发送方还需要知道接收方的物理地址(即MAC地址),这就需要一个从IP地址到MAC地址的映射。ARP协议就是实现将IP地址解析为MAC地址。主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的关系。
ARP协议是建立在网络中所有节点都是可信的情况下,在可信的环境中,它是高效的;但是在我们实际的网络环境中,由于ARP协议不会检查自己是否发过请求包,也不管是否是合法的应答,只要收到目标MAC是自己的ARP reply包或arp广播包(包括ARP request和ARP reply),都会接受并缓存。这就导致了局域网中各种ARP攻击层出不穷。说到底,如今ARP攻击如此泛滥,还是因为协议上的缺陷。
下面介绍下集中ARP的应用方式:
1. 动态ARP
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新;此方式不需要管理员手动维护ARP表项,适合于大型或者拓扑复杂的网络环境中。(实际我们一般都是使用的动态ARP)。
(1) 什么情况下才会新增arp表项
在实际的环境中,只有同时满足以下两个条件时,设备的ARP表才会更新:
- 设备收到来自某IP的ARP请求包或者其他ARP包;
- 设备的现有ARP表中已经存在该IP对应的ARP表。
(2) ARP老化时间:
华为交换机默认ARP的老化时间为20分钟,当达到配置的表项老化时间后,根据探测次数每隔5s发送一个探测报文,如果一直没有收到应答消息则表项被删除。
2. 静态ARP
静态ARP表项是由网络管理员手工建立的IP地址和MAC地址之间固定的映射关系。静态ARP表项不会被老化,不会被动态ARP表项覆盖。
静态ARP表项分为短静态ARP表项和长静态ARP表项。
- 短静态ARP表项:手工建立IP地址和MAC地址之间固定的映射关系,未同时指定VLAN和出接口。
- 长静态ARP表项:手工建立IP地址和MAC地址之间固定的映射关系,并同时指定该ARP表项所在VLAN和出接口。
对于以下场景,可以配置静态ARP表项:
- 对于网络中的重要设备,如服务器等,可以在交换机上配置静态ARP表项。
- 当希望禁止某个IP地址访问设备时,可以在交换机上配置静态ARP表项,将该IP地址与一个不存在的MAC地址进行绑定。
3. 免费ARP
设备主动使用自己的IP地址作为目的IP地址发送ARP请求,此种方式称免费ARP。
免费ARP有如下作用:
- IP地址冲突检测:当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文。正常情况下不会收到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址。如果检测到IP地址冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除。
- 用于通告一个新的MAC地址:发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP。
4. 代理ARP