终端通过接入交换机进行MAC地址认证,交换机作为RADIUS客户端与认证服务器交互。用户认证通过后,认证服务器通过RADIUS授权属性向交换机下发动态ACL,对认证用户的网络访问权限进行控制。
Reply-Message="ErrorCode=3,VLANACLDesc=\344\270\215\347\254\246\345\220\210\345\256\211\345\205\250\350\247\204\345\210\231\347\232\204\350\256\276\345\244\207\003\004" 解码为:“不符合安全规则的设备”(UTF-8)
某用户通过S5130S-52MS-EI-G交换机进行MAC地址认证。交换机能够与RADIUS认证服务器正常进行认证交互,但认证服务器下发动态ACL后,用户无法正常完成动态ACL授权。
检查RADIUS服务器返回的授权属性,发现服务器下发如下内容:
CiscoSecure-Defined-ACL=#ACSACL#-IP-3106-1860
需要确认该动态ACL属性的含义,并判断其命名方式是否符合交换机的动态ACL名称要求。
MAC地址认证的基本处理过程可划分为:
终端接入
↓
交换机触发MAC认证
↓
向RADIUS服务器发送认证请求
↓
RADIUS完成身份认证
↓
服务器返回授权属性
↓
交换机解析并执行授权
↓
用户正常上线
现场已经能够观察到RADIUS服务器向交换机返回Cisco-AVPair动态ACL属性,因此排查重点应放在认证后的授权属性解析及动态ACL部署阶段。
认证服务器下发:
CiscoSecure-Defined-ACL=#ACSACL#-IP-3106-1860
H3C设备对于Vendor ID为9的CISCO-AV-Pair动态ACL支持如下格式:
CiscoSecure-Defined-ACL=#ACSACL#-IP-name-number
其中:
name :动态ACL名称
number :动态ACL版本号
因此本案例中的属性应解析为:
#ACSACL#-IP-3106-1860
│ │
│ └── 版本号:1860
│
└─────── 动态ACL名称:3106
由此可见,需要重点检查的ACL名称为3106,完整字符串#ACSACL#-IP-3106-1860并非设备实际使用的ACL名称。
查询H3C AAA相关配置指导,动态授权ACL的acl-name要求为1~63个字符、不区分大小写,并且必须以英文字母开头。
例如:
DACL3106 合法
A3106 合法
USER3106 合法
3106 不符合名称要求
本案例中服务器下发的动态ACL名称为:
3106
首字符为数字,不符合交换机动态ACL名称要求。
对于基于CISCO-AV-Pair的动态ACL授权,服务器首先通过:
CiscoSecure-Defined-ACL
向设备指定动态ACL名称。
设备获取动态ACL名称后,会继续按照动态ACL授权流程获取对应ACL规则,并将动态ACL应用到认证用户。
因此,动态ACL名称属于后续授权处理的重要标识。如果服务器下发的ACL名称本身不符合设备支持的命名规范,交换机将无法正常完成对应动态ACL的创建和部署,最终影响用户授权。
本次问题的原因是认证服务器下发的动态ACL名称3106以数字开头,不符合交换机动态ACL名称必须以英文字母开头的要求,导致交换机无法正常完成动态ACL授权。
问题与MAC认证使用的用户名格式需要分别检查。本案例故障点位于用户认证后的动态ACL授权阶段。