虚拟专用网络(VPN)是一种在不太安全的网络(例如公共Internet)上创建安全且加密的连接的方法。一个 VPN 的工作原理是使用共享的公共基础设施,同时保持通过安全程序和隧道协议隐私。
本文有两个主要部分。第一部分介绍了VPN的基本概念,并讨论了建立VPN连接的两种主要方法的一些细节:IP安全性(IPsec)和安全套接字层(SSL)。
第二部分介绍了VPN的基本构建模块之一,这是由IP网络创建的在两个路由器之间构建隧道的理论。
VPN基础知识
电缆或数字用户线(DSL)等租用线路具有一些出色的安全功能。一端的路由器可以信心十足地知道链路另一端的设备的身份。接收路由器也有充分的理由相信没有攻击者看到或更改传输中的数据。
VPN在通过对其他方开放的网络上发送数据时,提供与租用线路相同的安全功能。实际上,数据经常跨Internet。即使通过Internet等公共网络发送数据,VPN也可以提供一些有益的功能:
- 机密性(私密性):阻止Internet中间的任何人(中间的人)读取数据。
- 身份验证:验证VPN数据包的发件人是合法设备,而不是攻击者使用的设备。
- 数据完整性:验证数据包在通过Internet传输时未更改。
- 防重播:防止中间人复制并以后回覆合法用户发送的数据包,以使其看起来像是合法用户。
为了实现这些目标,Internet边缘附近的两个设备创建了一个VPN,有时称为VPN隧道。这些设备将头添加到原始数据包,其中包括允许VPN设备执行所有功能的字段。 VPN设备还会对原始IP数据包进行加密,这意味着原始数据包的内容对于在穿越Internet时碰巧看到该数据包副本的任何人都是无法理解的。
VPN如何运作
高速Internet连接的成本通常比许多现代租用WAN线路的成本低得多。互联网似乎无处不在,使得这种解决方案在全球范围内都可以使用。将VPN技术整合到万维网中并使用相关协议,我们可以提供廉价而又安全的通信。
下图显示了VPN隧道内部通常发生的一般情况。该图显示了在分支机构路由器和安全设备(ASA)之间创建的VPN。在这种情况下,VPN被称为站点到站点VPN,因为它连接了属于公司的两个远程站点。
该图显示了以下步骤才能确保建立连接的安全:
- 就像没有VPN一样,右侧的主机PC1(10.2.2.2)将数据包发送到Web服务器(10.1.1.1)。
- 路由器对数据包进行加密,添加一些VPN标头,添加另一个IP标头(具有公共IP地址)并转发数据包。
- 中间的一个人复制了数据包,但无法在不被注意的情况下更改数据包,并且无法读取原始数据包的内容。
- ASA-1接收数据包,确认发送方的真实性,确认数据包未被更改,然后解密原始数据包。
- 服务器S1接收未加密的数据包。
IPsec VPN
RFC 4301解释并定义了如何在连接到Internet的两个设备之间使用IPsec来提供机密性,身份验证,数据完整性和防重播。建立VPN连接不是IPsec的唯一功能,它还可以提供几种不同的选项,作为VPN连接上的附加功能。
IPsec的优势之一是其作为一种体系结构的角色,该体系结构使其可以添加到其他安全功能中,并随着时间的推移在网络中带来更高级别的安全性。IPsec功能的完整细节不在本文讨论的范围之内,但是下一节将为您提供有关网络中的两个端点如何使用IPsec加密数据的一些一般概念。
IPsec加密使用建立安全连接所需的一对数学算法或公式。这些算法的两端必须相同:
- 隐藏(加密)数据的一种
- 另一个重新创建(解密)原始数据
除了这些显而易见的功能之外,还选择了两个数学公式,因此,如果第三方截取了加密的文本但没有秘密密码(称为加密密钥),则几乎不可能对数据包进行解密。
另外,还选择了公式,以使如果攻击者确实对一个数据包进行解密,则该信息将不会给攻击者任何解密其他数据包的优势。
IPsec的工作方式
下图中突出显示的四个步骤显示了在建立IPsec连接之后传递数据。
- 发送VPN设备(如第一个图中的远程办公室路由器一样)将原始数据包和会话密钥馈送到加密公式中,以计算和创建加密数据。
- 发送设备将加密的数据封装到包含新IP头和VPN头的数据包中。
- 发送设备将此新数据包发送到目标VPN设备ASA-1(请参阅图1)。
- 接收方VPN设备采用加密的数据和会话密钥,并运行相应的解密公式(与发送VPN设备所用的密钥值相同)来解密内部数据。
接下来,为了让您对IPsec的灵活性有一些了解,它已经随着时间的推移而更改,以支持更新更好的加密标准。例如,更新的标准具有新的
算法,此外,它们通常使用更长的加密密钥。这些更改使攻击者更难解密通过不安全的网络(例如Internet)传输的任何数据。 下表总结了其中几个选项,并显示了相关的密钥长度。
SSL VPN
安全套接字层(SSL)协议可作为IPsec的替代VPN技术。在
特定的,今天的浏览器都支持SSL,以此来动态地创建一个安全的连接
,从Web浏览器到Web服务器。最明显的用法是支持安全地在线访问金融交易。
Web浏览器使用HTTP作为连接到Web服务器的主要协议。但是,当需要确保与Web服务器的通信安全时,浏览器将切换为使用SSL。它使用众所周知的端口号443在浏览器和服务器之间发送加密的数据。此端口还用于验证最终用户。
Web浏览器的内置SSL功能可创建安全的Web浏览会话,但是可以使用Cisco VPN客户端使用相同的SSL技术来创建远程访问VPN 。在
思科的AnyConnect VPN客户端,可以在用户的PC和使用SSL安装到创建VPN远程接入隧道一端的知名软件。结果,所有发送到隧道另一端的数据包都被加密。
最后,请注意,许多类型的设备也可以位于SSL连接的服务器端。
Web服务器可以是来自Web浏览器的SSL连接的端点,但是为了提高服务器性能,通常在SSL隧道的末端使用专用设备(如Cisco ASA)。
GRE隧道
VPN端点上的设备会接收正常的未加密数据包,并在转发该数据包之前执行多种功能。这些功能之一是加密数据包,另一功能是将数据包 封装 在新的IP标头中。
新的IP标头使用的地址允许VPN隧道中两个端点之间的不安全网络中的路由器转发IP数据包。原始IP数据包(包括原始IP标头)已加密且无法读取。
通用路由封装(GRE)在RFC 2784中定义, 该协议将附加IP标头添加到数据包并封装原始数据包。下一部分的第一部分显示了如何通过GRE隧道路由数据包,就像在安全的企业网络内部使用串行链路一样。然后,本文的其余部分将说明GRE的工作方式。
通过GRE隧道路由
GRE隧道存在于两个路由器之间
,就数据包转发而言,该隧道非常类似于串行链路。因此,在讨论GRE隧道之前,我们首先
以下图为例,回顾一些关于路由器和串行链接的熟悉事实。
当PC1将数据包发送到目标IP地址10.1.2.2时,R1会将数据包封装在数据链路协议中。串行链接的默认封装方法称为高级数据链接控制(HDLC),如上图所示。
GRE至少在IP路由方面使用的概念与上图中的串行链接相同。路由器不使用带有串行接口的串行链接,而是使用称为隧道接口的虚拟接口。路由器之间的隧道两端的IP地址在同一子网中。该子网是安全企业网络的一部分。
路由器通过替换串行链路的HDLC报头将原始数据包封装在隧道报头内。路由器还保留列出隧道接口的路由。为了利用GRE隧道,路由器将其视为具有点对点拓扑的任何其他链接。
路由器使用路由协议成为邻居,以通过隧道交换路由。通过隧道获知的路由将隧道接口作为传出接口,而相邻路由器的隧道接口的IP地址则作为下一跳。下图显示了底部列出的每个路由器学习的路由。
所有这些概念都表明GRE隧道如何像普通链路一样工作,但不同之处在于它增加了Internet某些部分的安全性。本文的最后一部分讨论了GRE隧道如何在两个路由器之间的不安全网络上转发这些数据包。
不安全网络上的GRE隧道
GRE指定使用两个标头来创建隧道。它定义了自己的标头,用于
管理隧道本身。它还定义了完整的20字节IP报头(称为
传递报头)的使用。此标头将使用来自不安全网络的IP地址。如下图所示,传递IP标头包含R1的1.1.1.1 Internet IP地址作为源,R2的2.2.2.2 Internet IP地址作为目的地。
当此数据包通过Internet时,Internet上的路由器使用此外部GRE传递IP标头路由该数据包。该数据包本身恰好可以容纳另一个完整的IP数据包的事实与这些路由器之间的IP转发过程无关紧要。他们只是基于2.2.2.2目标IP地址转发IP数据包。
当GRE数据包最终到达Internet的右侧时,R2需要提取原始IP数据包。使用物理链接,R2只需删除旧的传入数据链接头。对于使用GRE封装的数据包,接收路由器(R2)还需要删除传递标头和GRE标头,从而保留原始数据包。