Skip to content
ljmljz edited this page Mar 20, 2015 · 1 revision

锐捷认证原理

锐捷的认证过程,分为 交换机发现,用户名和密码认证,和心跳维持 三个部分。

交换机发现

交换机发现,就是通过发送特定的数据包,找到网络上负责执行锐捷认证的那台交换机的网卡地址。

交换机发现所发送的包,是一个广播包。其广播地址在不同的版本里是不一样的。 在 v2 版本里,广播地址是标准的以太网广播包,也就是目的MAC地址 全 0 的。 在其他版本里,需要一个组播MAC地址作为目的地址。

除了地址,广播包还带有额外的数据。在 v2 版本里,这个数据由一个 “固定的数据部分”+一个随机数据 构成。 而在 v3 里,这部分数据需要从官方的客户端里进行提取。

在发送完一个广播包后,客户端等待锐捷交换机的响应,锐捷交换机会发回响应包,这样客户端就知道了锐捷交换机的 MAC 地址了 (从以太网包的发送方地址里获取)。

除了返回的响应包,一并返回的还有接下来 挑战认证协议 里需要用到的一个随机数种子。

挑战认证协议

锐捷使用的认证协议非常类似 HTTP 所使用的 挑战认证协议。由服务器端发回一个随机数种子,然后客户端将用户名密码和随机数种子加到一起,执行 md5 校验,并将此 md5 校验结果发给锐捷。 这么做的原因是,如果有人监听数据包截取了 md5 校验过的密码,也不能用这个 md5 的结果来替代你登录服务器。 因为每次的随机数种子是不一样的,只有真正知道密码的才能构造出合适的 md5 串来。

当然,第一部分 “服务器端发现” 的时候在广播包后面附带的数据,同样要附带在这里。这部分附加数据,是所有客户端发送的数据包都必须携带的。

锐捷检验过 md5 数值后,就会返回一个成功的数据包了,接下来就进入了心跳协议了

心跳协议

锐捷检验过 md5 数值后,就会返回一个成功的数据包了,这个成功的数据包里,包含又一个 随机数种子。 这个随机数种子还经过了一定的混淆算法。需要首先反向解密。

解密后,每次发送心跳包钱,都将这个数字+1. 并将加1 后的数字再次加密。 解密后,再附带锐捷那一套冗长的数据,合并后的数据即可发送了。

心跳包发送频率可以控制在每分钟一个即可。

Clone this wiki locally