2、 假如中心VPN局端下面挂接100节点,那是否在中心的VPN节点上需要100条隧
道的配置?
可以说,动态加密映射功能的推出就是为了解决这两个问题的。动态加密映射,一般是用在固定IP地址端(假如两端都是动态获取IP地址,以我们目前的VPN设备是无法提供解决方案的),而不需要知道对端的IP(对端的IP不管是静态还是动态都没有关系)。
简单讲述一下动态加密映射的基本实现原理。对此不感兴趣的读者可以略过,也可以在阅读完实际配置案例后在回过头来看看这个。
动态加密映射,准确的说,并不是IPSec或者IKE协议族所规定,只是研发人员在IPSec实现中,为了解决类似于这样问题而提出来的一个概念。说起来,也很简单。
在了解动态加密映射之前,我们先了解一下静态加密映射(就是两端地址都是固定的情况),在静态加密映射配置完成以后,就有了一条“连接”,在路由器上面可以通过show crypto isakmp connection来查看该连接的内容。下面以3.2节的配置案例为例:
下面是在MP801b上面show的信息。 router#sh crypto isakmp connection 1 connection id: 1
conn corresponding crypto map name: map1 map seq: 1 conn corresponding crypto map entry seq: 1 newest isakmp sa in the conn: 1 newest ipsec sa in the conn: 2 conn local end addr: 2.2.2.1 conn local port:500 conn other end addr: 1.1.1.1 conn peer port:500 conn corresponding flow:
srcaddr: 192.168.2.0 mask: 255.255.255.0 port: 0 proto: 0 dstaddr: 192.168.0.0 mask: 255.255.255.0 port: 0
从中可以很清楚的看出,静态加密映射,像对端的peer地址,所要保护的数据流等都已经知道。动态加密映射配置完成以后,也有一条“连接”,在路由器上也可以通过show crypto isakmp connection来查看来连接的内容。下面以3.2节的配置案例为例
下面是从MP2692上面show出来的信息 MP2692#show crypto isakmp connection 1 connection id: 1
conn corresponding crypto map name: map1 map seq: 2 conn corresponding crypto map entry seq: 1 newest isakmp sa in the conn: 0 newest ipsec sa in the conn: 0 conn local end addr: 1.1.1.1 conn local port:500 conn other end addr: 0.0.0.0 conn peer port:500 conn corresponding flow:
srcaddr: 0.0.0.0 mask: 0.0.0.0 port: 0 proto: 0 dstaddr: 0.0.0.0 mask: 0.0.0.0 port: 0
从中可以看出,动态加密映射配置完成以后,除开本地地址是已知的外,其余都是未知,可以将其想象成一个模板,他等待对端来和他发起协商。每来一个连接,他就是实例
化一个新的连接,该连接里面就能够包含所有完整的信息。因此,从上面的分析,也可以很容易理解,对于配置了动态加密映射的一端,他只能够作为响应方(Response),不能作为发起方(Initialization)——原因是他不知道对端VPN的地址。当对端发起协商并且成功的时候,show的连接如下:
MP2692#sh crypto isakmp connection connection id: 2
conn corresponding crypto map name: map1 map seq: 2 conn corresponding crypto map entry seq: 2
connection id: 1
conn corresponding crypto map name: map1 map seq: 2 conn corresponding crypto map entry seq: 1
注意:show connection多了一条连接2,再show连接2的内容:
MP2692#sh crypto isakmp connection 2 connection id: 2
conn corresponding crypto map name: map1 map seq: 2 conn corresponding crypto map entry seq: 2 newest isakmp sa in the conn: 1 newest ipsec sa in the conn: 2 conn local end addr: 1.1.1.1 conn local port:500 conn other end addr: 2.2.2.1 conn peer port:500 conn corresponding flow:
srcaddr: 192.168.0.0 mask: 255.255.255.0 port: 0 proto: 0 dstaddr: 192.168.2.0 mask: 255.255.255.0 port: 0
2.2.NAT穿越
在了解NAT穿越之前,我们先看看在实际技术支持中的一个案例。
案例1:网络拓扑
当时技术支持人员反映的情况是加上我们的NAT设备以后,用户的VPN网络就不通,去掉NAT设备,直接接到公网上,VPN网络就没有问题,见图5。故此技术人员判断是NAT设备的问题。
其实这是典型的IPSec穿越NAT(NAT-T)问题。类似还有碰到的我们技术人员反映的将VRC(Virtural Remote Client,安装在PC上面的VPN客户端软件)的PC接入公网就能够访问总部内网服务器,而挂接在NAT设备的后面就发现虽然能够建立隧道,但是无法访问总部内网服务器。为了不过早的涉入IPSec和IKE的细节,将NAT和IPSec的冲突原理和能够建立隧道但是无法访问内部网络的原因放在附录。
遇到这种情况,解决方式是使用支持NAT穿越功能的VPN设备。我们的VPN3020、路由器4.2.6的出厂版本以及VRC02版本均支持NAT穿越,并且他们的NAT穿越互相兼容。此外,我们的NAT穿越能够兼容微软和NetScreen的NAT穿越。
有关NAT穿越的实现原理见附录4.3.2 NAT穿越的解决方案。
2.3.身份认证
身份认证本属于IKE细节的内容,详细的阐述是上百页的RFC文档。在这里只是想通过简单的说明让大家了解为什么需要身份认证,以及在实际应用中使用那些身份认证。
2.3.1.为什么需要身份认证?
就以图4中的网络为例,总部有一台VPN接入设备,下端有很多分支VPN设备,这时
候,假如没有一种机制来保证和总部VPN建立隧道的下端是合法的,就有可能存在攻击者随便拿一台VPN设备和总部VPN建立隧道,进而能够访问总部内部网络。显然,这样的VPN网络是存在太大的风险的。或许您可能这样想,在下端弄一台VPN设备不是那么容易吧。那么,请再想想,假如攻击者或者说信息窃取者使用VRC呢?要知道现在的VRC客户端软件在Internet上都可以下载。如果不能保证接入VPN网络的设备或者VRC是合法的,就会存在极大的风险。
2.3.2.VPN的两端实体是如何互相认证的?
一提到这个问题,我肯定,聪明的您肯定想到了一种方式。在网络上、日常生活中很多地方都存在这种认证,例如ftp登录需要口令,在ATM取款机上取款需要输入存折密码,熟悉OSPF协议的人知道和路由器和邻居之间都可以设置认证口令。因此,在VPN的两端实体之间认证也存在类似的认证方式——预共享(Preshare)。简单的说,预共享就是两端在进行协商通信之前,都配置一串相同的字符串。可以说说路由器上和VPN3020上配置预共享密钥的命令:
crypto isakmp key maipustring address A.B.C.D
其实,这就是预共享密钥最大的弱点,在动态加密映射情况下(不理解什么是动态加密映射,请参阅2.1 动态加密映射),目前我们VPN3020和路由器上面只能配置一个对端为any的预共享密钥。
crypto isakmp key maipustring any
其缺点是显而易见的——所有的对端都使用一个相同的预共享密钥,通俗的说,只要里面有一个“叛徒”“出卖”了预共享密钥,整个IPSec的安全体系就全部崩溃(当然,这些也是需要较深厚的技术作为基础的,也不是随便就可以窃取到其信息的,仅仅是从理论上说。故此大家不必担心这样的配置)。虽然如此,从配置来说,这样确实很方便。也很容易配通。
综上,我们能够看出预共享密钥的两个局限性: