CCIE-虚拟私有网络 学习笔记01 - 拟私有网络概念、实现原理及IPsec


最近读CCIE材料,对虚拟私有网络的实现细节有了深入理解。在此记录并分享

虚拟私有网络 使用场景及概念

当不同的远程网络通过 Internet 连接时,比如上海和北京的两个分公司通过Internet 连接时,网络之间的互访将会出现一些问题,如下情景
在这里插入图片描述
由于上海和北京的两个分公司内部网络分别使用了私有 IP 网段10.1.1.2 和 192.168.1.4,而私有 IP 网段是不能传递到 Internet 上进行路由的,所以两个分公司无法直接通过私网地址 10.1.1.2 和 192.168.1.4 互访, R2 无法直接通过访问私网地址 192.168.1.4 来访问 R4。在正常情况下,上图中两个分公司要互访,可以在连接 Internet 的边界路由器上配置 NAT 来将私网地址转换为公网地址,从而实现两个私有网络的互访.
但是在某些特殊需求下,两个分公司需要直接通过对方私有地址来访问对方网络,而不希望通过 NAT 映射后的地址来访问,比如银行的业务系统,某银行在全国都有分行,而所有的分行都需要访问总行的业务主机系统.但这些业务主机地址并不希望被 NAT 转换成公网地址,因为银行的主机不可能愿意暴露在公网之中,所以分行都需要直接通过私网地址访问总行业务主机;在此类需求的网络环境中,我们就必须要解决跨越 Internet 的网络与网络之间直接通过私有地址互访的问题.
如下场景:
在这里插入图片描述
上海与北京两个分公司网络通过路由器直接互连,虽然两个公司的网络都是私有网段,但是两个网络是直连的。上海分公司的数据从本地路由器发出后,数据包直接就丢到了北京分公司的路由器,中间并没有经过任何第三方网络和设备,所以两个分公司直接通过对方私有地址互访没有任何问题。
只要两个网络直接互连而不经过任何第三方网络,那么互连的网络之间可以通过真实地址互访,而无论其真实地址是公网还是私网

专线
如果上海与北京这样的远距离网络要直连从而实现直接通过私有地址互访,要在公司之间自行铺设网络电缆或光纤是完全不可能的,可以选择的替代方法就是向 ISP 申请租用线路,这样的租用线路称为专线,专线是 ISP 直接将两个公司连接起来的线路,完全是公司与公司的路由器直连,用户不会感觉到 Internet 的存在,所以通过租用 ISP专线连接的网络之间可以直接通过对方私有地址进行互访。专线通常是使用二层技术实现的,但是专线的租用价格是相当昂贵的,有时是根据距离和带宽收费的,所以在很多时候,在公司之间通过租用 ISP专线连接的成本可能无法承受。
隧道技术和虚拟私有网络
人们尝试着使用网络技术让跨越 Internet 的网络模拟出专线连接的效果,这种技术,就是隧道技术(Tunnel),也是当前很常见的 虚拟私有网络(Virtual Private Network)技术,需要强烈说明,如果不能实现隧道功能的 虚拟私有网络,不能称为虚拟私有网络。

隧道技术

在这里插入图片描述
如上所述,R2 直接使用私有IP发送数据包到R4 ,由于私有IP无法在公网路由,因此数据包只能被丢弃。除非将数据包的目标IP设置为公网IP200.1.1.1 ,才能到达R4所在的网络。 因此人们考虑将数据包原来的私有 IP(192.168.1.4) 地址先隐藏起来,在外部封装上公网 IP(200.1.1.1),等数据包通过公网 IP 被路由到该 IP 的路由器后,再由该路由器剥除数据包外层的公网 IP,得到数据包内封装的私有 IP ,再通过私有 IP将数据包发到真正的目的地。
如此就实现远程网络之间使用私有 IP 通信的技术,称为隧道技术。隧道达到的效果,就是网络直连的效果。被隧道再次封装公网 IP 的数据包采用的协议称为乘客协议,不是所有类型协议的数据包能被隧道封装,所以对于隧道来说,乘客协议(Passenger protocol)是有范围限制的,乘客协议数据包被封装示意图如下:
在这里插入图片描述
隧道技术有多种实现方式,也就是存在多种隧道协议,目前主要有以下几种:
GRE (Generic Routing Encapsulation )
IP Security (IPsec)
Secure Sockets Layer/Transport Layer Security (SSL/TLS)
虚拟私有网络 (Web虚拟私有网络)
Point-to-Point Tunneling Protocol (PPTP)
Layer Two Tunneling Protocol (L2TP)

GRE (Generic Routing Encapsulation )

GRE 是一种最传统的隧道协议,其根本功能就是隧道功能,GRE 在两个远程网络之间模拟出直连链路,从而使网络间达到直连的效果,为此,GRE 需要完成多次封装,总共有 3 次,换句话说,就是在 GRE 隧道中传输的数据包都有 3 个包头,因为我们只谈 IP 协议,所以 GRE中的 IP 数据包是一层套一层,总共有 3 个 IP 地址。GRE 在实现隧道时,需要创建虚拟直连链路,GRE 实现的虚拟直连链路可以认为是隧道,隧道是模拟链路,所以隧道两端有隧道 IP 地址,但隧道需要在公网中找到起点和终点,所以隧道的源和终点分别都以公网 IP 地址结尾,GRE数据封装步骤:
1.接收原始 IP 数据包当作乘客协议数据,原始 IP 数据包包头的 IP 地址为私有 IP 地址。
2.将原始 IP 数据包封装进 GRE 协议,GRE 协议称为封装协议(EncapsulationProtocol),封装的包头 IP 地址为虚拟直连链路两端的 IP 地址(隧道IP)。
3.将整个 GRE 数据包当作数据,在外层封装公网 IP 包头,也就是隧道的起源和终点,从而路由到隧道终点。
在这里插入图片描述
GRE 会在原始 IP 数据包之外,额外多封装 24 字节或 28 字节,具体视 GRE 模式而定
在这里插入图片描述
上图中 R2 发送数据包到R4 过程中数据封装过程如下:
1.假设 R1 与 R3 的 GRE 虚拟直连链路(隧道)已经建立,隧道链路两端的地址分别为 1.1.1.1 和 2.2.2.2,隧道两端的起源和终点分别为 100.1.1.1 和 200.1.1.1。
2.R1 收到目标 IP 为 192.168.1.4 的数据包后,将原始数据包当作乘客数据包封装进 GRE 协议中,并且添加 GRE 包头,包头中源 IP 为隧道本端地址 1.1.1.1,包头中目标 IP 为隧道对端地址 1.1.1.2,从而完成 GRE 数据包的封装。
3.在封装了 GRE 隧道地址的数据包外面封装 GRE 隧道起源 IP 地址,该 IP 地址为公网地址,即源 IP 为 100.1.1.1,目标 IP 为隧道终点 200.1.1.1,最后将数据包发出去
在这里插入图片描述

数据包被发到 Internet 之后,所有路由器只根据数据包最外面的公网 IP 进行转发,也就是只根据公网目标 IP 地址 200.1.1.1 来转发,直到数据包到达公网 IP 的真正目的地后,即到达 R3(IP:200.1.1.1)之后,公网 IP 包头才会被剥开,当 R3 剥开数据包的公网 IP 包头后,发现 GRE 包头,发现目标 IP 为 1.1.1.2,从而得知自己就是 GRE 隧道的终点,所以继续将 GRE 包头剥开,最后发现目标 IP 地址为192.168.1.4,然后将数据包发往 192.168.1.4(路由器 R4)

加密技术

在穿越Internet 的远程网络之间只实现隧道传输还不够,还必须让数据包加密传输,以保证数据在 Internet 传输时的安全性。因此在远程网络之间布置 虚拟私有网络 除了实现隧道功能之外,还必须在隧道中实现对数据的加密,隧道与加密是 虚拟私有网络 不得不同时实现的功能,两者缺一不可。
要对数据加密需要用到加密算法 包括对称加密、非对称加密、摘要算法等。具体参考 密码学看这篇就够了

IPsec

之前所讲到的 GRE 就是最常用的隧道技术,而在数据安全方面,其实就是要让数据加密传输,至于如何对数据进行加密传输,有一个使用最广泛,且最经典的技术方案,这就是 IPsec(IP Security)
IPsec 定义了使用什么样的方法来管理相互之间的认证,以及使用什么样的方法来保护数据。它本身并不是一个协议,就像 OSI(Open System Interconnect)参考模型一样,OSI 并不是一个协议,OSI 只是一个框架,一个模型,OSI 里面包含着多个协议,如 TCP,UDP,IP,ICMP 等等;IPsec 中同样也包含着各种协议实现 IPsec 要完成的各个功能。
IPsec 主要功能有:
数据源认证(Data origin authentication)
保护数据完整性(Data integrity)
保证数据私密性(Data confidentiality)
防止中间人攻击(Man-in-the-Middle)
防止数据被重放(Anti-Replay)

总共有三个协议,IKE (Internet Key Exchange )、ESP (Encapsulating Security Protocol )、AH (Authentication Header )。
IKE是个混合协议,其中包含部分Oakley协议以及内置在ISAKMP (Internet SecurityAssociation and Key Management Protocol )协议中的部分 SKEME 协议,所以 IKE 也可写为 ISAKMP/Oakley,它是针对密钥安全的,是用来保证密钥的安全传输、交换以及存储,主要是对密钥进行操作,并不对用户的实际数据进行操作。
ESP(Encapsulating Security Protocol)和 AH(Authentication Header)主要工作是如何保护数据安全,也就是如何加密数据,是直接对用户数据进行操作的。

IPsec 既能够为隧道提供数据保护来实现 虚拟私有网络, 还可以自己单独作为隧道协议来提供隧道的建立,具体如何使用由配置者决定。IPSec 目前只支持 IPv4 Unicast(IPv4 单播),不支持其它任何协议。

IKE (Internet Key Exchange )

IKE(Internet KeyExchange)努力构架一个完善的方案体系,保证 虚拟私有网络之间的密钥与数据的安全。
认证(Authentication )
IKE 会在 虚拟私有网络对等体之间采用认证机制(Authentication),认证可以有效确保会话是来自于真正的对等体而不是攻击者,因为如果最开始本身就是在和一个攻击者或黑客进行会话和协商,那么后面的所有工作都是白废,所以保证只和合法的对等体会话是非常重要的;IKE 的认证方式有三种:Pre-Shared Keys (PSK)、Public Key Infrastructure (PKI) using X.509 Digital Certificates、RSA encrypted nonce
Pre-Shared Keys (PSK)是最简单的,使用由管理员事先在双方定义好的密码,认证时,只有双方密码匹配之后,后续的工作才能继续;配置时通常可以包含 IP 地址,子网以及掩码,也可以指定为任意地址来代替固定地址,适用于 IP 地址不固定的环境。
PKI 是使用第三方证书做认证,叫做 Certificate Authority (CA),,里面包含名字、序列号,有效期以及其它可以用来确认身份的参数;
RSA encrypted nonce 我们不做介绍

密钥算法(Diffie-Hellman )

IKE 使用称为 Diffie-Hellman 的算法在 虚拟私有网络对等体之间建立安全的密钥用来加密数据,Diffie-Hellman 使用了极为复杂的数学算法,最后将在 虚拟私有网络对等体之间计算出只有它们自己才知道的密钥,即使他们的会话被第三者监控,也无法推算出密钥,本文不对 Diffie-Hellman 的详细计算过程做介绍。Diffie-Hellman 算法目前有 3 种密钥长度可选
Group 1 密钥长度为 768 bit,默认的密钥长度;
Group 2 密钥长度为 1024 bit;
Group 5 密钥长度为 1536 bit

SA (Security Association )
IPsec 的所有会话都是在通道中传输的,包括协商密钥,传递用户数据;这样的通道称为 SA(Security Association).SA 并不是隧道,而是一组规则,就好比是需要会话的对等体之间必须遵守的一份合同。SA 中的规则能够保证所有数据的安全传递,因此 SA 中包含了之前提到的保证数据和密钥安全时必不可少的认证、加密等安全策略,这些需要用到的技术,都要在 SA 中定义.
由于密钥安全和数据安全是分开对待的,所以 SA 有两个,分别是定义了如何保护密钥和如何保护数据

IKE SA 要保护的对象是与密钥有关的,不直接关心用户数据

IPsec SA IPsec SA 直接为用户数据流服务保护,用户数据流的安全
每个 IPsec 对等体都有一对 IPsec SA,一个是去往远程目的地的,而另一个是从远程回来的,也就是一进一出,都存放在本地 SADatabase 中

IPSEC Mode

IPSec有两种模式 Tunnel mode (默认模式) 和Transport mode
Tunnel mode
IPsec 中的 Tunnel mode 就拥有着与 GRE 相同的隧道功能,那就是将数据包原来的私有 IP 地址先隐藏起来,在外部封装上公网 IP,等数据包通过公网 IP 被路由到该 IP 的路由器后,再由该路由器剥除数据包外层的公网 IP,从而发现数据包的私有IP 后,再通过私有 IP 将数据包发到真正的目的地,所以,IPsec 的 Tunnel mode 也会对原始数据包封装多个 IP 包头。数据包的封装过程如下:
在这里插入图片描述
因为原始数据包的所有内容,包括真正的源 IP 和目的 IP 都被加密了,所以更安全。

Transport mode
如果 IPsec 不需要实现隧道功能,而只需要实现保护数据的安全功能,就只要工作在 Transport mode 即可,这时需要配合其它隧道协议,最终实现完整的 VPN 功能。当 IPsec 工作在 Transport mode 时,数据包的封装过程如下:
在这里插入图片描述
IPsec 工作在 Transport mode 时,IPsec 包头是添加在原始 IP包头与上层协议(如传输层)之间的。原始 IP 包头在最外面,路由过程中是根据原始 IP 包头来路由的,所以当通过 Internet 连接的远程网络之间需要直接使用对方私有 IP 地址来互访时,此封装不可行。因因此Transport 模式的 IPsec 应该配合 p2p GRE over IPsec 来一起实现VPN功能。

ESP(Encapsulating Security Protocol )和 AH (Authentication Header )

IPsec 对用户数据的保护,靠ESP 和 AH 的封装。
ESP 对用户数据包的封装过程如下:
在这里插入图片描述

ESP 包头中使用 IP 协议号 50 来标识,意为 IP 协议号为 50 的数据包都被当作 ESP数据包来处理;从上图中也可以看出,即使是封装 ESP,也分为两种情况,因为 IPsec本身分为两种模式,所以在进行安全封装数据包时,不同的模式,也会有不同的封装格式。
从图中还可以看出,原始数据包经过 ESP 封装之后,只是数据被加密了,而原始的 IP 包头是没有改变。

AH 对用户数据包的封装过程如下:
在这里插入图片描述
AH 包头中使用 IP 协议号 51 来标识,从图中可以发现,原始数据包经过 AH 封装之后,并没有被加密,这是因为 AH 封装并不使用常规的方法去加密数据部分,而是采用隐藏数据的方法,也就是相当于加一个防改写的封条给数据,很显然,这简直就是掩耳盗铃,如果数据机密要求高,千万不要单独使用 AH 封装。

SP 拥有和AH 相同的认证功能,且有数据保护方法,所以只使用 ESP 就是最理想的。

隧道分离(Split Tunneling )

为了让用户需要走 VPN 隧道的流量才被发送到隧道上,其它流量,还是从原来的接口发送而不被 IPsec 封装,需要将用户的流量分为两类,区分对待,这就是隧道分离(Split Tunneling)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catch that elf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值