无感知认证成功后异常掉线排查SOP

一、故障现象

客户现场配置无感知认证,终端无感知认证成功后,出现异常下线的现象。

二、组网拓扑

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

三、可能原因

  1. NAS上Mab相关配置错误或缺失;
  2. NAS未开启网关模式致认证异常;
  3. 现场网络环境中存在环路导致认证异常;
  4. 现场网络环境中存在IP地址冲突;
  5. radius服务器发生异常,导致终端下线;
  6. 认证服务器踢用户下线;

四、故障排查步骤

步骤一:检查NAS上认证配置是否完整正确

  1. 检查设备是否开启网关模式,参考命令: auth-mode gateway
① 设备配置网关模式后,不能仅通过核查配置中是否有配置auth-mode gateway,还需要通过debug scc status中的scc mode去核查是否为gate mode(网关模式需要重启才能生效,配置不重启也是不生效的)
网关模式:
认证模式:
② 可以通过show security-log detail all | in gate核查对应配置网关模式的时间,结合对应show ver设备启机时间,就能明确对应配置网关模式后是否有重启
  1. 检测Mab认证配置是否完整
① 动态Mab用户,检查是否配置了命令“aaa authorization ip-auth-mode mixed ”,配置后设备进行IP+Mac校验。
② 动态Mab用户,检查是否配置了命令“dot1x valid-ip-acct enable”,1x组件会对上线的用户进行ip校验,持续5分钟没有获取到ip地址的用户会被下线。
③ 动态用户,检查是否配置了DHCP Snooping 功能以及用户信息是否出现在snooping表里面。
④ 静态用户,检测是否配置了命令“dot1x address-binding mac XXXX.XXXX.XXXX ip X.X.X.X ”
完整配置参考如下命令:
模块一:开启网关模式
aaa new-model      //启用AAA  
模块二:AAA配置
aaa accounting network default start-stop group radius      // AAA 参考配置,以实际业务部署为准  
aaa authentication dot1x default group radius        // AAA 的1x模板参考配置,以实际业务部署为准  
aaa authentication web-auth default group  radius         // AAA 的web模板参考配置,以实际业务部署为准  
aaa authentication login default local      // AAA 的设备登入采用本地username/password  
aaa accounting update periodic 15         //配置aaa记帐更新周期15分钟  
aaa accounting update               //配置aaa记帐更新  
no aaa log enable      //关闭aaa log  
模块三:对接radius服务器
radius-server host 172.18.157.32 key ruijie        //配置aaa server IP和key,单radius场景适用  
模块四:1X认证列表调用
dot1x accounting default     //选配,当aaa自定义list name时,需要匹配  
dot1x authentication default     //选配,当aaa自定义list name时,需要匹配  
模块五:Portal服务器对接
web-auth template eportalv2     
    ip 172.18.157.33                 //portal服务器的IP  
    url http://172.18.157.33/eportal/index.jsp    //portal服务器的url地址  
    authentication  default     //选配,当aaa自定义list name时,需要匹配  
    accounting  default       //选配,当aaa自定义list name时,需要匹配  
web-auth portal key ruijie    //必配,和eportal对接加密url的密钥,所以对接第三方服务器时,建议不要配置Portal key,防止对接失败  
模块六: IP以及Mac地址有效性检查配置
aaa authorization ip-auth-mode mixed    //必配,配置dot1x上传sam的IP方式为混合模式,会通过多种方式轮询获取IP(su客户端/dhcp/radius等)  
ip dhcp snooping              //必配,无感知认证需要通过dhcp snooping模块获取IP地址,否则SAM会出现0.0.0.0地址的用户  
dot1x mac-auth-bypass valid-ip-auth          //由DHCP模块通告MAB模块开始认证。注意该命令配置后会导致已有用户掉线,不建议在业务高峰期开启。  
dot1x valid-ip-acct enable           //必配,通过记帐更新报文上传用户IP通告给SAM,如果发现1x认证模块没有终端用户的IP表项,5分钟后就会将用户踢下线。  
模块七: 接口下开启认证
interface range GigabitEthernet 0/2-3  //接口启用802.1X认证  
    web-auth enable eportalv2    //接口使能WEB认证  
    dot1x port-control auto       //接口使能802.1X认证  
    dot1x mac-auth-bypass multi-user                   //必配,接口下使能无感知认证  
    dot1x mac-auth-bypass vlan (vlan-list)              //选配,接口下配置,可基于用户认证的vlan范围,启用无感知认证  
    

步骤二:检查设备环境是否正常

① 检查网络环境是否有环路,检查项如下:
  • 检查是否有异常数据,比如异常组播、广播数据,参考命令“show int counter summary up”
  • 检查生成树是否端口状态是否有频繁变化,参考命令“show spanning summary”
  • 检查RLDP是否有异常日志提示
  • 分析设备日志是否Mac地址漂移、冲突等,参考命令“show logging”
② 检查终端获取的IP地址是否存在冲突,参考命令“show arp detail X.X.X.X”
③ 查看radius服务器状态是否正常。
  • 检查服务器状态是否处于激活状态,参考命令:show radius server”
  • 检查服务器状态是否有超时记录,参考命令:show radius server timeout

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

① 交换机上通过配置镜像端口配合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. 异常下线排查主要有三个方向
① 服务器导致的下线
② 配置导致的下线
③ 异常下线,例如:终端异常、设备软件bug

 

阅读剩余
THE END