管「谁能上网」用 RADIUS,管「谁能登设备敲什么命令」用 TACACS+。 认证服务器放异地是最常见的错误——单程 20 毫秒,每次登录要等几百毫秒。
上一节讲设备冗余,这一节讲「谁能进这台设备」。 设备一多,本地账号就管不住了,必须集中认证。
一、两种协议的取舍
项目 RADIUS TACACS+
标准 RFC 2865(开放) 思科私有(事实标准) 传输层 UDP 1812/1813 TCP 49 加密范围 只加密密码 整个报文体 授权粒度 粗(属性对) 细(每命令可授权) 典型用途 网络接入认证(802.1X) 设备管理登录
一句话选型:终端接入认证用 RADIUS,设备管理登录用 TACACS+。 因为 TACACS+ 能精确到「这条命令允不允许」。
二、TCP 与 UDP 在这里有实际意义
RADIUS 用 UDP:服务器不回就重传,超时就是超时。设备不会知道「服务器是挂了还是慢了」。 TACACS+ 用 TCP:有连接状态,服务器挂了立刻知道,而且大响应能分片传输,不受 UDP 长度限制。
这个差别在「服务器维护」时体现得最明显:RADIUS 挂了,设备要等超时才知道(默认几秒); TACACS+ 挂了,连接直接被拒绝,响应是即时的。
三、服务器放异地是常见错误
一次登录要 2 到 4 个来回。单程 1 毫秒时,登录约 6 毫秒,感觉不到; 单程 50 毫秒时,登录约 300 毫秒,明显慢。
所以运维抱怨「设备卡」时,先量一下到认证服务器的时延。 解决办法:本地放一台备用服务器,或者用「本地账号兜底」。
但本地兜底本身是个安全取舍:本地账号是共享密码、不会过期、而且离职的人可能还留着。 所以兜底账号必须「能用但会被审计」——每次使用都发告警。
四、三条安全实践
一、限制来源:认证服务器只接受设备地址的访问。 二、必须留本地兜底:否则服务器一挂,谁也进不了设备,而这时候往往正是最需要进去的时候。 三、计费日志要留:谁在什么时候登了哪台设备、敲了什么命令。出事后这是唯一的追溯依据。
还有一条常被忘:认证要走带内还是带外?设备管理面最好走独立的带外网络, 否则「网络断了要上去修,但认证服务器在网络里」就形成了死锁。
五、动手 Demo:RADIUS 与 TACACS+,两种认证协议的取舍
这段对比两种协议的六项差别,再按「一次登录 2 到 4 个来回」算四档单程时延下的登录耗时。
for rtt in (1, 5, 20, 50):
P(u" 单程 %d 毫秒:登录约 %d 毫秒。" % (rtt, rtt * 6))
实跑输出:
--------------------------------------------------------------------
RADIUS 与 TACACS+,两种认证协议的取舍
--------------------------------------------------------------------
**路由器自己存账号只能应付几台设备。**设备一多,就得用集中认证。
项目 RADIUS TACACS+
----------------------------------------------------------------
标准 RFC 2865(开放) 思科私有(事实标准)
传输层 UDP 1812/1813 TCP 49
加密范围 只加密密码 整个报文体加密
授权粒度 粗(属性对) 细(每命令可授权)
典型用途 网络接入认证(802.1X) 设备管理登录
计费 原生支持 支持
**一句话选**:**管「谁能上网」用 RADIUS,管「谁能登设备敲什么命令」用 TACACS+。**
**TCP 与 UDP 的差别在这里有实际意义**:
· RADIUS 用 UDP:**服务器不回就重传,超时就是超时。**
· TACACS+ 用 TCP:**有连接状态,服务器挂了立刻知道。**
**算一下认证的往返时间**:一次登录要 2 到 4 个来回。
单程 1 毫秒:登录约 6 毫秒。可用
单程 5 毫秒:登录约 30 毫秒。可用
单程 20 毫秒:登录约 120 毫秒。可用
单程 50 毫秒:登录约 300 毫秒。明显慢
**「认证服务器放异地」是最常见的错误**:单程 20 毫秒以上时,**每次登录要等几百毫秒**,
运维会开始抱怨「设备卡」。**解决办法是本地放一台备用服务器,或者用「本地账号兜底」。**
**最后一条安全实践**:认证服务器与设备之间要**限制来源**,只允许设备的地址访问;
**并且认证失败要有本地兜底账号**——**否则服务器一挂,谁也进不了设备。**
「单程 20 毫秒 → 登录 120 毫秒」这一行是分界线: 100 毫秒以内人感觉不到,200 毫秒以上会明显觉得「卡」。 所以 20 毫秒是「认证服务器能放多远」的经验上限。
「本地兜底」这一段要说清取舍:它降低了安全性,但换来了可用性。 正确的做法不是「不留」,是「留但监控」——兜底账号每用一次就发一条告警,这样它就从「隐患」变成了「信号」。
最后那条「带内还是带外」是设计阶段的问题:很多网络出事之后才发现「管理面依赖被管理的网络」, 这时候只能派人到现场。 带外管理(独立 4G、独立专线、串口)是最后的保险。
30 秒实验
- 查一下你的设备是用本地账号还是集中认证。
- 量一下设备到认证服务器的时延。
- 想一想:如果认证服务器挂了,你能登进设备吗?
常见误区
- 以为 RADIUS 与 TACACS+ 可以随便选。用途不同,粒度不同。
- 以为认证服务器放总部更省事。时延会变成日常体验问题。
- 以为本地兜底账号是「安全漏洞」。不留才是运维事故。
自测三问(点开对答案)
1. RADIUS 与 TACACS+ 分别适合什么场景? —— RADIUS 管终端接入认证,TACACS+ 管设备管理登录的命令授权。 2. 为什么认证服务器不宜放太远? —— 一次登录要 2 到 4 个来回,单程时延会成倍放大到登录耗时。 3. 为什么必须留本地兜底账号? —— 认证服务器故障时仍需能登录设备抢修,否则彻底失去控制。下一节:能进去了,还要管「谁先走」——QoS。
- ☐ (本节完,下一节 03.06.08 QoS)