ARP协议:地址解析原理、ARP缓存、ARP欺骗与防护
核心原理:IP地址如何找到MAC地址
在TCP/IP网络中,IP地址用于跨网络寻址,而数据链路层实际传输帧时依赖的是MAC地址。当主机A要向同一广播域内的主机B发送IP数据包时,它必须知道B的MAC地址,否则无法构造以太网帧。ARP(Address Resolution Protocol,地址解析协议)正是解决这一“IP→MAC”映射问题的机制。
ARP工作在数据链路层与网络层之间,其报文不经过IP封装,而是直接封装在以太网帧中。ARP请求报文以广播方式发送(目标MAC为FF-FF-FF-FF-FF-FF),目标IP为待解析地址;拥有该IP的主机收到后,以单播方式回复ARP应答,携带自己的MAC地址。请求方收到应答后,将映射关系写入本机ARP缓存表,后续通信直接查表,不再广播。
上图展示了ARP的基本交互过程。值得注意的是,ARP请求中同时包含发送方的IP和MAC,因此广播域内所有主机都能学习到发送方的映射关系,无需单独请求。这种“免费ARP”(Gratuitous ARP)机制也常用于IP地址冲突检测或网关故障切换后的通告。
ARP缓存:老化与更新机制
为避免频繁广播,每台主机维护一张ARP缓存表,记录IP与MAC的对应关系。缓存条目分为动态和静态两类:动态条目由ARP交互自动生成,具有生存时间(TTL),典型值为Windows系统2分钟、Linux系统30秒至5分钟(取决于内核配置);静态条目由管理员手工添加,永久有效,用于关键设备(如网关、服务器)的防欺骗保护。
缓存老化是双刃剑:过短导致广播频繁,过长则可能使映射长期失效(如网卡更换、IP重分配)。当条目过期后,主机再次通信会重新发起ARP请求。查看和操作ARP缓存的常用命令如下:
# 查看ARP缓存(Windows / Linux)
arp -a
# 添加静态ARP条目(Windows需管理员权限)
arp -s 192.168.1.1 00-11-22-33-44-55
# Linux添加静态条目
sudo arp -s 192.168.1.1 00:11:22:33:44:55
# 删除指定条目
arp -d 192.168.1.1
ARP欺骗:原理与攻击场景
ARP协议设计时未考虑安全性,任何主机都可以发送ARP应答,且接收方通常不验证应答的真实性。攻击者利用这一缺陷,向目标主机发送伪造的ARP应答,声称“网关IP对应的MAC是攻击者的MAC”,或向网关发送“目标主机IP对应的MAC是攻击者的MAC”,从而实施中间人攻击(MITM)。
ARP欺骗的检测方法包括:使用arp -a检查网关MAC是否与真实网关MAC一致;部署ARP监控工具(如arpwatch)记录IP-MAC变化;在交换机上配置动态ARP检测(DAI),结合DHCP Snooping表过滤非法ARP报文。
防护策略:从终端到网络设备
| 防护层级 | 具体措施 | 适用场景 |
|---|---|---|
| 终端主机 | 设置静态ARP条目;安装主机防火墙并开启ARP防护 | 服务器、网关等关键设备 |
| 接入交换机 | 启用DAI(Dynamic ARP Inspection)和DHCP Snooping | 企业接入层、园区网络 |
| 网关设备 | 配置IP-MAC绑定表;开启防ARP欺骗功能 | 路由器、三层交换机 |
| 网络监控 | 部署ARPwatch或IDS规则,实时告警异常映射 | 中大型网络运维 |
案例复盘:一次内网断网故障
某公司办公网频繁出现“部分电脑间歇性无法上网”的故障。排查过程如下:
- 检查网关连通性:
ping 192.168.1.1丢包严重,但网关本身负载正常。 - 查看受害主机ARP缓存:发现网关IP对应的MAC地址为
00:0c:29:xx:xx:xx,与真实网关MAC(思科设备前缀00:1a:2b)不符。 - 在核心交换机上执行
show ip arp,发现同一IP对应多个MAC,确认存在ARP欺骗。 - 追踪攻击源:通过交换机端口镜像抓包,定位到一台感染木马的员工电脑,该木马持续发送伪造ARP应答。
- 处置:隔离中毒主机,全网清除ARP缓存,并在接入交换机上启用DAI,绑定合法IP-MAC映射。