虚拟专用网(Virtual Private Network,VPN)是指在公用网络上建立专用网络的技术。它是两个专用网络通过一个公用网络相互连接的一种方法。其之所以称为虚拟网,主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台(如Internet、ATM(异步传输模式)、Frame Relay(帧中继)等)之上的逻辑网络,用户数据在逻辑链路中传输。它涵盖了跨共享网络或公共网络的封装、加密和身份验证链接的专用网络的扩展。VPN技术原来是路由器具有的重要技术之一,目前交换机、防火墙设备及 Windows等软件都支持VPN功能。一句话,VPN的核心就是在利用公共网络建立虚拟私有网。
因此,VPN被定义为通过一个公用网络建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的通道。
通常,VPN网关采取双网卡结构,外网卡使用公网IP接入Internet。
如果网络1的终端A需要访问网络2的终端B,则其发出的访问数据包的目标地址为终端B的IP地址(内部IP)。网络1的VPN网关在接收到终端A发出的访问数据包时,对其目标地址进行检查。如果目标地址属于网络2的地址,则将该数据包进行封装,封装的方式根据所采用的VPN技术不同而不同。同时,VPN网关会构造一个新数据包(VPN数据包)并将封装后的原数据包作为VPN数据包的负载,VPN数据包的目标地址为网络2的VPN网关的外部地址。
网络1的VPN网关将VPN数据包发送到Internet中,因为VPN数据包的目标地址是网络2的VPN网关的外部地址,所以该数据包将被Internet中的路由正确地发送给网络2的VPN网关。
网络2的VPN网关对接收到的数据包进行检查,如果发现该数据包是从网络1的VPN网关发出的,即可判定该数据包为VPN数据包,并对该数据包进行解包处理。解包的过程主要是,先将VPN数据包的包头剥离,再将数据包反向处理还原成原始的数据包。
网络2的VPN网关将还原后的原始数据包发送至目标终端B,因为原始数据包的目标地址是终端B的IP,所以该数据包能够被正确地发送至终端B。在终端B看来,它收到的数据包就和从终端A直接发过来的一样。
从终端B返回终端A的数据包的处理过程和上述过程一样,这样两个网络内的终端就可以相互通信了。
通过上述说明可以发现,在VPN网关对数据包进行处理时,有两个参数对!于VPN通信十分重要:原始数据包的目标地址(VPN目标地址)和远程VPN网关地址。根据VPN目标地址,VPN网关能够判断对哪些数据包进行VPN处理,对于不需要处理的数据包通常可直接转发到上级路由;远程VPN网关地址则指定了处理后的VPN数据包发送的目标地址,即VPN通道的另一端VPN网关地址。由于网络通信是双向的,因此在进行VPN通信时,通道两端的VPN网关都必须知道VPN目标地址和与此对应的远端VPN网关地址。