第224篇:802.1X认证的EAP协议栈
关键词
802.1X、EAP协议栈、EAPOL、RADIUS、Supplicant、Authenticator、认证服务器、EAP-TLS、PEAP、EAP-MD5、EAP-GTC
一、802.1X 认证框架
1.1 认证架构
802.1X 是 IEEE 的端口接入控制标准,用于控制设备接入有线/无线网络:
802.1X 三元组架构:
| ┌──────────────┐ EAPOL ┌──────────────┐ RADIUS ┌──────────────┐ | ||||
|---|---|---|---|---|
| Supplicant (客户端) PC/手机 | ◄────────────► LAN | Authenticator (交换机/AP) NAS设备 | ◄──────────► UDP 1812/1813 | Auth Server (RADIUS) AD/LDAP |
| 角色 | 功能 | 示例设备 |
|---|---|---|
| Supplicant | 申请接入的客户端 | PC、手机、打印机 |
| Authenticator | 控制端口、转发认证请求 | 交换机、AP、防火墙 |
| Authentication Server | 验证身份、返回授权 | RADIUS 服务器 |
1.2 端口状态
802.1X 定义了端口的两种逻辑状态:
未认证前:
┌──────────────┐
│ Supplicant │
│ IP: 未分配 │
└──────┬───────┘
│ EAPOL 认证流量
│ (802.1Q VLAN / 802.1p)
┌──────┴───────┐
│ 交换机端口 │
│ 受控端口:关闭 ← 只允许 EAPOL 通过
│ 非受控端口:开放 ← EAPOL 可通行
└──────────────┘
认证通过后:
┌──────────────┐
│ Supplicant │
│ IP: DHCP │
└──────┬───────┘
│ 所有数据流量
┌──────┴───────┐
│ 交换机端口 │
│ 受控端口:开放 ← 允许所有流量
│ 非受控端口:开放
└──────────────┘
二、EAP 协议栈
2.1 EAP 协议层次
EAP(Extensible Authentication Protocol)是一个认证框架,支持多种认证方法:
EAP 协议栈架构:
| 上层:EAP 方法层 EAP-TLS PEAP EAP-TTLS EAP-MD5 | ||||
|---|---|---|---|---|
| 中间层:EAP 协议层 Request/Response 交互, 状态机管理 类型(Identity/MD5-Challenge/TLS 等) | ||||
| 下层:EAP 承载层 EAPOL (LAN) PPPoE RADIUS EAP-Message IEEE 802.1X 802.3 RFC 3579 |
2.2 EAPOL(EAP over LAN)
EAPOL 是 IEEE 802.1X 定义的 EAP 在局域网的承载协议:
EAPOL 帧格式:
| MAC 头 | 类型(1B) | 长度(2B) | Payload |
|---|---|---|---|
EAPOL 类型: 0x00: EAP-Packet # EAP 认证数据包 0x01: EAPOL-Start # Supplicant 发起认证 0x02: EAPOL-Logoff # Supplicant 请求下线 0x03: EAPOL-Key # 密钥交换(WPA/WPA2) 0x04: EAPOL-Encapsulated-ASF-Alert
2.3 EAP 包格式
| Code 1B | ID 1B | Length 2B | Data... |
|---|---|---|---|
Code(请求/响应类型): 1 = Request 2 = Response 3 = Success 4 = Failure
Type(在 Request/Response 包中使用): 1 = Identity # 身份请求 2 = Notification # 通知消息 3 = Nak (Response Only) # 不支持建议方法 4 = MD5-Challenge # MD5 挑战 13 = TLS # EAP-TLS 25 = PEAP # PEAP(Protected EAP) 26 = MSCHAPv2 # MSCHAPv2 29 = FAST # EAP-FAST
三、802.1X 认证交互过程
3.1 完整认证流程
以 PEAP-MSCHAPv2 为例:
Supplicant Authenticator RADIUS Server
│ │ │
│—— EAPOL-Start ──────►│ │
│ │—— RADIUS Access-Req ►│
│◄── EAP-Request/Id ───│◄──────────────────────│
│ │ (EAP-Message) │
│—— EAP-Response/Id ──►│—— RADIUS Access-Req ►│
│ (用户名) │ │
│ │◄── RADIUS Access-Ch —│
│◄── EAP-Req/PEAP ─────│ (EAP-Msg: PEAP Start)│
│ (Server Hello) │ │
│ │ │
│ TLS 隧道建立过程 │ │
│ (证书验证) │ │
│ │ │
│◄── EAP-Req/PEAP ─────│◄── RADIUS Access-Ch —│
│ (TLS Session Key) │ │
│ │ │
│ 通过 TLS 隧道 │ │
│ 传输 MSCHAPv2 挑战 │ │
│ │ │
│◄── EAP-Success ──────│◄── RADIUS Accept ────│
│ │ │
│ 端口状态:开放 │ │
│ DHCP → 正常通信 │ │
3.2 不同认证方式的报文对比
EAP-MD5(简单但安全隐患):
Request: MD5-Challenge (16字节随机数)
Response: MD5(Challenge + Password)
★ 密码在网络上明文哈希传输,无隧道保护
EAP-TLS(双向证书,安全高):
需客户端证书和服务器证书
建立 TLS 隧道进行认证
部署复杂(证书管理成本高)
PEAP(保护性 EAP,最常用):
只需要服务器证书
TLS 隧道保护内部认证(MSCHAPv2/GTC)
兼容性好,Windows 原生支持
EAP-TTLS(类似 PEAP):
只需要服务器证书
TLS 隧道保护内部认证
支持更多内部认证协议
四、RADIUS 与 EAP 的配合
4.1 RADIUS 协议中的 EAP 封装
RADIUS 通过 EAP-Message 属性封装 EAP 包:
RADIUS 包格式(封装 EAP):
Code: Access-Request (1)
ID: 0x01
Length: ...
Attributes:
User-Name = "zhangsan"
NAS-IP-Address = 192.168.1.1
NAS-Port = 0x00000001
EAP-Message = [EAP Response/Identity...]
Message-Authenticator = [HMAC-MD5...]
RADIUS 交互流程:
Supplicant ←EAP→ Authenticator ←RADIUS→ RADIUS Server
│ │
EAP 解封装 EAP 封装
RADIUS 封装 解封装
4.2 RADIUS 属性说明
关键 RADIUS 属性:
Attribute 1: User-Name
用户的身份标识
Attribute 79: EAP-Message
封装 EAP 包(单个 RADIUS 包可包含多个)
Attribute 80: Message-Authenticator
消息完整性校验(EAP 认证时必须)
Attribute 24: State
状态属性(用于多轮认证交互)
Attribute 26: Vendor-Specific
厂商扩展属性(华为、Cisco 等定制功能)
4.3 华为交换机 802.1X 配置
# 华为交换机 802.1X 配置示例
# 全局使能 802.1X
dot1x enable
# RADIUS 服务器配置
radius-server template huawei_radius
radius-server authentication 10.0.10.10 1812
radius-server accounting 10.0.10.10 1813
radius-server shared-key cipher Huawei@123
!
# AAA 认证方案
aaa
authentication-scheme dot1x_auth
authentication-mode radius
accounting-scheme dot1x_acct
accounting-mode radius
!
domain default
authentication-scheme dot1x_auth
accounting-scheme dot1x_acct
radius-server huawei_radius
!
# 接口使能 802.1X
interface GigabitEthernet0/0/1
port link-type access
port default vlan 100
dot1x enable # 使能 802.1X
dot1x authentication-method eap # EAP 中继方式
dot1x reauthenticate # 定期重认证
dot1x max-user 1 # 端口最多 1 个用户
dot1x guest-vlan 200 # 访客 VLAN(未认证时)
五、802.1X 的部署模式
5.1 EAP 中继 vs EAP 终结
EAP 中继模式(推荐):
Supplicant ←EAP→ Authenticator ←RADIUS→ RADIUS Server
│
┌──────┴──────┐
│ 透传 EAP 包 │
│ 不解密/处理 │
│ 仅重新封装 │
└─────────────┘
优点:支持所有 EAP 方法
缺点:设备负担略高
EAP 终结模式(旧设备):
Supplicant ←EAP→ Authenticator ──RADIUS(PAP/CHAP)→ RADIUS Server
│
┌──────┴──────┐
│ 终结 EAP 隧道│
│ 提取用户名密码│
│ 用 PAP/CHAP │
└─────────────┘
优点:设备兼容性
缺点:只支持简单认证方法
5.2 有线 vs 无线 802.1X
有线 802.1X:
端口粒度控制
物理连接决定认证触发
MAC 地址绑定可选
无线 802.1X:
SSID + BSSID 粒度控制
EAPOL over 802.11
WPA/WPA2 密钥派生(4次握手)
漫游时快速重认证(PMK Caching)
六、常见问题与排查
6.1 故障排查命令
# 华为交换机排查命令
# 查看 802.1X 全局状态
display dot1x
Global 802.1X status: Enabled
EAP authentication method: EAP relay
# 查看接口 802.1X 状态
display dot1x interface GigabitEthernet0/0/1
Port status: Authorized # 已认证
Auth user count: 1
Auth user MAC: 00e0-fc12-3456
Update time: 2024-03-15 10:30:00
# 查看认证失败记录
display aaa abnormal-offline-record
Username: zhangsan
MAC: 00e0-fc12-3456
Reason: Authentication timeout # 认证超时
Time: 2024-03-15 09:15:23
6.2 常见问题
问题 1:认证超时
原因:RADIUS 服务器不可达
排查:ping RADIUS 服务器
display radius-server template
问题 2:认证失败(Access-Reject)
原因:用户名/密码错误
证书过期
不在允许的用户组
排查:display aaa authentication-failed-record
问题 3:EAP 协商失败
原因:Supplicant 和 Server 无共同的 EAP 方法
排查:检查 Supplicant 配置的 EAP 方法
检查 RADIUS 服务器支持的 EAP 方法
问题 4:DHCP 在认证成功后获取不到 IP
原因:VLAN 切换问题(guest Vlan 到业务 Vlan)
排查:check dot1x guest-vlan / authorized-vlan 配置
七、总结
| 知识点 | 核心要点 |
|---|---|
| 802.1X 三元组 | Supplicant / Authenticator / Auth Server |
| 端口状态 | 受控端口(控制数据)、非受控端口(EAPOL) |
| EAP 协议栈 | 方法层→协议层→承载层(EAPOL) |
| EAP 方法 | EAP-TLS(双向证书)、PEAP(单证书+隧道)、EAP-MD5 |
| RADIUS 封装 | EAP-Message 属性承载 EAP 包 |
| 中继 vs 终结 | 中继透传 EAP,终结在交换机处理 |
| 常见问题 | 超时、拒绝、方法不匹配、VLAN 切换 |
八、思考
- 802.1X 架构中的三个角色分别是什么?各自负责什么功能?
- EAPOL 协议中 EAP-Packet、EAPOL-Start、EAPOL-Logoff 分别在什么场景使用?
- EAP-TLS 和 PEAP 在证书需求上有什么不同?哪种部署成本更低?
- 什么是 EAP 中继模式?为什么推荐使用 EAP 中继而不是 EAP 终结?
- 当用户认证成功后无法获取 IP 地址,可能的原因是什么?
下篇预告:第225篇《访客认证与Portal认证流程》——详解 Portal 认证原理、重定向机制和常见的访客认证方案。