ARP协议的作用
-
Address Resolution Protocol
-
地址解析协议ARP,是用来将IP地址解析为MAC地址的协议
ARP表
-
主机或三层网络设备上会维护一张ARP表,存放IP地址和MAC地址的对应关系,表项通常还包含类型、VLAN、出接口
-
当设备需要向目标设备发送单播帧时,会先查看ARP缓存表
-
有目的设备MAC地址->直接封装发送
-
无目的设备MAC地址->发起ARP请求获取
-
-
查看ARP表 display arp all

-
IP地址,MAC地址
-
类型
-
S:静态ARP表项,IP和MAC固定关系,不会被老化和动态ARP覆盖
-
I:接口本身的ARP表项,接口自己的IP和MAC地址
-
D:动态ARP表项,根据ARP协议自动生成的,可以被老化,更新,覆盖
-
-
VLAN列表
-
有VLAN信息,该表项关联二层转发,出接口是处在某个 VLAN 中的二层以太网
-
无VLAN信息,出接口是三层接口(如三层以太口),直接三层转发
-
-
ARP报文相关字段

-
以太网帧
-
目的MAC地址:(请求广播;应答单播)
-
源MAC地址
-
类型0x00
-
PAD
-
CRC
-
-
ARP报文
-
硬件类型,协议类型,硬件地址长度,协议地址长度
-
操作码OP(1为请求,2为应答)
-
发送端MAC,发送端IP
-
目的MAC(请求全0),目的IP
-
ARP解析的过程(同网段/跨网段)

-
同网段 PC1<-->PC3
-
PC1判断PC3同网段,查PC3的IP,ARP表无映射 → 发 ARP 请求(广播帧)
-
帧:目的 MAC=全F(广播),源 MAC=MAC1,类型 0x0806
-
ARP:发送端 MAC/IP=MAC1/IP1,目的 MAC=全0,目的 IP=IP3
-
-
广播域内非目标设备收到
-
不应答,但"会学习"(ARP表记下 IP1↔MAC1)
-
-
PC3收到后
-
ARP表记录 IP1↔MAC1
-
回应ARP响应(单播帧)
-
帧:目的 MAC=MAC1,源 MAC=MAC3,类型 0x0806
-
ARP:发送端 MAC/IP=MAC3/IP3,目的 MAC/IP=MAC1/IP1
-
-
-
PC1收到回应学到IP3-MAC3,开始通信
-
-
不同网段PC1<-->PC4
-
PC1判断PC4不同网段,查网关IP,ARP表无映射→ 发 ARP 请求
-
帧:目的 MAC=全F(广播),源 MAC=MAC1,类型 0x0806
-
ARP:发送端 MAC/IP=MAC1/IP1,目的 MAC=全0,目的 IP=IPG
-
-
网关收到后
-
ARP表记录IP1↔MAC1
-
回应ARP响应(单播帧)自己的MAC
-
-
PC1收到回应学到IPG-MACG,把数据包(目的IP:IP4)发给网关
-
网关收到数据帧->解析数据包->查路由表
-
出接口是以太网则再 ARP 解析下一跳 / PC4的 MAC → 重新封装转发
-
-
-
关键:三层寻址端到端(IP 全程不变),二层投递逐跳(MAC 每跳更换)
动态ARP
-
定义:由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖
-
场景 是否学习 收到的 ARP 报文源 IP 与入接口 IP 同网段 学习 / 更新该表项 收到免费 ARP,且源 IP = 本接口 IP 不学习,判定为 IP 冲突:周期性广播免费 ARP 应答通告冲突,直到冲突解除 收到免费 ARP,源 IP ≠ 本接口 IP 但同网段,且报文在 VLANIF / VBDIF 接口收到 学习 / 更新 其余情况 不学习 -
动态ARP表的老化
-
表项老化时间到(缺省 1200 s = 20 min)
-
发 ARP 老化探测(ARP 请求;缺省单播探测,最后一次广播)
-
有应答->刷新表项
-
探测次数内无应答(缺省 3 次)->删除表项
-
-
-
接口执行shutdown操作会触发接口下的ARP表项老化删除
-
静态ARP
-
定义:是由网络管理员手工建立的IP地址和MAC地址之间固定的映射关系。静态ARP表项不会被老化,不会被动态ARP表项覆盖,可以保证网络通信的安全性。
-
静态ARP表项分类
-
短静态ARP表项:手工建立IP地址和MAC地址之间固定的映射关系
-
出接口是处于二层模式的以太网接口则不能直接用于报文转发
-
需要发送报文时,需触发 ARP 请求;应答中的源 IP / 源 MAC 与配置一致时,才把出接口补进表项
-
-
长静态ARP表项:手工建立IP地址和MAC地址之间固定的映射关系,并同时指定该ARP表项所在VLAN和出接口
-
可以直接用于报文转发
-
-
-
静态ARP用途:
-
防 ARP 攻击:为服务器、网关等重要设备固定映射,攻击报文无法篡改
-
禁止访问:禁止访问把某 IP 绑定到不存在的 MAC,实现"拉黑"
-
组播MAC场景:设备默认不学习源 MAC 为组播 MAC 的 ARP,需手工配
-
免费ARP报文的原理和应用
-
原理:设备主动使用自己的IP地址作为目的IP地址发送ARP请求
-
应用:
-
IP地址冲突检测
-
当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文,如果检测到IP地址冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除
-
-
用于通告一个新的MAC地址
-
发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP
-
-
在VRRP备份组中用来通告主备发生变换
-
发生主备变换后,MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换
-
-
RARP的作用
-
RARP(反向地址解析协议)已知 MAC 查 IP,用于早期无盘工作站启动时向服务器请求自己的 IP。
代理Proxy ARP的作用
-
如果ARP请求是从一个网络的主机发往同一网段但不在同一物理网络上的另一台主机,那么连接这两个网络的设备就可以回答该ARP请求,这个过程称作ARP代理
-
特点:
-
部署在网关上,网络中的主机不必做任何改动
-
可以隐藏物理网络细节,使两个物理网络可以使用同一个网络号
-
只影响主机的ARP表,对网关的ARP表和路由表没有影响
-
-
分类
-
普通代理ARP(路由式Proxy ARP):主机同网段但不在同一物理网络/广播域(主机无缺省网关)
-
本地代理ARP(VLAN内Proxy ARP):同网段、同一 VLAN,但 VLAN 内配置了用户隔离
-
本地代理ARP(VLAN间Proxy ARP):同网段但属于不同 VLAN
-
普通代理ARP的原理和使用场景
-
场景:想要互通的同网段主机分别连接到设备的不同三层接口上,这些主机不在同一个广播域中

-
过程:
-
① A 广播 ARP 请求解析 B —— B 收不到(不在同一广播域)
-
② 路由器收到请求 → 查路由表:有到 B 的路由?
-
没有 → 丢弃
-
有 → 接口开了代理 ARP 吗?
-
未开 → 丢弃
-
已开 → 用自己接口的 MAC 代替 B 应答
-
-
-
③ A 学到"B 的 MAC = 路由器接口 MAC" → 把发往 B 的报文都发给路由器
-
④ 路由器按正常 IP 路由转发给 B;B 回程同理
-
本地代理ARP的原理和使用场景
-
端口隔离场景:
-
想要互通的同网段主机共用一个三层接口,属于相同的VLAN,但VLAN内配置了端口隔离

-
在关联了VLAN的接口上启动VLAN内Proxy ARP功能
-
local-proxy-arp enable
-
-
过程
-
A广播 ARP 请求解析 B —— 二层被隔离,B收不到
-
交换机(VLANIF 接口)收到 → 查自己 ARP 表有没有 B 的条目?
-
没有 → 再查本地代理 ARP 是否开启?
-
未开 → 丢弃
-
已开 → 代发广播 ARP 请求(以 B 的 IP 为目的)→ 收到 B 应答后生成条目
-
-
有 → 再查本地代理 ARP 是否开启?
-
未开 → 丢弃
-
已开 → 用本接口(VLANIF)的 MAC 代替 B 应答
-
-
-
A 学到"B 的 MAC = 交换机 VLANIF 的 MAC" → 把报文发给交换机
-
交换机查路由表(VLANIF 直连路由)三层转发给 B;回程同理
-
-
-
Super-VLAN中的Sub-vlan场景:

-
想要互通的同网段主机共用一个三层接口,但是属于不同VLAN
-
过程同端口隔离
-
普通代理ARP和本地代理ARP的区别
| 对比项 | 普通 / 路由式代理 ARP | 本地代理 ARP(VLAN 内) | 本地代理 ARP(VLAN 间) |
|---|---|---|---|
| 主机 | 同网段,不同三层接口 | 同网段,同一 VLANIF,端口隔离 | 同网段,同一 Super-VLAN,不同 Sub-VLAN |
| 二层为何不通 | 分属不同广播域 | 端口隔离 | 不同 Sub-VLAN |
| 收到请求时的判断 | 查路由表:有到目标的路由 | 查ARP 表:有目标映射 | 查ARP 表 |
| 数据转发路径 | 三层转发,不同接口进出 | 三层转发,同一接口进出 | 三层转发,同一接口进出 |
ARP攻击的类型

-
ARP 欺骗(仿冒应答,中间人劫持)
-
原理:请求是广播的,广播域内所有主机都能收到 → 任何主机都可以伪造应答
-
网关欺骗:伪造"网关 IP ↔ 攻击者 MAC",劫持全网流量;
-
过程
-
主机 A 广播 ARP 请求,想解析 B(网关)的 MAC
-
攻击者 C 收到广播 → 伪造应答:"B 的 IP ↔ C 的 MAC"
-
A 无鉴别能力 → 把 B 的 IP 对应到 C 的 MAC → 发往 B 的所有数据都实际发给 C
-
-
-
ARP泛洪(拒绝服务攻击)(表项耗尽 / CPU 过载)
-
狂发大量伪造 ARP 报文(伪造源 IP),设备被迫持续学习/更新表项
-
ARP 表项被占满 → 正常用户的映射学不进去 → 正常通信中断
-
CPU 持续处理 ARP → 转发性能下降甚至瘫痪
-
-
ARP的攻击的防御手段
ARP欺骗防御:
| 手段 | 原理 | 关键点 |
|---|---|---|
| 静态 ARP 绑定 | 重要设备(网关、服务器)手工固定 IP↔MAC | 最直接,但维护量大,不适合终端 |
| ARP 表项固化 | 已学到的表项锁死:不许更新,或只允许更新部分字段 | 防止伪造报文改写正常表项 |
| ARP 报文合法性检查 | 比对以太帧头中的源 / 目的 MAC与ARP 载荷中的源 / 目的 MAC是否一致,不一致直接丢弃 | 挡住"帧头一个 MAC、载荷另一个 MAC"的畸形报文 |
| 动态 ARP 检测(DAI) | 收到 ARP 后,用源 IP + 源 MAC + 入接口 + VLAN比对 DHCP Snooping 绑定表,匹配才放行 | 前提:网络用 DHCP 且开了 DHCP Snooping;静态 IP 用户需手工加绑定 |
| ARP 表项严格学习 | 设备只学习自己发出的 ARP 请求的应答,不学习其他设备发出的请求报文 | 收敛攻击面(牺牲一点学习效率) |
| IP Source Guard(IPSG) | 基于"IP + MAC + 端口 / VLAN"绑定表,检查所有 IP 报文的源 IP + 源 MAC | 比 DAI 管得更宽(不只管 ARP),常与 DAI 配合 |
ARP防洪DoS防护
| 手段 | 原理 |
|---|---|
| ARP 表项限制 | 基于接口限制可学习的 ARP 表项总数,超限不再学习 |
| ARP 报文限速 | 统计单位时间内收到的 ARP 报文,超阈值部分直接忽略(不做处理) |
| ARP Miss 限速 | 对"ARP Miss 消息"(触发 ARP 请求的上送)限速,保护 CPU |
1万+



被折叠的 条评论
为什么被折叠?



