第133篇:RADIUS 与 HWTACACS 协议原理
关键词:RADIUS、HWTACACS、AAA 协议、认证服务器、Attribute-Value、NAS-IP-Address、华为 AAA、协议对比
一、引言
在第132篇中,我们学习了 802.1X 和 MAC 认证的流程,发现它们都依赖一个关键组件:认证服务器(Authentication Server)。无论是 RADIUS 还是 HWTACACS,认证服务器是 AAA 体系的核心——它存储用户凭证、执行政策判断、返回授权结果。
本文将深入探讨 RADIUS 和 HWTACACS 两种最常用的 AAA 协议的原理、报文格式、特性和应用场景,帮助你在实际网络中选择合适的协议并正确配置。
二、核心概念
2.1 RADIUS 协议概述
RADIUS(Remote Authentication Dial-In User Service)最初由 IETF 在 RFC 2865 中定义,是最广泛使用的 AAA 协议。

| 特性 | 说明 |
|---|---|
| 协议类型 | 专有协议(RFC 2865/2866/3576/5176),IETF 标准化 |
| 传输协议 | UDP(不可靠传输,协议层实现重传) |
| 认证端口 | 1812(原 1645) |
| 计费端口 | 1813(原 1646) |
| 加密方式 | 仅对密码字段加密(MD5 哈希),其余明文 |
| 报文格式 | Code + Identifier + Length + Authenticator + AVPs |
2.2 HWTACACS 协议概述
HWTACACS(Huawei Terminal Access Controller Access-Control System)是华为基于 Cisco TACACS+ 协议开发并扩展的版本,专用于网络设备管理认证。
| 特性 | 说明 |
|---|---|
| 协议类型 | 华为自有协议(兼容 TACACS+ 框架) |
| 传输协议 | TCP 49(可靠传输) |
| 加密方式 | 整个数据包加密(密钥加密),安全性更高 |
| 报文格式 | Start + Session-Id + Packet-Type + Body |
| 特点 | 认证、授权、计费完全分离 |
2.3 RADIUS 与 HWTACACS 核心对比
| 对比项 | RADIUS | HWTACACS |
|---|---|---|
| 传输协议 | UDP(不可靠) | TCP 49(可靠) |
| 加密范围 | 仅密码字段 | 整个数据包 |
| AAA 分离 | 认证与授权耦合 | 认证、授权、计费完全分离 |
| 主要用途 | 用户接入认证(802.1X/Wi-Fi/Dialup) | 设备管理认证(CLI/API/NetConf) |
| 属性扩展 | AVP(Attribute-Value-Pair),标准化 | 私有属性,扩展灵活 |
| 多因素认证 | 支持(EAP 扩展) | 支持 |
| 设备兼容性 | 跨厂商通用 | 华为设备优先 |
三、技术细节
3.1 RADIUS 报文格式

| 字段 | 长度 | 说明 |
|---|---|---|
| Code | 1 byte | 报文类型:Access-Request(1)、Access-Accept(2)、Access-Reject(3) 等 |
| Identifier | 1 byte | 请求标识符,用于匹配请求与响应 |
| Length | 2 bytes | 整个报文长度(含头部) |
| Authenticator | 16 bytes | 认证向量,用于防重放和完整性校验 |
| Attributes | Variable | 属性列表(AVP),如用户名、密码、NAS-IP 等 |
3.2 常用 RADIUS 属性(AVP)
| 属性编号 | 属性名 | 说明 | 示例 |
|---|---|---|---|
| 1 | User-Name | 用户名 | zhangsan |
| 2 | User-Password | 密码(加密) | {加密密码} |
| 4 | NAS-IP-Address | NAS(交换机)IP 地址 | 192.168.1.1 |
| 6 | Framed-IP-Address | 分配给用户的 IP | 10.10.10.100 |
| 26 | Framed-Pool | DHCP 地址池名称 | HR-POOL |
| 28 | Calling-Station-Id | 终端 MAC 地址 | 00:11:22:33:44:55 |
| 64 | Session-Timeout | 会话超时(秒) | 28800(8小时) |
| 65 | Idle-Timeout | 空闲超时(秒) | 1800(30分钟) |
| 81 | Tunnel-Type | 隧道类型 | VLAN(13) |
| 82 | Tunnel-Medium-Type | 隧道介质 | IEEE 802(6) |
| 83 | Tunnel-Private-Group-ID | VLAN ID | 100 |
| 11 | Filter-Id | ACL 策略名称 | HR-ACL |
| 22 | Framed-Protocol | 帧协议 | PPP(1) |
3.3 RADIUS 报文交互流程

3.4 RADIUS 重传机制
由于 RADIUS 基于 UDP,协议层实现了自己的可靠性保障:
| 参数 | 默认值 | 说明 |
|---|---|---|
| 重传次数(Retransmit) | 3 次 | 无响应时的重传次数 |
| 超时时间(Timeout) | 5 秒 | 每次等待响应的超时 |
| 总超时 | Timeout × (2^0 + 2^1 + ... + 2^n) | 指数退避,约 15 秒 |
3.5 HWTACACS 报文交互
HWTACACS 将认证、授权、计费完全分离:
| 阶段 | 请求报文 | 成功响应 | 失败响应 |
|---|---|---|---|
| 认证 | AUTHEN-START(用户名+密码) | AUTHEN-ACCEPT | AUTHEN-REJECT |
| 授权 | AUTHOR-START(命令/上下文) | AUTHOR-ACCEPT(授权结果) | AUTHOR-REJECT |
| 计费 | ACCT-START(会话开始) | ACCT-RESPONSE | - |
| 计费更新 | ACCT-UPDATE | ACCT-RESPONSE | - |
| 计费结束 | ACCT-STOP(会话结束) | ACCT-RESPONSE | - |
四、实战配置/案例分析
4.1 RADIUS 服务器端配置(华为 Agile Controller / USG)
# ========== 场景:配置华为设备作为 RADIUS 客户端对接外部 RADIUS 服务器 ==========
# ---- Step 1: 配置 RADIUS 服务器模板 ----
[HUAWEI] radius-server template RADIUS-MAIN
[HUAWEI-radius-RADIUS-MAIN] radius-server shared-key cipher Huawei@RADIUS2024
[HUAWEI-radius-RADIUS-MAIN] radius-server primary 10.100.1.10 1812
[HUAWEI-radius-RADIUS-MAIN] radius-server secondary 10.100.1.11 1812
[HUAWEI-radius-RADIUS-MAIN] radius-server retransmit 3
[HUAWEI-radius-RADIUS-MAIN] radius-server timeout 5
[HUAWEI-radius-RADIUS-MAIN] radius-server user-format username # 用户名格式:不加@域名
[HUAWEI-radius-RADIUS-MAIN] radius-server accounting-type session
[HUAWEI-radius-RADIUS-MAIN] radius-server nas-ip 10.100.2.1 # 本机 NAS-IP
[HUAWEI-radius-RADIUS-MAIN] quit
# 备用服务器模板
[HUAWEI] radius-server template RADIUS-BACKUP
[HUAWEI-radius-RADIUS-BACKUP] radius-server shared-key cipher Huawei@RADIUS2024
[HUAWEI-radius-RADIUS-BACKUP] radius-server primary 10.100.3.10 1812
[HUAWEI-radius-RADIUS-BACKUP] radius-server retransmit 3
[HUAWEI-radius-RADIUS-BACKUP] radius-server timeout 5
[HUAWEI-radius-RADIUS-BACKUP] radius-server nas-ip 10.100.2.1
[HUAWEI-radius-RADIUS-BACKUP] quit
# ---- Step 2: 配置认证方案 ----
[HUAWEI] aaa
[HUAWEI-aaa] authentication-scheme dot1x-auth
[HUAWEI-aaa-authen-dot1x-auth] authentication-method eap radius*
[HUAWEI-aaa-authen-dot1x-auth] quit
[HUAWEI-aaa] authentication-scheme mac-auth
[HUAWEI-aaa-authen-mac-auth] authentication-method mac-authen radius* local
[HUAWEI-aaa-authen-mac-auth] quit
# ---- Step 3: 配置授权方案 ----
[HUAWEI-aaa] authorization-scheme dot1x-authz
[HUAWEI-aaa-author-dot1x-authz] authorization-method radius*
[HUAWEI-aaa-author-dot1x-authz] quit
# ---- Step 4: 配置计费方案 ----
[HUAWEI-aaa] accounting-scheme dot1x-acc
[HUAWEI-aaa-accounting-dot1x-acc] accounting-method radius*
[HUAWEI-aaa-accounting-dot1x-acc] quit
# ---- Step 5: 配置 AAA 域 ----
[HUAWEI-aaa] domain enterprise
[HUAWEI-aaa-domain-enterprise] authentication-scheme dot1x-auth
[HUAWEI-aaa-domain-enterprise] authorization-scheme dot1x-authz
[HUAWEI-aaa-domain-enterprise] accounting-scheme dot1x-acc
[HUAWEI-aaa-domain-enterprise] radius-server template RADIUS-MAIN
[HUAWEI-aaa-domain-enterprise] radius-server template RADIUS-BACKUP
[HUAWEI-aaa-domain-enterprise] quit
# 配置默认域
[HUAWEI-aaa] default domain enterprise
# ---- Step 6: 配置本地用户作为备份 ----
[HUAWEI-aaa] local-user admin password irreversible-cipher Admin@123
[HUAWEI-aaa] local-user admin service-type terminal
[HUAWEI-aaa] local-user admin authorization-attribute user-role network-admin
[HUAWEI-aaa] quit
4.2 HWTACACS 配置(设备管理认证)
# ========== 场景:网络设备管理使用 HWTACACS 认证 ==========
# ---- Step 1: 配置 HWTACACS 服务器模板 ----
[HUAWEI] hwtacacs-server template TACACS-MGMT
[HUAWEI-hwtacacs-TACACS-MGMT] hwtacacs server type new
[HUAWEI-hwtacacs-TACACS-MGMT] hwtacacs server accounting new
[HUAWEI-hwtacacs-TACACS-MGMT] hwtacacs server authorization new
[HUAWEI-hwtacacs-TACACS-MGMT] hwtacacs server password cipher Huawei@TACACS2024
[HUAWEI-hwtacacs-TACACS-MGMT] hwtacacs server primary 10.100.1.10 49
[HUAWEI-hwtacacs-TACACS-MGMT] hwtacacs server secondary 10.100.1.11 49
[HUAWEI-hwtacacs-TACACS-MGMT] hwtacacs server retransmit 2
[HUAWEI-hwtacacs-TACACS-MGMT] hwtacacs server timeout 5
[HUAWEI-hwtacacs-TACACS-MGMT] quit
# ---- Step 2: 配置 AAA 认证方案 ----
[HUAWEI] aaa
[HUAWEI-aaa] authentication-scheme tacacs-auth
[HUAWEI-aaa-authen-tacacs-auth] authentication-method hwtacacs local
[HUAWEI-aaa-authen-tacacs-auth] quit
[HUAWEI-aaa] authorization-scheme tacacs-authz
[HUAWEI-aaa-author-tacacs-authz] authorization-method hwtacacs if-auth-fail local
[HUAWEI-aaa-author-tacacs-authz] quit
[HUAWEI-aaa] accounting-scheme tacacs-acc
[HUAWEI-aaa-accounting-tacacs-acc] accounting-method hwtacacs
[HUAWEI-aaa-accounting-tacacs-acc] quit
[HUAWEI-aaa] domain default
[HUAWEI-aaa-domain-default] authentication-scheme tacacs-auth
[HUAWEI-aaa-domain-default] authorization-scheme tacacs-authz
[HUAWEI-aaa-domain-default] accounting-scheme tacacs-acc
[HUAWEI-aaa-domain-default] hwtacacs-server template TACACS-MGMT
[HUAWEI-aaa-domain-default] quit
# ---- Step 3: 配置本地用户作为 HWTACACS 不可达时的备份 ----
[HUAWEI-aaa] local-user superadmin password irreversible-cipher Super@123
[HUAWEI-aaa] local-user superadmin service-type ssh telnet terminal http
[HUAWEI-aaa] local-user superadmin authorization-attribute user-role network-admin
[HUAWEI-aaa] quit
4.3 故障案例:RADIUS 认证间歇性超时
场景:802.1X 认证经常出现"有时成功,有时超时"的现象,尤其在业务高峰期。
排查:
# 1. 检查 RADIUS 统计
[SW] display radius statistics
# 发现:
# Primary RADIUS Server (10.100.1.10):
# Request Sent: 5000
# Response Recv: 4200
# Timeout: 800
# 2. Ping RADIUS 服务器
[SW] ping -c 100 -a 10.100.2.1 10.100.1.10
# 丢包率约 16%,与超时报文比例吻合
# 3. 抓包分析
[SW] packet-capture capture-radius access GigabitEthernet 0/0/1 both
[SW] display packet-capture capture-radius
# 发现 RADIUS 请求发出后无响应
根因:RADIUS 服务器所在的网络链路拥塞,导致 UDP 报文大量丢失。RADIUS 基于 UDP,丢失即超时。
处理: 1. 短期:调整重传次数和超时时间,提升容错
[HUAWEI] radius-server template RADIUS-MAIN
[HUAWEI-radius-RADIUS-MAIN] radius-server retransmit 5
[HUAWEI-radius-RADIUS-MAIN] radius-server timeout 10
- 长期:迁移 RADIUS 服务器到更稳定的网络位置;或部署本地认证作为 RADIUS 不可达时的回退
[HUAWEI-aaa] authentication-scheme dot1x-auth
[HUAWEI-aaa-authen-dot1x-auth] authentication-method eap radius* local
4.4 故障案例:RADIUS 计费报文格式不匹配
场景:802.1X 认证成功,但用户在 30 分钟后被强制下线,日志显示 RADIUS 计费超时。
排查:
# 查看 RADIUS 服务器日志
# RADIUS Server 返回:
# Accounting-Request 格式不匹配
# 期望:Session-Time 属性
# 收到:无 Session-Time
# 检查交换机的计费配置
[SW] display this | include accounting
[HUAWEI] radius-server template RADIUS-MAIN
# 发现:
# 未配置 accounting-type
根因:RADIUS 服务器期望基于 Session(会话)的计费报文,但交换机默认可能使用 Accounting(简单)格式。
处理:
[HUAWEI] radius-server template RADIUS-MAIN
[HUAWEI-radius-RADIUS-MAIN] radius-server accounting-type session
五、总结
| 项目 | 说明 |
|---|---|
| RADIUS | UDP 协议,密码加密,认证与授权耦合,用户接入认证首选 |
| HWTACACS | TCP 协议,全数据加密,AAA 完全分离,设备管理认证首选 |
| RADIUS 端口 | 认证 1812,计费 1813 |
| HWTACACS 端口 | TCP 49 |
| RADIUS 可靠性 | 协议层重传(指数退避),默认 3 次重试,5 秒超时 |
| RADIUS 属性 | AVP 格式,可扩展(VLAN/ACL/带宽/超时等) |
| HWTACACS 优势 | 支持命令级授权(细化到具体命令的执行权限) |
| 华为推荐 | 用户接入:RADIUS;设备管理:HWTACACS |
| 高可用 | 主备服务器 + 本地用户备份 |
思考
-
RADIUS 基于 UDP 传输,为什么不用 TCP?UDP 的不可靠性对 AAA 认证有什么影响?
-
RADIUS 只对密码字段加密,其他属性(如用户名、NAS-IP、授权属性)都是明文传输。在安全要求较高的场景中,如何保护 RADIUS 通信的安全?
-
HWTACACS 支持命令级授权(可以控制用户能执行哪些命令)。RADIUS 能做到这一点吗?如果不行,RADIUS 在设备管理场景下的局限性是什么?
下篇预告:第134篇:访客网络与员工网络隔离方案