第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 协议。

RADIUS 协议概述 - 图示

特性 说明
协议类型 专有协议(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 报文格式

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 报文交互流程

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
  1. 长期:迁移 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
高可用 主备服务器 + 本地用户备份

思考

  1. RADIUS 基于 UDP 传输,为什么不用 TCP?UDP 的不可靠性对 AAA 认证有什么影响?

  2. RADIUS 只对密码字段加密,其他属性(如用户名、NAS-IP、授权属性)都是明文传输。在安全要求较高的场景中,如何保护 RADIUS 通信的安全?

  3. HWTACACS 支持命令级授权(可以控制用户能执行哪些命令)。RADIUS 能做到这一点吗?如果不行,RADIUS 在设备管理场景下的局限性是什么?

下篇预告:第134篇:访客网络与员工网络隔离方案