锐捷1X认证成功后异常掉线排查SOP

一、故障现象

终端802.1x认证成功后异常下线。

二、组网拓扑

常规网络拓扑如下:
拓扑描述: PC通过接入、汇聚交换机连接到核心,PC的网关在核心上, 下联认证全部开在核心上

三、可能原因

  1. 用户一段时间没有使用流量
  2. 客户端和SAM版本不兼容导致下线
  3. VLAN 端口迁移,导致用户明明没有主动下线却提示主动下线

四、故障排查步骤

步骤一:登录SAM上排查下线原因

  1. 到SAM系统WEB管理页面的运维管理>上网明细管理,找到相关的用户,查看他的下线原因,根据上面的提示可初步判断下线原因
注:SAM上的用户下线原因基本上是准确的,但是由于网络环境复杂,有可能会有存在误差的情况
  1. 如设备上提示下线原因是无流量,如下图所示,则为SAM收到流量审计设备(如RSR77、ACE等)的TCP2009无流量通知
  1. 如设备上提示下线原因是CODE4(空闲值超时),如下图所示,则为18K的记账结束报文中CODE值为4,为18K无流量下线 。

步骤二:检测NAS上无流量下线时间配置

  1. 根据相关提示,确定无流量下线的时间,查看18K配置 ,参考命令如下:
offline-detect interval 15 threshold 0 //15分钟内未检测到用户流量,就将用户踢下线。N18K通过查看MAC地址表是否有流量hit来判断
offline-detect interval 15 threshold 0 vlan 1000-1500 //可选,基于vlan 1000-1500开启无流量下线功能
  1. 若18K上提示下线时间未到就下线了,那么无流量下线应该是由其他设备发起,需要排查其他联动设备的流量检测相关功能。
如RSR77配置如下:
sam-acct user keepalive-detect enable //开启无流量检测功能【默认已开启】
sam-acct user keepalive-detect 900 //900秒内流量为0时踢用户下线【默认900秒】

步骤三:交换机以及服务器上进行抓包分析

① 交换机上通过配置镜像端口配合wireshark抓包
② 服务器端口一般支持tcpdump抓包,参考命令如下:
tcpdump -i <网卡名称> -t -s 0 w /<保存路径>/mab.pacp -vvv

步骤四:通过show以及debug命令分析异常下线原因

① show dot1x user diag mac xxx //查看相关用户的会话过程
如上图所示:
create pae:创建用户;
pkt start:客户端start报文发起的认证;
acct start:认证过,开始记账;
acct stop:用户下线,发出记账结束报文。
aaa del:服务器踢线
aaa reject:服务器拒绝
pkt logoff :客户端主动下线
set scc fail:调用scc接口失败
set scc cb fail:底层返回设置用户失败
no flow:无流量下线
auth exceed:状态机重认证次数超过配置
session tout:在线时长或者流量超过限制
no valid ip:获取不到ip
reqid tout:客户端超时
aaa tout:服务器超时
detail ( 一般18K设备端原因导致的才会出现 ):
flow used up:流量耗尽
aaa no eap:服务器报文长度错误
get author vid fail :获取vlan授权失败
am not allowed :am规则不匹配
② show dot1x authmng abnormal | include ruijie001 //查看异常的1x认证事件
/* 1x认证失败原因打印 */
#define amg_1x_result_str(rslt) 
    ((rslt == D1X_RESULT_REQID_TOUT) ? "request id timeout" : ---》客户端超时
    (rslt == D1X_RESULT_REQ_TOUT) ? "request timeout" : ---》服务器超时
    (rslt == D1X_RESULT_AAA_TOUT) ? "aaa timeout" : ---》服务器超时
    (rslt == D1X_RESULT_OTHER_TOUT) ? "other timeout" : 
    (rslt == D1X_RESULT_AAAREJ) ? "aaa reject" : ----》服务器拒绝
    (rslt == D1X_RESULT_IPAM_NOT_ALLOWED) ? "ipam not allowed" :  ----》am规则不匹配
    (rslt == D1X_RESULT_IP_BANDWIDTH_FAIL) ? "ip band width fall" :  ---》授权失败
    (rslt == D1X_RESULT_SET_SCC_FAIL) ? "set scc fall" : -----》设置scc失败
    (rslt == D1X_RESULT_USR_LOGOFF) ? "user logoff" : ----》客户端logoff
    (rslt == D1X_RESULT_AUTOR_VLAN_FAIL) ? "author vlan fail" :  ---》授权vlan失败
    (rslt == D1X_RESULT_VID_MODIFY) ? "vid modify" : 
    (rslt == D1X_RESULT_PORT_USR_LIMIT) ? "prot user limit" :  ---》端口用户数限制
    (rslt == D1X_RESULT_TOTAL_USR_LIMIT) ? "total user limit" :  ---》全局用户数限制
    (rslt == D1X_RESULT_ACCT_CACHE_DENY) ? "acct cache deny" :  ---》用户在记账缓存中
    (rslt == D1X_RESULT_OTHER_SEC_TYPE) ? "other security type" :  ---》其他安全配置,如静态mac
    (rslt == D1X_RESULT_CLOSE_AUTH_SWITCH) ? "close auth switch" :  ---全局1x开关关闭
    (rslt == D1X_RESULT_DENY_NON_RG_CLIENT) ? "deny non-rg client" :  ---》非锐捷客户端
    (rslt == D1X_RESULT_MAB_VLAN_DENY) ? "mab vlan deny" : ---》mab  vlan授权失败
    (rslt == D1X_RESULT_VALID_IP) ? "valid ip" : ---》没获取到有效ip
    (rslt == D1X_RESULT_SET_ACL_FAIL) ? "set acl fail" : ---》设置scc失败
    (rslt == D1X_RESULT_PORT_DWN) ? "port down" : ---》端口down
    (rslt == D1X_RESULT_NOT_ALLOW_USR) ? "not allow user" :  ----》用户不在可认证列表里
    (rslt == D1X_RESULT_CONFILCIT_ACCOUNT) ? "conflict account" :  ----》账号冲突
    (rslt == D1X_RESULT_VALID_IP_MAB) ? "valid ip mab" :  "none")-----》需要获取ip后进行mab认证

 
/* 1x下线原因 */
#define amg_1x_offline_str(code) 
    ((code == D1X_OFFLINE_USER_LOGOFF) ? "user logoff" : ---》客户端logoff
    (code == D1X_OFFLINE_DM) ? "server kickout user" : ---》服务器踢线
    (code == D1X_OFFLINE_NOFLOW) ? "no flow" : ---》无流量
    (code == D1X_OFFLINE_NOIP) ? "no ip" : ---》无合法ip
    (code == D1X_OFFLINE_SESSION_TOUT) ? "session timeout" : ---》费用、流量耗尽
    (code == D1X_OFFLINE_FLUX_OUT) ? "flux out" : 
    (code == D1X_OFFLINE_SVRKICKOUT_USR) ? "svr kickout user" :  ----》服务器踢线
    (code == D1X_OFFLINE_HELLO_TIMEOUT) ? "hello timeout" : ----》客户端探测超时
    (code == D1X_OFFLINE_SCC_RB_FAIL) ? "scc rollback" : ---》设置scc失败
    (code == D1X_OFFLINE_MAC_RB_FAIL) ? "mac rollback" : 
    (code == D1X_OFFLINE_IP_BANDWIDTH_FAIL) ? "ip bandwith fail" :  ---》授权失败
    (code == D1X_OFFLINE_NO_PORT_CONTROL) ? "mng no port control" :  ---》删除端口受控
    (code == D1X_OFFLINE_AUTHOR_CHANGE) ? "mng author change" :  ----》授权配置变更
    (code == D1X_OFFLINE_ALLOW_USR_CHANGE) ? "mng allow user change" :  ---》允许认证的用户列表变更
    (code == D1X_OFFLINE_DIRECT_VLAN_CHANGE) ? "mng direct vlan change" :  ---》免认证配置变更
    (code == D1X_OFFLINE_CLEAR_CLI) ? "mng clear cli" : ---》cli操作删用户
    (code == D1X_OFFLINE_IPAM_CHANGE) ? "mng ipam change" : ---》am规则变更
    (code == D1X_OFFLINE_STAITC_MAC) ? "mng staitc mac" : ---》静态mac配置变更
    (code == D1X_OFFLINE_FILT_MAC) ? "mng filter mac" : ----》过滤mac配置变更
    (code == D1X_OFFLINE_SET_MUMAB) ? "mng set mumab" :  ---》multi-mab配置变更
    (code == D1X_OFFLINE_MAB_VLAN_CHANGE) ? "mng mab vlan change" : ---》mab  vlan配置变更
    (code == D1X_OFFLINE_IP_ACCT_CHANGE) ? "mng ip acct change" :  ---》记账方法变更
    (code == D1X_OFFLINE_CTRL_MODE) ? "mng ctrl mode" : ---》受控模式变更
    (code == D1X_OFFLINE_VID_MODIFY) ? "mng vlan change" : ---》vlan配置变更
    (code == D1X_OFFLINE_PORT_MOVE) ? "port move" : ---》端口迁移
    (code == D1X_OFFLINE_VLAN_MOVE) ? "vlan move" : ---》vlan迁移
    (code == D1X_OFFLINE_PORT_VLAN_MOVE) ? "port-vlan move" :  ---》端口和vlan迁移
    (code == D1X_OFFLINE_INVALID_IP) ? "invalid ip" : ---》未获取有效ip
    (code == D1X_OFFLINE_PORT_DOWN) ? "port down" : ---》端口down
    (code == D1X_OFFLINE_GSN_FAIL) ? "gsn fail" : ---》设置gsn失败
    (code == D1X_OFFLINE_MAB_2_1X) ? "mab to 1x" : ---》mab被1x抢占
    (code == D1X_OFFLINE_MAB_2_GUEST) ? "mab to guest vlan" :  ---》跳转到guest-vlan
    (code == D1X_OFFLINE_DHCP_AUTHOR_FAIL) ? "dhcp author fail" :  ---》ip授权失败
    (code == D1X_OFFLINE_DB_RECOVER_FAIL) ? "db recover fail" :  ---》数据库恢复用户失败
    (code == D1X_OFFLINE_ADB_AUTHOR_FAIL) ? "adb author fail" :  --》静态地址绑定授权失败
    (code == D1X_OFFLINE_RECOVER_2_SCC_FAIL) ? "recover to scc fail" :  ---》向scc恢复用户失败
    (code == D1X_OFFLINE_HA_RECOVER_FAIL) ? "ha recover fail" :  ---》热备切换,恢复用户失败
    (code == D1X_OFFLINE_IP_MAB_UNSET_IP) ? "ip mab unset ip" :  ----》获取ip后进行mab认证的用户ip失效了
    (code == D1X_OFFLINE_S_MAB_CHANGE) ? "s mab change" :  "none")---》单mab状态变化

步骤五:收集信息,请联系4008111000协助处理

五、信息收集

通用命令:
terminal length 0
show ver detail
show run     
show mac-address-table | include XXXXXX 具体的Mac地址
show arp | include 5c66.6c7c.a3e3
show ip dhcp snooping
show ip dhcp snooping binding | in XXXXXX 具体的Mac地址
show dot1x user mac XXXXXX 具体的Mac地址
show dot1x
show radius server  执行3此,每隔5秒
show radius timeout record
极简版本特有命令:
show dot1x authmng  statistic
show dot1x authmng  mab statistic
show dot1x authmng abnormal xxx
1x组件debug调试log开关
注意:
1、DEBUG操作有风险(最坏情况可能需要重启设备才能恢复),需要客户知晓风险并同意后才能收集,建议在低峰期操作(若是核心设备,必须更加慎重评估)!若故障排查还需要抓包,DEBUG和抓包最好同时收集!
2、某些设备存在bug,开启客户端检测功能(dot1x  client-probe enable)的情况下,开启debug可能导致设备死机,若客户环境可以开启debug,建议先将客户端检测功能关闭(no dot1x  client-probe enable )
3、主要用于异常下线时问题排查
debug aaa  event
debug radius event
debug dot1x  packet
debug dot1x  event
debug dot1x stm   //认证状态机信息
debug dot1x  error
debug dot1x  no-filter   //12.X特有
deb dot1x dump gl
debug scc dump err
debug dot1x dump global
debug dot1x dump limit-msg
terminal no length

六、总结与建议

  1. debug命令执行请在业务低峰期操作
阅读剩余
THE END