VPN网络结构 |
| VPN可分为网络VPN与远程访问VPN。网络VPN是为了实现两个局域网之间通过Internet互连,两个局域网内的终端都能够使用另一个网络的内部资源,就像他们在一个局域网的不同子网一样;远程访问VPN是为了实现接入互联网的终端用户能够通过Internet访问到企业局域网内部的网络资源,该终端对局域网内部资源的使用方式与其它局域网内部终端是一致的。采用IPSec协议,这两种VPN在实现原理上是完全一致的,名称的不同主要是为了便于在应用途径上加以区分。 |
下面所示的是一个标准的VPN网络结构示意图,可以实现用户对VPN应用的两个方面需求:
1)在不同的异地局域网内的主机能够相互访问;
2)接入Internet主机能够与在局域网内主机相互访问; |
|
| 为了能够实现上述用户需求,可以采用多种VPN技术,其中VPN隧道是一种使用最为广泛的技术,利用该技术构建的VPN在经济性、可扩展性、使用方便性上都具有明显的优势。如图所示,为了实现VPN隧道,需要为每个局域网配置一个VPN网关,同时在移动主机上运行VPN客户端软件,这样在两个VPN网关之间、VPN客户端软件与VPN网关之间就可以根据预先设置的VPN策略建立VPN隧道,从而保证两个局域网内的终端、移动主机与某局域网内的终端实现相互通讯 |
| |
| 对于采用隧道技术实现的VPN网络而言,局域网与独立主机没有本质的区别,我们可以将一个独立主机看作特殊的局域网,即只有一个终端的局域网。同时,局域网的VPN网关和在主机上运行的VPN客户端软件也没有本质的区别,可将VPN客户端软件看作主机的VPN网关。为了便于描述,在下面的说明中我们将所有的局域网或独立主机都统称为局域网,同时将VPN网关和VPN客户端软件都统称为VPN网关。 |
|
|
VPN隧道的实现原理 |
| 众所周知,由于公共IP的短缺,我们在组建局域网时,通常使用保留地址作为内部IP,这些保留地址在Internet上是无法被路由的,所以在正常情况下我们无法直接通过Internet访问到在局域网内的主机。为了实现这一目的,我们需要使用VPN隧道技术,其实现过程可以通过下面的图示说明: |
|
| - |
通常情况下,VPN网关采用双网卡结构,外网卡使用公共IP接入Internet; |
| - |
如果网络一的终端A需要访问网络二的终端B,其发出的访问数据包的目标地址为终端B的IP (内部IP); |
| - |
网络一的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查,如果目标地址属于网络二的地址,则将该数据包进行封装,封装的方式根据所采用的VPN技术不同而不同,同时VPN网关会构造一个新的数据包(VPN数据包),并将封装后的原数据包作为VPN数据包的负载,VPN数据包的目标地址为网络二的VPN网关的外部地址; |
| - |
网络一的VPN网关将VPN数据包发送到Internet,由于VPN数据包的目标地址是网络二的VPN网关的外部地址,所以该数据包将被Internet中的路由正确地发送到网络二的VPN网关; |
| - |
网络二的VPN网关对接收到的数据包进行检查,如果发现该数据包是从网络一的VPN网关发出的,即可判定该数据包为VPN数据包,并对该数据包进行解包处理。解包的过程主要是先将VPN数据包的包头剥离,在将负载通过VPN技术反向处理还原成原始的数据包; |
| - |
网络二的VPN网关将还原后的原始数据包发送至目标终端,由于原始数据包的目标地址是终端B的IP,所以该数据包能够被正确地发送到终端B。在终端B看来,它收到的数据包就从终端A直接发过来的一样; |
| - |
从终端B返回终端A的数据包处理过程与上述过程一样,这样两个网络内的终端就可以相互通讯了。 |
|
| 通过上述说明我们可以发现,在VPN网关对数据包进行处理时,有两个参数对于VPN隧道通讯十分重要:原始数据包的目标地址(VPN目标地址)和远程VPN网关地址。根据VPN目标地址,VPN网关能够判断对哪些数据包需要进行VPN处理,对于不需要处理的数据包通常情况下可直接转发到上级路由;远程VPN网关地址则指定了处理后的VPN数据包发送的目标地址,即VPN隧道的另一端VPN网关地址。由于网络通讯是双向的,在进行VPN通讯时,隧道两端的VPN网关都必须知道VPN目标地址和与此对应的的远端VPN网关地址。 |
|
|
网络接入方式对VPN影响 |
| 由于公共IP非常缺,为了满足更多用户能够同时使用Internet,多数接入服务商都使用动态公共地址分配或私有地址NAT的方式为用户提供接入服务,按照接入地址提供方式的不同,可将Internet接入服务分为: |
- 静态公共地址接入:局域网使用一个公共地址接入Internet,该公共地址是固定的,如DDN接入。
- 动态公共地址接入:局域网使用一个公共地址接入Internet,该公共地址是每次用户接入Internet时服务商动态分配的,如ADSL或普通拨号上网。
- 私有地址接入:VPN网关使用一个私有地址并通过前置NAT网关接入Internet,典型的例子是通过小区宽带或楼宇宽带接入Internet的网络或主机。
|
| 采用私用地址接入Internet的主机是不能被其它在Internet上的主机访问到的;对于采用静态地址接入Internet的主机,由于我们能够预先知道其地址,所以能够随时访问;而对于采用动态公共地址接入Internet的主机,除非我们能够知道它的当前地址,否则也是无法访问到的。为了解决动态公共IP的寻址问题,目前出现了一种名为DDNS的服务(动态域名解析),该服务的功能是主机在接入Internet后能够将其当前的IP地址实时绑定在一个固定的域名上,这样任何人都可以通过域名访问到该主机。该服务使用非常简单,只需要在主机上运行一个小程序并在服务商那里进行注册即可。目前国内该服务有免费的和收费的两种,免费服务商中比较知名的有花生壳,其客户端软件非常好用,而且服务稳定;收费服务的价格一般在200元/年左右。 |
| 一个实用的VPN系统需要尽可能满足在采用各种接入方式的局域网之间都能够实现VPN隧道通讯,对于VPN网关而言,我们可以根据它是否能被访问进行如下定义: |
- 可寻址公共地址网关 :在Internet上,可通过固定的地址或域名访问到的VPN网关。
- 不可寻址公共地址网关 :在Internet上,由于无法预先知道地址所以不能被访问到的网关。
- 私有地址网关 :使用私有地址,在Internet上根本就无法访问到的网关。
|
| 通过对VPN隧道实现原理的说明可以看出,为了实现VPN隧道,隧道两端的VPN网关必须知道另一端VPN网关的访问地址和在它后面的内部网络地址。知道对方的内部网络地址并不困难,因为内部网络地址是由用户定义并管理的。但是要想知道对方VPN网关地址就不容易了:对于不可寻址公共地址网关我们是无法预先知道其地址的;而对于私有地址网关的情况就更复杂了,在没有接到其访问请求时,我们是无法知道前端NAT设备为它分配的端口,所以也无法主动与其进行通讯(关于NAT技术的原理和应用,请参考相关技术资料)。 |
| 采用IPSec技术建立VPN隧道时,首先双方VPN网关需要进行IKE协商,IKE协商的主要目的是对通讯双方进行身份验证,同时确定VPN隧道所使用的一些参数,如使用的加密算法、会话密钥、密钥更新周期等等;同时,IKE协商的另一个重要功能就是让隧道双方都能够知道对方的VPN网关地址和内部网络地址。IKE协商是一个标准的UDP(常用IP通讯协议)通讯过程,这要求发起方必须能够访问到对方,所以被访问的一方必须使用公共IP,同时发起方必须知道对方的IP地址。以下是在不同类型网关之间建立VPN隧道需要遵守的条件: |
|
可寻址公共地址网关 |
不可寻址公共地址网关 |
私有地址网关 |
可寻址公共地址网关 |
|
|
|
不可寻址公共地址网关 |
|
|
|
私有地址网关 |
|
|
|
|
| 注: |
|
|
 |
—— |
可以建立VPN隧道,可以相互发起建立VPN隧道的IKE协商请求 |
 |
—— |
可以建立VPN隧道,只能单方向发起建立VPN隧道的IKE请求,箭头指向被动接受请求的一方 |
 |
—— |
可以建立VPN隧道,只能单方向发起建立VPN隧道的IKE请求,箭头指向被动接受请求的一方 |
 |
—— |
无法进行IKE协商,所以不能建立VPN 隧道。 |
|
| 通过上图表可以看出,在两个网络之间建立VPN的基本条件是:至少有一个VPN网关必须是可寻址公共地址网关。另外需要说明的是,在IKE协商过程中,接受IKE请求的VPN网关能够判别主动发起协商的VPN网关的访问地址并自动建立一个对应的VPN隧道策略,这样双方就能够建立起VPN隧道,两边局域网内的主机也就可以相互访问了。 |
| 由于NAT协议不支持IPSec ESP(常用的VPN隧道协议)数据包通过,所以需要采用其它技术保证在私有地址网关与可寻址公共地址网关之间建立VPN隧道。目前在IPSec协议中有一项称为NAT-T的最新技术,该技术能够将ESP数据包再次封装到一个普通UDP数据包中,从而实现在私有地址网关与可寻址公共地址网关之间建立VPN隧道,采用NAT-T技术要求IKE协商的发起方必须是私有地址网关。关于NAT-T技术的详细说明已超出本文的范围,而且NAT-T技术对于用户是完全透明的,用户在建立VPN时,可将私有地址网关与不可寻址公共地址网关等同对待 。 |
|
|
| VPN通讯对局域网地址设置的要求 |
| 在VPN中,每个局域网所使用的网段必须是彼此独立的,例如:有两个局域网需要进行VPN连接,一个局域网的地址是192.168.0.0/255.255.0.0,那么另一个局域网的地址就不能使用此网段或此网段所包含的任意子网网段。 |
| 局域网地址的设置问题属于TCP/IP路由规范问题。假设两个局域网使用相同的网络地址,那么如果一个局域网内的终端向另一个网络内的终端发出访问请求,该数据包将不可能被VPN网关接收并处理,因为在它看来,此数据包的目标地址就应该在本局域网内。 |
|
|
| 典型VPN网络结构 |
|
|
|
| VPN系统所面临的安全性挑战 |
| VPN仅仅是在局域网之间通过Internet进行加密数据传输的过程,在VPN系统中,首先要保证每个局域网在接入Internet时的安全性。对于企业而言,网络接入Internet所面临的主要的安全问题包括:外部的非法攻击、内部用户对Internet资源的滥用、病毒传播。对于防范外部非法攻击和限制内部用户对Internet资源的滥用,使用防火墙产品作为网关是必须的,防火墙所使用的技术主要包括网络地址屏蔽、数据包特征代码和关键字检索、通讯状态监控、信息记录等。对于病毒,由于其传播途径有很多种,如通过Internet、磁盘拷贝、Email等途径传播,如果仅在防火墙上增加病毒过滤功能是不可能阻断所有的病毒传播方式的,而且由于病毒扫描和杀毒是一项非常耗费系统资源的工作,将会大大降低防火墙的性能,所以我们建议防范病毒最好采用专门的网络杀毒软件或在每个内部终端上安装实时杀毒软件。 |
| VPN的安全性隐患主要是:加密数据被截获破译、通讯数据被篡改、通讯双方的身份被伪造。防止这些问题的发生取决于密码算法的强度以及VPN通讯过程所使用的安全协议的安全性。就目前而言,在商用市场上(非军方及核心保密部门)IPSec协议的安全性是世界公认的;在密码算法方面,3DES、SHA1、MD5等VPN系统所经常用到的算法也具备足够的强度。 |
|
| |