一、基于CDMA1X的企业VPDN无线网络系统
1.企业VPDN网络组成
VPDN技术是利用隧道技术,通过在专用或公用网络上建立逻辑隧道,对网络层进行加密以及采用口令保护、身份验证等措施而实现的。CDMA1X分组网的VPDN业务是以高速分组数据网为承载,为企业建立VPDN虚拟专用内部网络,使企业用户无论漫游到何处,均可采用无线上网卡+PC方式进入企业内部专网。企业用户通过CDMA1X分组域的接入认证,在PDSN和企业网之间建立起专用隧道,然后通过企业网的认证后,LNS的DHCP服务为拨入用户分配指定的内网ip地址,终端经过分组网的PDSN与企业的LNS间建立起PPP连接,用户传输的数据流通过隧道到达企业网,就像用户直接通过专线连接到企业网一样。企业VPDN业务的接入如图1所示。
点击查看大图图1企业VPDN业务接入图
2.加入AAA二次认证的VPDN组网模式
AAA二次认证的RADIUS服务器和DHCP服务器与企业LNS设备都架设在企业内部网络中,企业用户的认证数据和配置由企业自己完成,企业LNS要给本企业的用户分配IP地址,对于运营商只需要配置企业VPDN的认证数据。
如图2所示,RADIUS和DHCP服务器架设在企业网络内部,拨号用户的治理,IP地址的分配都可在企业内部完成,全部由企业把握,完全和第三方无关。
CDMA1X网络凭借分组数据技术的先进性,为企业客户提供了多种无线VPDN业务解决方案,它无论在数据传输速度上,还是在构建VPDN企业专网的安全性和治理性方面,都为企业客户提供了优质安全的组网方案。而更为重要的是以CDMA1X高速分组数据网络为承载网,建立起的VPDN专网,将为公司、银行、公安、医疗等企业用户,提供随时随地的快速、安全、方便的企业专网访问,这为企业用户带来运营成本的缩减.
图2 加入二次AAA认证的企业VPDN网络结构图三、解决方案概述
1.目前存在的问题
目前使用基于CDMA1X技术建立的企业VPDN网络存在两个问题:一是已有系统只验证用户名和密码,而没有将IMSI号码加入验证,这样只要知道用户名和密码,任何人都可以拨号进入企业的内网,这就造成了很大的安全隐患;二是已有系统不能根据用户名来分配固定IP地址,只能得到动态IP地址,所以每次拨号上来的用户终端IP地址都不同,这就造成了很多需要固定IP地址的应用不能正常工作。
从ISP提供服务方面来看,这两个问题是由于已有系统是为大众用户提供无线上Internet网的,为了方便使用,拨号上网的每个用户的用户名和密码都一样,通用的,用户名和密码都是card,它不需要根据IMSI认证,所以系统也就不对IMSI认证。
同样的原因,ISP的目的是为用户提供上网浏览服务,不需要固定IP地址,所以当用户拨号上网时,系统都是在预先配置好的地址池中动态的为用户分配IP地址。
从技术层面上来看,用户拨号接入网络有两步,当用户拨号时先连接到Radius服务器做请求接入认证;然后再向DHCP服务器请求IP地址。这两步都是独立的。现有的Radius服务器只提取属性用户名和密码,而不提取IMSI号码做验证。在使用企业VPDN业务时,由于现有的DHCP服务软件只能根据MAC地址分配IP地址,而无线上网设备却没有MAC地址,所以也只能为用户分配动态IP地址。而IMSI也不能和IP地址绑定,因为现有CDMA1X网络中的设备NAS不支持Radius分配IP地址,而且在用户拨号上来时只将用户名打包发送到DHCP服务器,所以DHCP服务器只能根据用户名绑定IP地址。
2.解决问题的办法
以上问题可归结为二次AAA认证和DHCP分配IP地址两个问题,是相互独立的两个过程。需要根据网络实际情况定制AAA服务和DHCP服务,将IMSI认证和用户名绑定IP的功能加入。这就可以软件方式来解决此问题。
(1)二次AAA认证
在LNS架设1台Radius服务器,用来做AAA二次认证。CDMA1X网络侧的AAA服务器用来识别拨入用户是否是企业VPDN用户,并将相应的LNS地址、密码等必要信息发送给PDSN,PDSN再与LNS协商建立L2TP隧道。在隧道建立以后,企业内部的AAA对企业用户的用户名和密码及IMSI进行验证鉴别,这样用户治理方便,而且与网络运营商无关,接入权限都把握在企业。
(2)DHCP分配固定IP地址
在LNS架设1台DHCP服务器,用来做IP地址分配。NAS会将通过AAA认证用户的DHCP请求包经过LNS发送到DHCP服务器,由DHCP服务器解析数据包后,提取用户名,然后验证本地是否有此用户,假如有就将预先设置的IP地址分配给用户,没有此用户就丢弃该数据包。
完整的处理过程如图3所示,假设一个企业的VPDN账号是nxs.133vpdn.xj,这是由中国联通为用户分配的,企业一个用户的VPDN用户名是user1,密码是user1,这都由企业自己设置,那么完整的登录用户名就是user1@nxs.133vpdn.xj。用户进入企业网络后,就如同在内部上局域网一样,中间的隧道对用户来说是完全透明的。具体步骤如下:
用户使用CDMA1X无线设备拨号;
基站和基站控制中心负责为此次连接分配各种资源,并建立用户和PDSN的连接;
PDSN和用户终端开始建立PPP协商,并选用认证方式PAP 或CHAP;
分组网的AAA根据PDSN打包发送的用户信息,判定是否VPDN用户,假如是就返回相应的LNS地址以及建立隧道用的共享密钥。
PDSN根据收到的LNS信息,和LNS建立L2TP隧道;
用户终端和LNS之间建立PPP协商;
企业AAA对用户终端进行验证PAP或CHAP;
通过后,用户终端会发送DHCP的广播包,向DHCP服务器请求IP地址;
DHCP的发现包通过L2TP的隧道进入LNS;
LNS的DHCP服务器收到后,验证本地是否有此用户,有就将和用户名匹配的IP
地址发送给用户;
终端用户收到DHCP服务器发送的offer包后,取得IP地址,从而进入了企业网络。
四、具体实现
1.实现方式
在建立企业VPDN的基础上,LNS要架设1台AAA和DHCP服务器,但由于目前的网络设备或系统软件都不提供用户名、密码和IMSI三者一起认证,和根据用户名分配IP地址的功能,所以为了解决上述问题,可使用软件解决办法,设计编制AAA服务器来解决IMSI认证问题,和编制分配IP地址的DHCP服务器。目前AAA的标准是RADIUS协议,因此工作的重点就是根据RADIUS协议并结合IMSI认证问题设计并实现AAA服务器;根据DHCP协议并结合用户名绑定问题设计并实现DHCP服务器。
2.开发环境与工具
本文所使用的开发环境是Windows2000Server,开发工具是Delphi7。由于这个应用是基于标准RADIUS协议和DHCP协议,所以可以为任何用户Windows,Unix等提供该服务。
3.RADIUS和DHCP协议基础
(1)RADIUS协议
RADIUS(RemoteAuthenticationDialIn User Service)协议最初是由Livingston 公司提出的,原先的目的是为拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议。RADIUS 是一种C/S 结构的协议,它的客户端最初就是NAS( Net access Server)服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS 协议认证机制灵活,可以采用PAP、CHAP 或者Unix 登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value 的向量进行的。
RADIUS的基本工作原理,用户接入NAS,NAS向RADIUS服务器发送Access-Require数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过md5 加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS 服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS 进行类似的认证;假如合法,给NAS返回Access-Accept 数据包,答应用户进行下一步工作,否则返回Access-Reject 数据包,拒绝用户访问;假如答应访问,NAS 向RADIUS 服务器提出计费请求Account-Require,RADIUS 服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。
RADIUS服务器和NAS服务器通过UDP协议进行通信,RADIUS服务器的1812端口负责认证,1813端口负责计费工作。
路由器或NAS上运行的AAA程序对用户来讲为服务器端,对RADIUS服务器来讲是作为客户端,当用户上网时路由器决定对用户采用何那种验证方法。下面是两种用户与路由器之间(本地验证)的验证方法CHAP和PAP,都使用MD5加密。
PAP(PassWordAuthentication PRotocol ) ,用户以明文的形式把用户名和他的密码传递给路由器, NAS根据用户名在NAS端查找本地数据库,假如存在相同的用户名和密码表明验证通过,否则表明验证未通过。
CHAP(ChallengeHandshakeAuthentication Protocol), 当用户请求上网时,路由器产生一个16字节的随机码给用户,同时还有一个ID号,本地路由器的 host name 。用户端得到这个包后,使用自己独用的设备或软件对传来的各域进行加密,生成一个response传给NAS,根据用户名在NAS端查找本地数据库得到和用户端进行加密所用的一样的密码,然后根据原来的16字节的随机码进行加密,将其结果与Response作比较,假如相同表明验证通过,假如不相同表明验证失败。
(2)DHCP协议
动态主机配置协议DHCP(DynamicHostConfiguration Protocol)属于应用层,是基于BOOTP(BOOTstrap Protocol)的BOOTP和RARP类似,是用于相对静态的环境,其中每个主机都有一个永久的网络连接,治理人员创建一个BOOTP配置文件来定义每个主机的BOOTP参数,在计算机经常移动和实际计算机数目超过了可获得的IP主机地址时,这种只提供从主机标识到主机参数的静态映射就不适用了,为此制订了DHCP,它加入了自动分配可再利用的地址和附加的配置选项的能力,DHCP从两个方式上扩充了BOOTP,第一DHCP可使计算机用一个消息获取它所需要的所有配置信息,即传送配置信息的协议。第二DHCP答应计算机快速动态的获取IP地址即动态分配IP地址的机制,DHCP建立在client-server模型上,其中指定的DHCP server分配网络地址,并向动态配置的主机传送配置参数,只有当系统治理员明确的配置主机作为DHCP服务器时主机才能作为服务器来工作。
DHCP支持三种类型的地址分配,自动分配方式中DHCP给主机指定一个永久的IP地址,动态分配方式中DHCP给主机指定一个有时间限制的IP地址,到时间或主机明确表示放弃这个地址时,这个地址可以被其他的主机使用,手工分配方式中主机的IP地址是由网络治理员指定的,DHCP只是把指定的IP地址告诉主机。在这三种方式中只有动态分配的方式可以对已经分配给主机,但现在此主机已经不用的IP地址重新加以利用,这样在给一台临时连入网络的主机分配地址,或者在一组不需要永久的IP地址的主机中共享一组有限的IP地址时,动态分配显得非凡有用。
DHCP的消息格式是建立在BOOTP消息格式上的,这样可以利用BOOTP的中继代理功能来避免在每个物理网络都建立一个DHCPserver,同时还答应现有的BOOTPclient使用DHCP server。
客户机为了分配地址和DHCP服务器进行报文交换的过程如下:
客户机在其子网内广播一个DHCPDISCOVER报文,此报文中包含关于网络地址和租用期选项的值,假如客户机和服务器不在一个子网内则BOOTP中继代理会把这个报文传给服务器;
每个收到这个报文的服务器广播一个包含可提供的网络地址和其他配置信息的DHCPOFFER报文;
客户机收到一个或多个服务器的DHCPOFFER报文后根据一定的条件从中选出一个,并向选定的服务器发送DHCPREQUEST报文,在这个请求报文中必须包含一个服务器标识以指明被选中的服务器,假如客户机在定时器超时之前没有收到DHCPOFFER报文则重发DHCPDISCOVER报文;
服务器在收到DHCPREQUEST报文后,假如可以满足请求报文中的请求则发回一个DHCPACK报文作为响应,假如不能满足请求则发回DHCPNAK报文作为响应,服务器在DHCPOFFER中提供给客户机的地址不能提供给另外一个客户机,但假如服务器没有收到客户机的DHCPREQUEST报文,则可以把在DHCPOFFER中提供给客户机的地址提供给另外的客户机;
客户机在收到包含配置参数的DHCPACK报文后对报文中提供的配置参数进行检查,同时进行配置,假如发现报文中有错误则客户机发送一个DHCPDECLINE报文,并重新开始整个过程,假如客户机收到DHCPNAK报文则重新开始整个过程;
客户机可以通过向服务器发送DHCPRELEASE报文来释放地址。
4.RADIUS及DHCP服务的实现
(1)系统分析
本系统的主要功能有两个:一是依据RADIUS协议完成对拨号用户的用户名、密码和IMSI号码三者统一认证和授权;二是依据DHCP协议为客户机绑定用户名和IP地址,完成对客户机静态地址的分配。
图3系统数据流程图由于IMSI号码和用户名都不是RADIUS和DHCP的标准属性,所以必须先要了解系统对它们的存放方式。通过用截包软件跟踪现有CDMA1X拨号系统的工作流程后,发现IMSI号码在RADIUS的Request包的属性Calling-Station-Id域内;而用户名在DHCP的Discover包的Option域的第236字节起。
所以当RADIUS服务器收到Request包时,就可从中取出用户名、密码和IMSI号码;当DHCP服务器收到Discover包时,也就可以取出用户名了。
(2)系统设计
对于一个拨号用户来说,必须是得先经过AAA认证,然后NAS才答应它向DHCP服务请求IP地址,所以对同一个用户来说,系统的处理过程是顺序的,而不是并行的,而且两个过程都是相互独立的,因此系统可按功能分为两大独立模块,RADIUS服务处理模块和DHCP服务处理模块,并以多线程运行加快处理速度。
RADIUS服务处理模块分为主要五个部分。
解析收到的数据包。该模块处理收到的数据包,首选检查是否为Request包,假如是就按RADIUS协议取出用户名密码和IMSI号码(Calling-Station-Id域)。
取得本地用户资料。该模块输入参数是用户名,然后根据用户名从本地的用户资料文件中查找该用户是否存在,假如在就取出该用户的密码返回。
验证用户。该模块根据PAP或CHAP算法来验证该用户是否合法。
记录日志。该模块记录每次发生的事件,包括用户名IMSI号码,时间等。
发送返回包。该模块将处理结果按RADIUS协议打包,并发送回客户机。
DHCP服务处理模块分为主要四个部分。
解析收到的数据包。该模块处理收到的数据包,首选检查是否为Discover包,假如是就按DHCP协议取出用户名。
取得本地用户资料。该模块输入参数是用户名,然后根据用户名从本地的用户资料文件中查找该用户是否存在,假如在就取出该用户的IP地址返回。
记录日志。该模块记录每次发生的事件,包括用户名IMSI号码,时间等。
发送返回包。该模块将处理结果按DHCP协议打包,并发送回客户机。
(3)RADIUS服务处理模块的实现
此功能要根据RADIUS协议来实现。服务器以UDP方式在1812端口监听,客户端以UDP方式发送数据,在Delphi7环境里,可使用的标准组件是TIdUDPServer,它提供了完整的服务端UDP功能,可收发数据包,可设置缓冲区等。在判定收到数据包是正常的请求包时,要记录下源地址,用于发送应答数据包。由于只需要认证和授权功能,而本地网络又不需要计费功能,所以本文也未实现计费功能,程序流程如图4所示。
图4 RADIUS服务的程序流程图(4)DHCP服务处理模块的实现
此服务根据标准的DHCP协议编制,服务器以UDP方式在67端口监听,客户端以UDP方式从68端口发送数据,在Delphi7环境里,可使用的标准组件是TIdUDPServer,它提供了完整的服务端UDP功能,可收发数据包,可设置缓冲区等。简化DHCP服务的流程如图5所示。
图5DHCP服务的程序流程图(5)LNS路由器的配置
为了和CDMA1X网络的PDSN建立VPDN隧道,和建立AAA和DHCP服务器的连接,在LNS的路由器上需要如下主要配置(以CISCO为例,OS需12.2以上):
1、指定DHCP服务器地址,命令:ipdhcp-server 10.0.0.58;
2、启动VPDN,命令:vpdn enable ;
3、配置L2TP;
4、配置Virtual-Template1,命令:peerdefault ip address dhcp,compress mppc, ppp authentication pap or chap ;
5、指定RADIUS服务器地址,命令:radius-serverhost 10.0.0.58 auth-port 1812 acct-port 1813 key.
(6)方案的适用范围
由于目前CDMA1X无线移动网络的实际传输速率在80~100kbit/s,所以在行业应用中,只要应用的传输速率低于100kbit/s,就可使用此套方案建立企业内部网络。
在试验中此服务程序连续运行了两周,使用了4个终端拨测4300多次,回应NAS请求包的时间都在1毫秒到2毫秒,没有发生错误,证实了用软件解决此问题是可行的。
五、总结
随着移动通信技术和计算机技术的快速发展,很多企业越来越多的采用了CDMA1X移动通信技术来建立企业VPDN内部网络,完成了移动办公,监测系统的数据集中等应用。本文结合目前中国联通CDMA1X网络实际情况提出了一种软件解决办法,该方案是在现有的CDMA1X分组网环境里,利用VPDN技术为企业建立内部无线网络,然后在企业LNS架设一台AAA和DHCP服务器,该服务器根据标准的RADIUS及DHCP协议编制,并和现有CDMA1X网络设备相匹配。从而简单低成本的解决了的该问题。