RADIUS服务器状态探测
RADIUS服务器状态探测
RADIUS服务器的可用性和可维护性是用户接入认证的基本条件,当设备与RADIUS服务器之间无法通信时,RADIUS服务器不能对用户进行认证和授权。为了解决该问题,设备支持在RADIUS服务器Down时的用户逃生功能,即RADIUS服务器Down后,用户无法获取服务器授权时,仍能够具有一定的网络访问权限。
但是,RADIUS服务器Down时的用户逃生功能必须在设备将RADIUS服务器的状态标记为Down后才能启用。如果RADIUS服务器的状态没有标记为Down、设备又不能与RADIUS服务器正常通信,这会导致用户既获取不到服务器授权也不能进行逃生,进而造成用户没有任何网络访问权限。所以,设备必须及时感知到RADIUS服务器的状态,在RADIUS服务器状态为Down时,使用户能够获取逃生权限;在RADIUS服务器状态恢复Up后,用户退出逃生权限,进行重认证。
RADIUS服务器的状态
设备将RADIUS服务器的状态分为三种,三种状态的含义及出现的场景如下表所示。
状态 | RADIUS服务器是否可用 | 出现该状态的场景 |
|---|---|---|
Up | RADIUS服务器可用 |
|
Down | RADIUS服务器不可用 | 满足将RADIUS服务器的状态标记为Down的条件 |
Force-up(强制Up) | 在没有可用的RADIUS服务器时,会选择Force-up状态的服务器 | dead-time定时器超时 |
RADIUS服务器的初始状态被标记为Up。在收到RADIUS认证请求报文、并且满足将RADIUS服务器的状态标记为Down的条件时,RADIUS服务器的状态被切换为Down。触发状态切换的RADIUS认证请求报文可以是用户认证过程中发送的,也可以是管理员构造的,比如执行test-aaa命令时发送的测试报文或者自动探测时发送的探测报文。
dead-time定时器超时,将RADIUS服务器的状态由Down切换为Force-up:设备在将RADIUS服务器的状态标记为Down后就会启动dead-time定时器,该定时器定义了Down状态可持续的时长。定时器超时后,设备将服务器的状态标记为Force-up。之后,如果有新用户需要通过RADIUS方式进行认证,在没有可用的RADIUS服务器的情况下,设备会尝试和Force-up状态的服务器重新建立连接。
设备收到RADIUS服务器的报文,将RADIUS服务器的状态由Down切换为Up。例如,配置自动探测后,设备收到RADIUS服务器的响应报文。
将RADIUS服务器的状态标记为Down的条件
能否将一个RADIUS服务器的状态标记为Down,与以下因素有关:
RADIUS服务器最大无响应时长(max-unresponsive-interval的取值)
RADIUS认证请求报文发送的次数
RADIUS认证请求报文发送的时间间隔
RADIUS服务器的探测周期
RADIUS服务器探测周期循环次数
RADIUS服务器在每个探测周期内连续无响应最大次数(dead-count的取值)
将RADIUS服务器的状态标记为Down的条件分为两种,只要满足其中一种,RADIUS服务器的状态就会被标记为Down。
第一种:在RADIUS服务器状态探测过程中,将RADIUS服务器标记为Down状态。系统启动后,RADIUS服务器状态探测定时器开始运行。从设备发送第一个RADIUS认证请求报文开始计算,如果设备一直没有收到RADIUS服务器的报文,并且在一个探测周期内满足条件:未收到RADIUS服务器报文的次数(n)大于或等于连续无响应的最大次数(dead-count),则记录一次通讯中断。在持续没有收到RADIUS服务器报文的情况下,探测周期循环几次,就在第几次记录通讯中断时将RADIUS服务器标记为Down。

如果某个探测周期未记录通讯中断,则清除之前所有的通讯中断的记录。
第二种:将长时间无响应的RADIUS服务器标记为Down状态。在用户接入频率较低、设备收到RADIUS认证请求报文较少、RADIUS服务器状态探测过程中将RADIUS服务器标记为Down的条件无法满足的情况下,连续两个无响应的RADIUS认证请求报文的时间间隔大于max-unresponsive-interval时,RADIUS服务器被标记为Down,此机制能够确保用户获取逃生授权。
图2-12为将RADIUS服务器的状态标记为Down的逻辑流程图,以探测周期循环两次为例。如果RADIUS服务器模板中配置了多个服务器,整体状态探测的时间与服务器的个数以及选择服务器的算法有关。当用户终端使用客户端软件进行认证时,如果终端客户端软件的超时等待时间小于所有整体状态探测时间的总和,可能导致终端客户端软件反复拨号而无法接入网络;另外如果配置了用户逃生,为了使用户能够正常加入逃生权限,也需要整体状态探测时间的总和小于终端客户端软件的超时等待时间。
相关命令请参见下表。
命令 | 说明 |
|---|---|
radius-server { dead-interval dead-interval | dead-count dead-count | detect-cycle detect-cycle } | 在RADIUS服务器状态探测过程中,将RADIUS服务器的状态标记为Down的条件。
|
radius-server max-unresponsive-interval max-unresponsive-interval | RADIUS服务器无响应的最大时长。默认为300秒。 连续两个无响应的认证请求报文的时间间隔大于max-unresponsive-interval时,则将RADIUS服务器的状态标记为Down。 |
radius-server dead-time dead-time | RADIUS服务器Down状态可持续的时长。 dead-time:设备将RADIUS服务器的状态标记为Down后,等待设置的dead-time时间,设备会将服务器的状态设置Force-up。默认值为5分钟。 |
自动探测
RADIUS服务器的状态被标记为Down后,通过自动探测功能可以检测RADIUS服务器的可达性。
自动探测功能需要手动开启。开启自动状态探测功能只需在设备的RADIUS服务器模板视图下配置自动探测用户名和密码,在RADIUS服务器上不需要配置此自动探测用户名和密码。认证无需成功,设备能收到认证失败响应报文就能证明RADIUS服务器是正常工作的,就会将RADIUS服务器的状态标记为Up;反之,则证明RADIUS服务器不可用,就会将RADIUS服务器的状态标记为Down。

需要注意的是,对于用户帐号存储在第三方服务器的场景,例如帐号存储在AD\LDAP服务器,建议在本地RADIUS服务器上配置自动探测帐号,以避免由于本地RADIUS服务器向第三方服务器查询帐号导致服务器性能降低。
服务器的状态 | 是否支持自动探测 | 何时发送自动探测报文 | 服务器状态切换的条件 |
|---|---|---|---|
Down状态 | 缺省支持 | 自动探测周期过后发送 | 在探测报文的超时等待时间内,如果设备收到了RADIUS服务器的报文,会将RADIUS服务器的状态标记为Up;反之,则保持RADIUS服务器的状态为Down。 |
自动探测相关命令请参见下表。
命令 | 说明 |
|---|---|
radius-server testuser username username password cipher password | 开启自动探测功能:
|
radius-server detect-server interval interval | 状态为Down的RADIUS服务器的自动探测周期,默认为60秒。 |
将RADIUS服务器标记为Down后的处理
设备将RADIUS服务器的状态标记为Down之后,通过配置逃生功能,使用户能够进入逃生授权。设备探测到RADIUS服务器状态恢复为Up后,通过配置重认证功能,使用户重认证获取RADIUS服务器授权,如图2-13所示。

RADIUS服务器的状态恢复为Up后,对于802.1X认证用户和MAC认证用户,用户会退出逃生授权并进行重认证;对于Portal认证用户,用户会进入预连接授权,在用户访问网络资源时,才会触发重定向到Portal服务器进行认证。
RADIUS服务器Down时逃生权限的配置命令以及重认证功能相关命令如下表所示。
命令 | 说明 |
|---|---|
authentication event authen-server-down action authorize { vlan vlan-id | service-scheme service-scheme-name | ucl-group ucl-group-name } [ response-fail ] | 配置RADIUS服务器Down时的逃生功能。 |
authentication event authen-server-up action re-authen | 配置RADIUS服务器恢复为Up时,设备对逃生状态的用户进行重认证。 |
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。
转载请保留出处: www.zh-cjh.com珠海陈坚浩博客 » RADIUS服务器状态探测
作者: 小编
| 手机扫一扫,手机上查看此文章: |


一切源于价值!
其他 模板文件不存在: ./template/plugins/comment/pc/index.htm