802.1X认证问题处理总结

  1. 问题描述

  XXXX项目实施过程中,H3C S5800交换机配置Radius认证,并在接入端口下使能dot1x功能后,出现认证PC可以进入guest VLAN,并获取guest VLAN的IP地址,但是dot1x认证无法成功的问题。采用H3C dot1x认证客户端时返回的错误信息为:radius server no response,采用windows自带dot1x认证客户端时出现PC反复认证的现象。

  2. 问题原因

  通过在设备侧开启debug功能对H3C S5800与Radius服务器交互报文事件进行分析(debugging radius packet):

  [5800]

  [02010015013033304C514631303943303030313332]

  [80 Message-Autheticator ] [18] [00000000000000000000000000000000]

  [4 NAS-IP-Address ] [6 ] [172.29.250.47]//radius请求报文源IP地址

  [32 NAS-Identifier ] [25] [5800-1]

  *Apr 27 01:46:26:125 2000 5800-1 RDS/7/DEBUG:

  [5 NAS-Port ] [6 ] [16790392]

  [61 NAS-Port-Type ] [6 ] [15]

  [6 Service-Type ] [6 ] [2]

  [7 Framed-Protocol ] [6 ] [1]

  [31 Caller-ID ] [19] [30302D32342D45382D45462D34322D3139]

  *Apr 27 01:46:26:526 2000 5800-1 RDS/7/DEBUG:Send: IP=[172.29.20.100], UserIndex=[165], ID=[3], RetryTimes=[0], Code=[1], Length=[159]

  //radius请求报文目的IP地址。

  *Apr 27 01:46:26:716 2000 5800-1 RDS/7/DEBUG:Send Raw Packet is:

  *Apr 27 01:46:27:527 2000 5800-1 RDS/7/DEBUG:Warning: Received a bad packet  //收到radius响应报文后报错

  *Apr 27 01:46:34:594 2000 5800-1 RDS/7/DEBUG:RADIUS Server No Response

  8021X/2/DOT1X_LOG:Port:GigabitEthernet1/0/3,Auth:165,Authentication failed: 802.1X authentication failed.

  通过在设备侧的debug信息可以看到设备已经把radius 认证请求报文发出,也收到了Radius服务器返回的响应报文,但设备认为响应报文有错误,经过几次交互都收到错误的响应报文后,交换机返回错误信息:RADIUS Server No Response,Authentication failed:802.1x authentication failed。

  在Radius服务器侧通过tcpdump命令获取H3C S5800与Radius服务器交互的报文:

  

图片9.png


  设备向Radius服务器发送的请求报文中源IP地址为设备地址172.29.250.47,目的IP地址为设置的Radius服务器 IP地址,这与设备侧debug信息一致。如上图所示。

图片10.png


  Radius Server给设备回应报文如上图所示,报文中源IP地址为172.29.20.101,目的IP地址为设备IP地址172.29.250.47。

  H3C S5800侧radius 认证配置如下:

  [5800]display this

  #

  radius scheme dot1x

  primary authentication 172.29.20.100

  primary accounting 172.29.20.100

  key authentication xxxxxx

  key accounting xxxxxx

  user-name-format without-domain

  #

  按照以上配置,设备发出的radius认证请求报文的目的IP地址及接收到的响应报文的源IP地址均应为172.29.20.100,而问题发生时Radius服务器回应报文的源IP却变为另一个IP地址:172.29.20.101。H3C交换机radius认证功能对报文IP地址的检测机制如下:如果接收到的radius响应报文源IP地址不是设备配置的radius请求报文的目的IP地址,则交换机认为接收到了错误的报文,从而忽略对该响应报文的处理。因此在设备侧debug时会发现有Received a bad packet的错误提示,并出现了设备与服务器之间有radius报文交互,但是认证不成功的问题。

  咨询了172.29.20.100与172.29.20.101之间的关系,原来Radius服务器有两台,并做了双机热备,172.29.20.101为其中一台服务器的实IP地址,而172.29.20.100为双机的虚IP地址。

  3. 解决方案

  与客户沟通修改Radius服务器的响应机制,使其回应radius请求报文时采用虚IP地址(172.29.20.100)做为报文的源IP地址。

  在客户修改Radius服务器配置之后进行测试,将H3C S5800的radius认证地址设置为Radius服务器虚IP地址时能够认证成功,该问题至此解决。


2016年01月