4、ARP协议:地址解析协议的工作原理、ARP缓存与ARP欺骗

4.1 核心原理:从IP地址到MAC地址的映射

在TCP/IP网络中,IP地址用于跨网络定位主机,而真正在以太网链路上传输数据帧时,网卡依赖的是MAC地址(48位物理地址)。当主机A要向同一广播域内的主机B发送IP数据包时,它必须知道B的MAC地址,否则无法构造二层帧头。ARP(Address Resolution Protocol,地址解析协议)正是完成这一“IP→MAC”动态映射的桥梁。

ARP协议的核心工作过程可以概括为:广播请求、单播应答。主机A首先在本地以太网中广播一个ARP请求报文,询问“谁的IP是192.168.1.2?请告诉我你的MAC地址”。该广播帧会被同一广播域内所有主机接收,但只有IP地址匹配的主机B会回应一个ARP应答报文,将自己的MAC地址告知A。A收到应答后,将映射关系存入本地ARP缓存表,随后即可正常封装并发送数据帧。

关键点:ARP仅工作在同一个广播域(二层网络)内。如果目标IP不在本地子网,主机不会直接解析目标IP的MAC,而是将数据包发送给默认网关,由网关负责后续转发。因此,ARP请求的目标IP通常是网关IP或同网段主机的IP。

广播域(同一二层网络) 主机A IP: 192.168.1.10 MAC: AA:AA:AA:AA:AA:01 缓存:无B的映射 主机B IP: 192.168.1.20 MAC: BB:BB:BB:BB:BB:02 收到请求,准备应答 主机C IP不匹配,丢弃 主机D IP不匹配,丢弃 ① ARP请求(广播) “谁的IP是192.168.1.20?” ② ARP应答(单播) “我是192.168.1.20,MAC=BB:BB:BB:BB:BB:02” ③ 主机A更新ARP缓存 192.168.1.20 → BB:BB:BB:BB:BB:02

4.2 ARP缓存:老化机制与静态配置

为了减少频繁的ARP广播,每台主机和路由器都会维护一张ARP缓存表,记录最近解析过的IP与MAC映射。缓存表并非永久有效,每条记录都有生存时间(TTL)。Windows系统中,动态ARP缓存条目通常存活2分钟,如果在2分钟内被再次使用,则延长至10分钟;Linux系统默认老化时间约为60秒。超过老化时间后,条目被删除,下次通信需重新发起ARP解析。

查看和操作ARP缓存的常用命令如下:

# Windows
arp -a                    # 查看ARP缓存表
arp -d *                  # 清空所有ARP缓存条目
arp -s 192.168.1.20 BB-BB-BB-BB-BB-02   # 添加静态ARP条目

# Linux / macOS
ip neigh show             # 查看邻居(ARP)缓存
ip neigh del 192.168.1.20 dev eth0     # 删除指定条目
ip neigh add 192.168.1.20 lladdr BB:BB:BB:BB:BB:02 dev eth0 nud permanent  # 添加永久静态条目
属性 动态ARP缓存 静态ARP缓存
来源 ARP应答自动学习 管理员手动配置
老化时间 有(约2~10分钟) 无(永久有效)
更新方式 收到新应答自动覆盖 需手动修改
安全性 易被ARP欺骗篡改 可抵御ARP欺骗

实践建议:对于网络中的关键设备(如网关、核心服务器),建议配置静态ARP条目,防止因ARP欺骗导致中间人攻击。但需注意,静态条目在IP变更或网卡更换后必须手动更新,否则会造成通信中断。

4.3 ARP欺骗:原理与攻击场景

ARP协议设计时缺乏身份验证机制,任何主机都可以发送ARP应答报文,且收到应答的主机通常会无条件更新缓存。ARP欺骗正是利用这一缺陷:攻击者向目标主机发送伪造的ARP应答,声称“网关的IP对应的MAC是我”,或向网关发送“目标主机的IP对应的MAC是我”,从而在通信双方之间插入自己,实现中间人攻击。

以攻击者M欺骗主机A(192.168.1.10)和网关G(192.168.1.1)为例,攻击流程如下:

  1. 扫描阶段:攻击者M通过ARP扫描获取A和G的IP与MAC地址。
  2. 欺骗A:M向A发送ARP应答,声称“192.168.1.1的MAC是MM:MM:MM:MM:MM:03”。A更新缓存,此后发往网关的流量全部发往M。
  3. 欺骗G:M向G发送ARP应答,声称“192.168.1.10的MAC是MM:MM:MM:MM:MM:03”。G更新缓存,发往A的流量也发往M。
  4. 转发与窃听:M开启IP转发,将收到的A→G和G→A的数据包原样转发,同时可对流量进行嗅探、篡改或注入。

危害警示:ARP欺骗不仅导致数据被窃听,还可能引发网络瘫痪。如果攻击者不开启转发,A和G之间的通信将完全中断,形成“断网”效果。此外,攻击者还可以通过伪造网关的ARP应答,将整个子网的流量导向自己,造成大范围中间人攻击。

4.4 检测与防护:实战复盘

检测ARP欺骗最直接的方法是对比IP与MAC的对应关系。在正常网络中,网关的MAC地址是固定且唯一的;如果发现同一IP对应多个MAC,或网关MAC与真实网卡MAC不符,即可判定存在ARP欺骗。

以下是一次典型的ARP欺骗排查过程:

# 1. 查看ARP缓存,发现网关MAC异常
C:\> arp -a
接口: 192.168.1.10 --- 0x5
  互联网地址          物理地址              类型
  192.168.1.1         MM-MM-MM-MM-MM-03     动态   ← 网关MAC异常

# 2. 对比交换机MAC地址表,确认MM:MM:MM:MM:MM:03对应端口
#    发现该端口连接的是非网关设备

# 3. 使用抓包工具(Wireshark)过滤 arp 报文
#    观察到大量来自MM:MM:MM:MM:MM:03的ARP应答,且声称拥有网关IP

# 4. 在网关设备上查看真实MAC
#    网关真实MAC为 GG:GG:GG:GG:GG:01,确认被欺骗

# 5. 处置:断开攻击者端口,配置静态ARP条目,启用交换机DAI(动态ARP检测)

防护ARP欺骗的常用手段包括:

  • 静态ARP绑定:在关键主机上手动指定网关MAC,防止缓存被篡改。
  • 交换机DAI(Dynamic ARP Inspection):结合DHCP Snooping,交换机校验ARP报文的IP-MAC绑定关系,丢弃非法ARP报文。
  • ARP防火墙:在终端安装安全软件,拦截异常的ARP应答。
  • 网络分段:缩小广播域,减少ARP欺骗的影响范围。

4.5 常见误区与复盘

误区一:认为ARP只用于IPv4。实际上,IPv6使用ICMPv6的邻居发现协议(NDP)替代ARP,但NDP同样存在类似的安全风险,需配置RA Guard等防护机制。

误区二:ARP请求只能由目标主机应答。如果目标主机不存在,但网络中有人配置了代理ARP(Proxy ARP),路由器或专用设备会代为应答,这可能导致路径非最优或安全策略失效。

误区三:清空ARP缓存能彻底解决欺骗问题。清空缓存只是临时手段,如果攻击者仍在持续发送伪造应答,缓存会很快再次被污染。必须从源头阻断攻击者或启用交换机防护功能。

误区四:静态ARP绑定后万事大吉。静态绑定只能保护本机不被欺骗,但无法阻止攻击者欺骗其他主机。若需全网防护,必须在网络基础设施层面(交换机、路由器)统一部署安全策略。

复盘要点:ARP是TCP/IP协议栈中“最朴素也最脆弱”的协议之一。理解其广播请求、单播应答、缓存老化的工作机制,是排查网络连通性问题和安全事件的基础。在实际运维中,遇到“能ping通IP但无法上网”“内网频繁掉线”等故障时,应优先检查ARP缓存和网关MAC是否正常。