连接公共场所的wifi,在浏览器中输入手机号/验证码,就是RADIUS认证
Portal 认证(网页弹窗) 连上后浏览器自动跳登录页,输手机号/验证码 ✅ 走 RADIUS
wifi是RADIUS客户端,它就是个中转器,真正的认证是在RADIUS服务端进行的。
RADIUS(Remote Authentication Dial In User Service,远程用户拨号认证服务)是目前应用最广泛的 AAA(认证、授权、计费)协议,被视为网络接入控制的"事实标准"。它最初为拨号上网设计,如今已扩展到无线 Wi-Fi(802.1X)、VPN、以太网接入、宽带运营等几乎所有网络接入场景。
一、核心功能:AAA 三大支柱
| 功能 | 英文 | RADIUS 报文 | 做了什么 |
|---|---|---|---|
| 认证 | Authentication | Access-Request → Access-Accept / Access-Reject / Access-Challenge |
确认"你是谁"(用户名+密码/证书/OTP) |
| 授权 | Authorization | 随 Access-Accept 携带属性返回 |
决定"你能干什么"(VLAN、IP、带宽、ACL、会话时长) |
| 计费 | Accounting | Accounting-Request (Start/Stop/Interim) → Accounting-Response |
记录"你干了什么、用了多少"(时长、上下行流量、会话 ID) |
关键点 :RADIUS 协议比 AAA 框架更早诞生,所以它把认证和授权合并在一次交互里完成 (
Access-Accept里既有"通过认证"也有"授权参数")。计费则独立走另一套报文。
二、工作原理:一次完整交互流程
以"你连上公司 Wi-Fi"为例:
手机 → Wi-Fi AP(NAS/RADIUS 客户端)→ RADIUS 服务器 → 用户数据库(LDAP/SQL)
Step 1|接入请求
- 你输入用户名/密码,AP(NAS)把你的凭据和自己的 IP/端口号打包成 Access-Request(UDP 1812)发给 RADIUS 服务器。
Step 2|服务器验证
- RADIUS 服务器先用共享密钥验证这条请求是否来自合法 NAS(防止伪造)。
- 再去用户数据库(LDAP / MySQL / Active Directory)核对账号密码。
- 验证方式灵活:PAP、CHAP、EAP-TLS、PEAP、MSCHAPv2 等都支持。
Step 3|返回结果
| 结果 | 报文 | 含义 |
|---|---|---|
| 通过 | Access-Accept | 同意接入 + 携带授权属性(VLAN=10、IP=10.1.1.5、限速 10M、超时 2h) |
| 失败 | Access-Reject | 拒绝(密码错/账号禁用/无权限) |
| 需二次验证 | Access-Challenge | "再给我一个 OTP / 证书"(多因素认证) |
Step 4|NAS 执行
- NAS 收到
Accept→ 放行,应用授权策略(划 VLAN、限速等)。 - 收到
Reject→ 拒绝,提示"认证失败"。
Step 5|计费流程(独立于认证)
| 时机 | 报文 | 作用 |
|---|---|---|
| 用户上线 | Accounting-Request (Start) |
记录会话开始时间、用户名、NAS IP |
| 会话中 | Accounting-Request (Interim-Update) |
定期上报已用流量/时长(防异常下线不计费) |
| 用户下线 | Accounting-Request (Stop) |
记录结束时间、总上下行字节数 |
Step 6|动态授权(CoA)与强制下线(DM)
- CoA(Change of Authorization) :用户已经在线,服务器主动推新策略(如"把带宽从 10M 降到 2M")。
- 流程:
CoA-Request(服务器→NAS)→ NAS 改策略 →CoA-ACK / CoA-NAK(NAS→服务器)
- 流程:
- DM(Disconnect Message):服务器主动踢用户下线。
三、报文结构(非常简洁)
0 1 2-3 4-19 ...
+--------+------+--------+------------------+
| Code | ID | Length | Authenticator(16)|
+--------+------+--------+------------------+
| Attributes (Type-Length-Value 反复) |
+------------------------------------------+
| 字段 | 长度 | 含义 |
|---|---|---|
| Code | 1 byte | 报文类型:1=Access-Request、2=Access-Accept、3=Access-Reject、4=Accounting-Request、5=Accounting-Response、11=Access-Challenge |
| Identifier | 1 byte | 匹配请求/响应(防重放) |
| Length | 2 byte | 整包长度(认证最大 4096,计费最大 4095) |
| Authenticator | 16 byte | 核心安全字段:请求时为随机数;响应时为 MD5(Code+ID+Length+ReqAuth+SharedSecret+Attributes) |
| Attributes | 可变 | TLV 结构:Type(1)+Length(1)+Value,承载用户名、密码、VLAN、IP、流量等 |
密码不会明文传输:
User-Password属性用 共享密钥 + MD5 加密后放入报文中。
四、安全机制
| 机制 | 说明 |
|---|---|
| 共享密钥(Shared Secret) | NAS 和 RADIUS 服务器各配一个相同密钥,不走网络,用于生成 Authenticator 和加密密码 |
| MD5 哈希签名 | Authenticator 字段 = MD5(报文内容 + 共享密钥),防篡改和伪装 |
| 密码加密 | 密码属性用 MD5(SharedSecret + RequestAuthenticator) 作为密钥流做 XOR 加密 |
| 重传 + 备用服务器 | NAS 没收到响应会重试,可配置多台 RADIUS 服务器轮询/主备 |
| 扩展性 | 厂商可定义私有属性(VSA, Vendor-Specific Attribute, Type=26),不破坏协议兼容 |
五、典型应用场景
| 场景 | 举例 |
|---|---|
| 企业 Wi-Fi | 802.1X + RADIUS,员工用 AD 账号连 Wi-Fi,自动分 VLAN |
| VPN 接入 | SSL VPN / IPsec VPN 远程拨号,RADIUS 验身份 |
| 宽带运营 | PPPoE / DHCP 接入,RADIUS 认证 + 计费(按时长/流量) |
| 交换机端口控制 | 802.1X 有线认证,未认证端口不通 |
| 跨运营商漫游 | RADIUS 代理(Proxy)根据用户名 @domain 转发到归属运营商 |
| IoT 设备接入 | 摄像头/传感器上线前先过 RADIUS 认证 |
六、RADIUS vs TACACS+ 一句话对比
| RADIUS | TACACS+ | |
|---|---|---|
| 传输 | UDP | TCP |
| 加密 | 仅密码加密 | 全程加密 |
| 授权粒度 | 较粗(VLAN/ACL) | 细粒度(命令级权限) |
| 兼容 | 开放标准,所有厂商支持 | Cisco 私有(虽开放但生态小) |
| 适合 | Wi-Fi、VPN、宽带接入 | 交换机/路由器管理命令审计 |
七、常用开源/商业实现
| 产品 | 类型 |
|---|---|
| FreeRADIUS | 开源,最流行,支持 LDAP/MySQL/EAP/CoA |
| Microsoft NPS | Windows Server 自带,企业 AD 集成首选 |
| Cisco ISE | 商业,企业级,支持 802.1X + 态势感知 |
| Aruba ClearPass | 商业,无线场景强 |
| Jasig/Apereo CAS | 可接 RADIUS 后端做 SSO |
一句话总结:RADIUS 就是网络世界的"门卫系统"------用户来了先查身份证(认证),查完发门禁卡决定能去哪些房间(授权),全程记考勤算费用(计费),还能中途改权限或直接把人轰走(CoA/DM)。协议简单、扩展强、所有设备都支持,所以三十多年了依然是网络接入认证的绝对霸主。