基于层次移动IPv6接入认证设计与实现
由器发出的路由通告(RA)。
2)MN触发DHCPv6客户端发送DHCP Solicit消息去发现DHCPv6服务器。
3)当服务器收到请求消息后,构造相应的Advertisement消息发给DHCPv6客户端。
4)DHCPv6客户端收到响应消息发出DHCP Request消息,在消息选项中添加新的用户名和密码密文选项。
5)DHCPv6服务器收到消息后,从中提取用户名和密文后,对密文进行解密,发送AAA认证请求消息到本地AAA服务器(AA AL)。
6)AAAL,收到认证请求消息后将其转发到家乡AAA服务器(AAAH)。
7)AAAH收到认证请求消息后,验证用户名和密码。返回认证回复消息。
8)AAAL,服务器将收到的认证回复消息转发到AAA客户端。
9)AAA客户端对收到的认证回复进行处理,构造Reply消息响应客户端请求,
10)MN根据收到的Reply消息进行判断,至此整个认证过程完成。
3、软件实现过程
在软件体系的设计上,在HMIPv6的基础上修改和添加对DHCPv6配置地址的处理。本文采用MIPL即Mobile IPv6 for Linux,版本为2.0-rc2,层次移动IP基于此实现。DHCPv6采用的是dibbler软件来实现,版本为0.3.1;AAA协议采用的是FreeRADIUS开源软件,版本为1.0.4,它包含服务器端和客户端两部分。服务器端有MYSQL开源软件,版本为4.1.7,包过滤采用Netfilter机制。
3.1 DHCPv6消息处理
在层次移动IP的启动过程中,当MN收到路由通告,发现与自己的路由缓存中维护的路由前缀不一样时,发送一个信号量启动DHCPv6客户端子进程,开始接入认证过程。在DHCPv6协议中创建用户名、密码和认证失败选项,在填充选项内容时,用户名和密码通过对MN的配置文件进行读取操作,由AAA服务器预先分配给用户。
在获取密码后通过标准的DES加密算法对原始密码采用双方协商好的密钥进行加密。由于DES只能对不大于8字节的字符进行加密,所以在加密过程中先计算原始密码的长度,如果小于或等于8字节则直接进行加密;如果大于8字节则截取前8个字节进行加密,再对剩余的字节进行相同的加密过程,把生成的密码拷贝到密码选项中。为了简化运算,在该文中默认密码字节不大于16字节,一般能满足实际运用。
在客户端消息选项中,添加用户名和密码选项的标识OPTION_CLIENT_NAI和OPTION_CLIENT_PASSWORD,通过标识对相应的选项进行处理。当客户端在构建Request消息时,把定义好的用户名和密码标识通过系统函数添加到Request消息中,完成后发送该消息给服务器。
DHCPv6服务器端收到Request消息后,通过switch语句对OPTION_CLIENT_ NAI和OPTION_CLIENT_PASSWORD标识进行处理,获取选项中的用户名和密码密文字符,其中通过DES解密算法对收到的密文使用原先加密用的密钥进行解密。假如密文大于8个字节,则先对前8个字节进行解密,之后在对剩余的字节进行解密。把解密好的密码和用户名通过字符读取操作存到AAA的配置文件中。
完成后在DHCPv6服务器创建子进程来启动AAA客户端程序,并且构造Reply报文,在其中创建一个消息队列来等待接收AAA客户端认证完成后返回的认证结果。如果收到认证成功标识,则从地址池中获取一个合法地址添加到该消息选项中完成后发送Reply消息。并且将MN的MAC地址和IP地址发送到包过滤器的访问控制列表(ACL)中;如果收到认证失败标识,则在构造的Reply消息中添加一个认证失败信息选项,该认证选项标识为OPTION_AUTH_FAIL。将认证失败信息添加到该选项中,并且删除准备分配给客户端的合法地址选项,完成后发送Reply消息。
MN对收到的Reply报文进行判断,使用switch语句对消息中各选项进行处理。如果认证成功则含有地址选项标识,从中获取合法地址分配给接口使用,MN可以使用当地网络提供的服务或者完成切换绑定认证[5]过程。如果认证失败,不含有地址选项,而含有OPTION_AUTH_FAIL选项,MN可以获取该选项中相应的出错信息,进行再次认证或是退出该网络。该过程的主要消息流程如图2所示。
图2 DHCPv6接入认证消息流程图
3.2 AAA交互过程
当DHCPv6服务器调用子进程执行AAA客户端程序后,AAA客户端将把从MN传过来的密码和用户名添加到认证请求选项中,向AAAL进行认证。AAAL将收到的消息转发给AAAH服务器,AAAH收到认证请求后进行认证。如用户名和密码正确,则返回Accecpt响应消息,标志认证成功;如用户名或者密码错误,则返回Reject响应消息,标志认证失败。AAAL收到认证回复消息后记录认证信息,下次认证时只需询问AAAL,减少认证步骤。
AAA客户端对收到的认证回复消息进行判断,通过创建消息队列,将认证回复中的认证结果标志传递给DHCPv6服务器。
3.3 包过滤
在接入路由器上安装包过滤器
- IPv6 3G应用分析(01-05)
- 基于SOCKS地IPv4向IPv6过渡技术(01-08)
- 移动IPv6路由关键技术及其优化(01-08)
- 吴建平:建设IPv6切莫重“养鸡”轻“生蛋”(01-19)
- IPv6研发与应用(01-24)
- 刘东谈IPv6标准化(01-24)