基于CDMA1X的企业VPDN应用及研究——用户名和IMSI绑定及固定IP地址分配问题的解决一、基于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(RemoteAuthenticationDialInUserService)协议最初是由Livingston公司提出的,原先的目的是为拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议。RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(NetAccessServer)服务器,现在任何运行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(PasswordAuthenticationProtocol),用户以明文的形式把用户名和他的密码传递给路由器,NAS根据用户名在NAS端查找本地数据库,如果存在相同的用户名和密码表明验证通过,否则表明验证未通过。CHAP(ChallengeHandshakeAuthenticationProtocol),当用户请求上网时,路由器产生一个16字节的随机码给用户,同时还有一个ID号,本地路由器的hostname。用户端得到这个包后,使用自己独用的设备或软件对传来的各域进行加密,生成一个response传给NAS,根据用户名在NAS端查找本地数据库得到和用户端进行加密所用的一样的密码,然后根据原来的16字节的随机码进行加密,将其结果与Response作比较,如果相同表明验证通过,如果不相同表明验证失败。(2)DHCP协议动态主机配置协议DHCP(DynamicHostConfigurationProtocol)属于应用层,是基于BOOTP(BOOTstrapProtocol)的BOOTP和RARP类似,是用于相对静态的环境,其中每个主机都有一个永久的网络连接,管理人员创建一个BOOTP配置文件来定义每个主机的BOOTP参数,在计算机经常移动和实际计算机数目超过了可获得的IP主机地址时,这种只提供从主机标识到主机参数的静态映射就不适用了,为此制订了DHCP,它加入了自动分配可再利用的地址和附加的配置选项的能力,DHCP从两个方式上扩充了BOOTP,第一DHCP可使计算机用一个消息获取它所需要的所有配置信息,即传送配置信息的协议。第二DHCP允许计算机快速动态的获取IP地址即动态分配IP地址的机制,DHCP建立在client-server模型上,其中指定的DHCPserver分配网络地址,并向动态配置的主机传送配置参数,只有当系统管理员明确的配置主机作为DHCP服务器时主机才能作为服务器来工作。DHCP支持三种类型的地址分配,自动分配方式中DHCP给主机指定一个永久的IP地址,动态分配方式中DHCP给主机指定一个有时间限制的IP地址,到时间或主机明确表示放弃这个地址时,这个地址可以被其他的主机使用,手工分配方式中主机的IP地址是由网络管理员指定的,DHCP只是把指定的IP地址告诉主机。在这三种方式中只有动态分配的方式可以对已经分配给主机,但现在此主机已经不用的IP地址重新加以利用,这样在给一台临时连入网络的主机分配地址,或者在一组不需要永久的IP地址的主机中共享一组有限的IP地址时,动态分配显得特别有用。DHCP的消息格式是建立在BOOTP消息格式上的,这样可以利用BOOTP的中继代理功能来避免在每个物理网络都建立一个DHCPserver,同时还允许现有的BOOTPclient使用DHCPserver。客户机为了分配地址和DHCP服务器进行报文交换的过程如下:客户机在其子网内广播一个DHCPDISCOVER报文,此报文中包含关于网络地址和租用期选项的值,如果客户机和服务器不在一个子网内则BOOTP中继代理会把这个报文传给服务器;每个收到这个报文的服务器广播一个包含可提供