-
Notifications
You must be signed in to change notification settings - Fork 0
Protocol
锐捷的认证过程,分为 交换机发现,用户名和密码认证,和心跳维持 三个部分。
交换机发现,就是通过发送特定的数据包,找到网络上负责执行锐捷认证的那台交换机的网卡地址。
交换机发现所发送的包,是一个广播包。其广播地址在不同的版本里是不一样的。 在 v2 版本里,广播地址是标准的以太网广播包,也就是目的MAC地址 全 0 的。 在其他版本里,需要一个组播MAC地址作为目的地址。
除了地址,广播包还带有额外的数据。在 v2 版本里,这个数据由一个 “固定的数据部分”+一个随机数据 构成。 而在 v3 里,这部分数据需要从官方的客户端里进行提取。
在发送完一个广播包后,客户端等待锐捷交换机的响应,锐捷交换机会发回响应包,这样客户端就知道了锐捷交换机的 MAC 地址了 (从以太网包的发送方地址里获取)。
除了返回的响应包,一并返回的还有接下来 挑战认证协议 里需要用到的一个随机数种子。
锐捷使用的认证协议非常类似 HTTP 所使用的 挑战认证协议。由服务器端发回一个随机数种子,然后客户端将用户名密码和随机数种子加到一起,执行 md5 校验,并将此 md5 校验结果发给锐捷。 这么做的原因是,如果有人监听数据包截取了 md5 校验过的密码,也不能用这个 md5 的结果来替代你登录服务器。 因为每次的随机数种子是不一样的,只有真正知道密码的才能构造出合适的 md5 串来。
当然,第一部分 “服务器端发现” 的时候在广播包后面附带的数据,同样要附带在这里。这部分附加数据,是所有客户端发送的数据包都必须携带的。
锐捷检验过 md5 数值后,就会返回一个成功的数据包了,接下来就进入了心跳协议了
锐捷检验过 md5 数值后,就会返回一个成功的数据包了,这个成功的数据包里,包含又一个 随机数种子。 这个随机数种子还经过了一定的混淆算法。需要首先反向解密。
解密后,每次发送心跳包钱,都将这个数字+1. 并将加1 后的数字再次加密。 解密后,再附带锐捷那一套冗长的数据,合并后的数据即可发送了。
心跳包发送频率可以控制在每分钟一个即可。