在技术支持VPN(IPSec)配置的过程中,有些过程是比较痛苦的。遂写成这篇纯粹的“配置”文档,希望能够减轻彼此的痛苦,对大家以后在测试、上点,技术排错,定位问题有所帮助。本文档不包括所有的配置命令细节,所有的配置命令细节请参考相关的配置手册。十分感谢迈普李强先生提供相关资料.今天提供第一章节建立vpn的概念.1.建立VPN的概念或许您想迫不及待的翻到后面的配置案例上去,但是还是建议您能够耐下心来将这一节看完。这里所说的VPN是指IPSec,不是指VPDN(L2TP)。1.1.VPN是什么?能够实现什么功能?VPN是虚拟私网(VirtualPrviateNetwork)的简称。假如有两个分支机构需要互联,我们看看传统的解决方案:传统的解决方案是租用电信的DDN或者FR线路。优点是显而易见的,可靠、安全。缺点也是显而易见的,成本太高。我们再看看VPN的解决方案:大家可以看到,网络图都基本相似,只是接入的地方换成了VPN设备(我们的安全路由器其实也是VPN设备,只是为了突出其VPN功能,在图中标识成VPN),中间不再是电信的DDN或者FR网络,而是廉价的Internet。也就是说,采用VPN后,你只要向电信或者联通、广电等ISP申请Internet接入即可轻松实现互联。1.2.VPN是如何实现类似于专线的功能的?VPN是采用了IPSec协议在封装报文,将封装后的加密报文通过Internet进行传输,基于密码学的数学技术能够保证该加密报文不能够轻易解密和篡改。IPSec是一组协议族,一般有两种协议ESP(EncapsulationSecurityPayload,封装安全载荷)和AH(AuthenticationHead,认证头)。前者能够加密和验证,后者仅仅提供验证。两者都支持验证,其区别是后者验证的范围更广(AH的验证范围包括IP报头,正是由于这一点,导致与NAT设备存在根本矛盾)。在目前的实际使用中,一般仅仅使用ESP。注释:1、加密:加密是指输入明文和密钥,结果产生密文。加密的两个重要的要素是密钥和加密算法。业界公认的看法是加密算法必须公开。目前路由器和VPN3020支持DES、3DES、AES等加密算法,另外也支持国密办的SSP02算法。2、验证:验证可以简单的类比为校验和。是为了保证数据在传送过程中没有被篡改。比校验和强大的地方在于:中途更改数据了以后,可以重新计算校验和,而验证算法可以避免这一点。或许您会以为既然如此,也可以更改数据了以后,重新用验证算法计算一次不就可以了。事实上确实如此,故此,人们在验证算法上加入了消息验证码(HMAC),在运行验证算法的时候,还加入了一串密钥——消息认证码,由于篡改者无从知晓该消息验证码,因此可以保证数据的完整性。以下是摘自《VPN3020与SSL600的应用对比.doc》文档中的章节:IPSec,顾名思义,是IP层的安全(Security)。它是工作在IP层,对IP层的数据进行加密(就是这一特性导致与SSL600的应用环境存在差异,后面还要详细讲述)。IPSec协议有两种模式——传送模式和通道模式(tunnel),传送模式在这里不作阐述。对于VPN网关来说,只有通道模式才有意义。下图说明通道模式对报文的处理。下面我们从一个实例来说明IPSecVPN网络建立后是如何对报文进行封装和处理的。3020(A)当报文到达3020的时候,我们知道两个局域网的地址均是内网地址,在Internet是无法路由的。怎么办呢?如果要想报文能在Internet上传输,必须要求源和目的均是公网IP地址。IPSecVPN的处理方式是给该报文新封装了一层IP报头,新IP报头的源IP地址是3020(A)的出口地址(1.1.1.1),目的地址是3020(B)的出口地址(2.2.2.2),因此,经过3020处理后的报文如图2,其中ESP尾部数据是主要是填充使用的。这时候,新的IP报文就可以在Internet上传输,并且原来的IP报文也已经被加密。达到3020(B)的时候,3020(B)对该报文进行解密,得到原来的报文,如图3。该报文目的地址是192.168.2.1,就可以访问PC(B)。回来的过程与此类似,不再赘述。从上面的分析中,我们可以看出IPSecVPN的部署能够实现局域网之间的互联,对IP层之上应用是透明的,也就是说,不管上层是什么协议,如TCP、UDP、ICMP,都可以互通。VPN配置—从入门到精通:VPN所遇到的问题2008-10-5来源:迈普作者:佚名点击:次在技术支持VPN(IPSec)配置的过程中,有些过程是比较痛苦的。遂写成这篇纯粹的“配置”文档,希望能够减轻彼此的痛苦,对大家以后在测试、上点,技术排错,定位问题有所帮助。本文档不包括所有的配置命令细节,所有的配置命令细节请参考相关的配置手册。十分感谢迈普李强先生提供相关资料.今天提供第二章节VPN所遇到的问题2.VPN所遇到的问题如果你仅仅只是在客户面前摆上两台路由器或者VPN3020,然后对他说,我们来搭建环境测试一下VPN哈,OK,这一节您可以跳过。如果你是要实际上点、部署VPN网络和客户吹吹VPN,建议还是看看。本节包括以下专题:1、动态加密映射2、NAT穿越3、身份认证2.1.动态加密映射前面我们谈到过,建立VPN隧道需要两端都接入公网,在一般情况下,每建立一条隧道就需要两端做相应的配置,并且,在上面的解说中,我们也看到应该知道两端的公网地址。这样在实际使用中就会碰到两个问题:1、假如一端是ADSL或者PPPoE动态拨号加入,对端并不知道本端的IP。2、假如中心VPN局端下面挂接100节点,那是否在中心的VPN节点上需要100条隧道的配置?可以说,动态加密映射功能的推出就是为了解决这两个问题的。动态加密映射,一般是用在固定IP地址端(假如两端都是动态获取IP地址,以我们目前的VPN设备是无法提供解决方案的),而不需要知道对端的IP(对端的IP不管是静态还是动态都没有关系)。简单讲述一下动态加密映射的基本实现原理。对此不感兴趣的读者可以略过,也可以在阅读完实际配置案例后在回过头来看看这个。动态加密映射,准确的说,并不是IPSec或者IKE协议族所规定,只是研发人员在IPSec实现中,为了解决类似于这样问题而提出来的一个概念。说起来,也很简单。在了解动态加密映射之前,我们先了解一下静态加密映射(就是两端地址都是固定的情况),在静态加密映射配置完成以后,就有了一条“连接”,在路由器上面可以通过showcryptoisakmpconnection来查看该连接的内容。下面以3.2节的配置案例为例:下面是在MP801b上面show的信息。router#shcryptoisakmpconnection1connectionid:1conncorrespondingcryptomapname:map1mapseq:1conncorrespondingcryptomapentryseq:1newestisakmpsaintheconn:1newestipsecsaintheconn:2connlocalendaddr:2.2.2.1connlocalport:500connotherendaddr:1.1.1.1connpeerport:500conncorrespondingflow:srcaddr:192.168.2.0mask:255.255.255.0port:0proto:0dstaddr:192.168.0.0mask:255.255.255.0port:0从中可以很清楚的看出,静态加密映射,像对端的peer地址,所要保护的数据流等都已经知道。动态加密映射配置完成以后,也有一条“连接”,在路由器上也可以通过showcryptoisakmpconnection来查看来连接的内容。下面以3.2节的配置案例为例下面是从MP2692上面show出来的信息MP2692#showcryptoisakmpconnection1connectionid:1conncorrespondingcryptomapname:map1mapseq:2conncorrespondingcryptomapentryseq:1newestisakmpsaintheconn:0newestipsecsaintheconn:0connlocalendaddr:1.1.1.1connlocalport:500connotherendaddr:0.0.0.0connpeerport:500conncorrespondingflow:srcaddr:0.0.0.0mask:0.0.0.0port:0proto:0dstaddr:0.0.0.0mask:0.0.0.0port:0从中可以看出,动态加密映射配置完成以后,除开本地地址是已知的外,其余都是未知,可以将其想象成一个模板,他等待对端来和他发起协商。每来一个连接,他就是实例化一个新的连接,该连接里面就能够包含所有完整的信息。因此,从上面的分析,也可以很容易理解,对于配置了动态加密映射的一端,他只能够作为响应方(Response),不能作为发起方(Initialization)——原因是他不知道对端VPN的地址。当对端发起协商并且成功的时候,show的连接如下:MP2692#shcryptoisakmpconnectionconnectionid:2conncorrespondingcryptomapname:map1mapseq:2conncorrespondingcryptomapentryseq:2connectionid:1conncorrespondingcryptomapname:map1mapseq:2conncorrespondingcryptomapentryseq:1注意:showconnection多了一条连接2,再show连接2的内容:MP2692#shcryptoisakmpconnection2connectionid:2conncorrespondingcryptomapname:map1mapseq:2conncorrespondingcryptomapentryseq:2newestisakmpsaintheconn:1newestipsecsaintheconn:2connlocalendaddr:1.1.1.1connlocalport:500connotherendaddr:2.2.2.1connpeerport:500conncorrespondingflow:srcaddr:192.168.0.0mask:255.255.255.0port:0proto:0dstaddr:192.168.2.0mask:255.255.255.0port:02.2.NAT穿越在了解NAT穿越之前,我们先看看在实际技术支持中的一个案例。案例1:网络拓扑当时技术支持人员反映的情况是加上我们的NAT设备以后,用户的VPN网络就不通,去掉NAT设备,直接接到公网上,VPN网络就没有问题,见图5。故此技术人员判断是NAT设备的问题。其实这是典型的IPSec穿越NAT(NAT-T)问题。类似还有碰到的我们技术人员反映的将VRC(VirturalRemoteClient,安装在PC上面的VPN客户端软件)的PC接入公网就能够访问总部内网服务器,而挂接在NAT设备的后面就发现虽然能够建立隧道,但是无法访问总部内网服务器。为了不过早的涉入IPSec和IKE的细节,将NAT和IPSec的冲突原理和能够建立隧道但是无法访问内部网络的原因放在附录。遇到这种情况,解决方式是使用支持NAT穿越功能的VPN设备。我们的VPN3020、路由器4.2.6的出厂版本以及VRC02版本均支持NAT穿越,并且他们的NAT穿越互相兼容。此外,我们的NAT穿越能够兼容微软和NetScreen的NAT穿越。有关NAT穿越的实现原理见附录4.3.2NAT穿越的解决方案。2.3.身份认证身份认证本属于IKE细节的内容,详细的阐述是上百页的R