debug抓包,发现服务器那边认证成功了,但是服务器返回的是code 26 Access-Challenge,Received authentication response with code 26。然后交换机就把认证给拒了。这个交换机侧要怎么处理?
Message-Authenticator=0x944c55484e60d2fde3323eef190e8d9c
EAP-Message=0x040d0004
Microsoft-Attr-10=0x0153554e524953452d4149
MSCHAPv2_Success=0x01533d43393730414436424243323737423632414443464534373144463635424542454443344345373439
MS-MPPE-Send-Key=******
MS-MPPE-Receive-Key=******
EAP是一种用于网络接入认证的协议,支持多种认证方法,如EAP-TLS、EAP-TTLS、PEAP等。在EAP过程中,服务器和客户端之间通过一系列消息交换来验证身份。
查看交换机配置:检查交换机的EAP配置,确保它正确设置了期望的认证方法。例如,如果服务器期望客户端使用EAP-TLS,确保交换机也配置为接受EAP-TLS认证。
检查认证服务器设置:确认认证服务器(如RADIUS服务器)是否正确配置,并且可以处理 Access-Challenge。
启用EAP重试:在某些情况下,你可能需要在交换机上启用对EAP重试的支持。例如,某些设备可能需要配置为在接收到时自动发起另一个认证请求。
eap retry enable
增加重试次数:如果交换机配置了自动重试,检查是否可以增加重试次数,以应对可能的延迟或网络问题。
eap retry count <number>
3 PARTICULARS: 检查EAP超时设置:确保交换机的EAP超时设置不是太短,这可能导致在认证完成前连接被中断。
eap timeout <seconds>
查看交换机日志:检查交换机的日志文件,寻找与认证失败相关的错误或警告信息。
启用调试:在交换机上启用详细的调试日志,这可以帮助你更好地理解认证过程中的问题和瓶颈。
debug eap all
模拟测试:尝试使用不同的认证设备或客户端进行测试,看是否可以成功完成认证。
更新固件:确保交换机的固件是最新的,因为老旧的固件可能存在已知的bug或不兼容性问题。
通过上述步骤,你应该能够诊断并解决因 Access-Challenge导致的问题。如果问题仍然存在,可能需要联系设备供应商获取更专业的支持或进一步的配置指导。
Code=1:Access-Request(设备发给服务器)
Code=2:Access-Accept 认证成功
Code=3:Access-Reject 拒绝
Code=11:Access-Challenge 挑战报文
你日志里 Code=26 不属于标准 RFC2865 定义的 RADIUS Code!
正常认证流程:服务器校验通过必须回复 Code=2 Access-Accept;
现在 RADIUS 服务器异常返回 Code=26,交换机识别不了该报文类型,直接判定认证失败、切断 802.1X 会话。
结合报文携带字段:MSCHAPv2_Success、MS-MPPE密钥、EAP-Message,现象典型:
RADIUS 服务端程序 BUG / 配置异常,没有封装标准 Code=2 Access-Accept,错误使用 Code=26 应答;交换机固件严格遵循 RFC,无法识别非法 Code,直接丢弃报文、终止认证。
一、先区分两方责任(关键点)
✅ 根本问题:RADIUS 认证服务器(iMC EIA / 第三方 Radius)报文封装错误,不是交换机配置缺失
❌ 交换机无法通过命令兼容非法 RADIUS Code,标准协议栈不支持自定义 Code 值解析。
但是有 2 个场景需要排查确认,避免误判:
抓包过滤问题:debug 信息打印错误,实际 Code 是 11 Access-Challenge,日志打印错乱;
EAP 中继模式与本地认证模式不匹配导致流程异常。
二、快速验证手段(交换机执行)
cli
# 开启详细radius调试
debug radius packet
terminal debugging
terminal monitor
完整观察交互流程:
交换机发出 Access-Request(Code1)
服务器返回报文真实 Code 编号
如果确实持续收到 Code=26 → 服务器侧必须修复
如果只是日志文字写错,真实 Code=11(Access-Challenge),属于 EAP 二次挑战流程异常,处理方案不同
三、两种场景分别处理
场景 1:确认服务器真实返回 Code=26(你当前现象)
交换机侧:无任何配置命令可以兼容修复
Comware V5/V7(H3C 交换机)协议栈严格遵循 RFC2865,未知 Code 报文直接丢弃,没有开关关闭该校验。
需要在 RADIUS 服务器侧整改(重点)
服务器类型排查:iMC EIA / Windows NPS / FreeRADIUS / 第三方认证平台
Windows NPS 几乎不会出现该问题,大概率是定制 Radius、开源 freeradius 二次开发、老旧版本 iMC EIA
核查认证方式:终端使用 EAP-MSCHAPv2
服务器收到 EAP 响应成功后,必须构造标准 Code=2 Access-Accept,携带 MPPE 密钥、EAP 成功报文;
当前服务器错误构造 Code=26,属于服务端代码缺陷。
临时排查方向(服务端)
升级 RADIUS 服务程序版本;
关闭服务器上自定义报文封装插件、策略脚本;
更换认证模板,确认是否自定义属性 / 策略篡改了 RADIUS 头部 Code 字段;
测试新建测试账号,排除账号绑定策略导致报文异常。
场景 2:日志打印错误,实际报文 Code=11 Access-Challenge(极易混淆)
现象:EAP-MSCHAPv2 协商中服务器持续下发 Challenge,流程卡死,无法走到最终 Access-Accept。
交换机侧检查 802.1X 模式:
cli
display dot1x
关键配置:
cli
# 使用EAP中继(推荐,对接标准Radius服务器,iMC默认)
dot1x authentication-method eap
# 如果配置成chap/pap,服务器使用EAP-MSCHAPv2会流程冲突
# dot1x authentication-method chap
错误:交换机配置 chap 模式,终端和服务器跑 EAP,流程不匹配,持续交互 Challenge 无法收尾。
四、补充:报文内携带字段解读
plaintext
EAP-Message=0x040d0004 // EAP-Success报文(EAP层已经认证成功)
MSCHAPv2_Success // MSCHAPv2协商成功标识
MS-MPPE-Send/Receive-Key // 无线/加密需要的会话密钥
EAP 载荷内部已经协商成功,但是外层 RADIUS 头部 Code 非法!
形象理解:信封里面写着 “认证通过”,但是信封外皮的类型编号写错,交换机不认这个信封直接拒收。
五、临时替代验证方案(定位用)
使用 FreeRadius / 另外一台正常 Radius 服务器对接同一交换机、同一终端;
若认证正常(服务器返回 Code=2),100% 确认原有认证服务器故障。
抓包软件(Wireshark)直连交换机上联口捕获 RADIUS 报文,确认帧头部真实 Code,不要只依赖设备 debug 输出,排除交换机调试日志打印 BUG。
六、总结给答疑结论(可直接复制知了社区回复)
根据 RFC2865 标准,RADIUS 合法 Code 仅 1/2/3/11,Code=26 属于非法报文类型;
当前 EAP 载荷显示终端认证协商完成,但 RADIUS 服务端封装报文头部错误,未下发标准 Code=2 (Access-Accept);
H3C 交换机 Comware 平台协议栈无法关闭 RADIUS 报文 Code 合法性校验,交换机侧无配置命令解决该问题;
整改重心:登录 RADIUS 认证服务器(EIA/NPS 等),排查服务版本、自定义策略、报文封装插件,修复使其认证成功时正常回复 Code=2 Access-Accept;
建议通过 wireshark 物理抓包再次核实 RADIUS 报文真实 Code,排除交换机 debug 日志打印失真问题。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论