认识VPN
虚拟专用网(Virtual Private Network),简称VPN。
- 作用:
- 利用共享网络构建专有私网,跨越公网,访问私网主机。
- 优势:
- 部署简单快捷。
- 与私有网络一样提供安全性、可靠性和可管理性。
- 通过Internet互联,不受地理位置限制,成本低。
- 简化用户侧的配置和维护工作。
隧道技术
- VPN的核心技术之一。
- 其实质上就是使用一种协议去封装另一种协议。
- 封装包格式(假设由协议A去封装协议B)
- 从右向左封装。
- 载荷数据
- 被封装的原始数据。
- 载荷协议
- 被封装在内层的协议。
- 封装协议
- 对载荷协议的封装方式(一般用来标识用哪种VPN技术)。
- 承载协议
- 再次封装的外层协议。
VPN按使用场景分类
- site-to-site vpn
- 站点到站点的VPN,用于连接不同分支机构的VPN。
- LAN-TO-LAN VPN(通信双方需要固定的公网地址)、IPSec VPN、GRE VPN等。
- access vpn
- 用于把单个移动用户接入到公司内网。
- L2TP VPN(基本淘汰)、SSL VPN等。
VPN按工作层次分类
- 二层
- L2TP VPN。
- 三层
- IPSec VPN、GRE VPN等。
- 七层
- SSL VPN。
GRE
通用路由封装( Genric Routing Encapsulation),简称GRE。标准的三层隧道技术,是一种点对点的隧道,在任意一种网络协议上传送任意一种其他网络协议的封装方法。
GRE VPN
直接使用GRE封装建立GRE隧道,在一种协议的网络上传送其他协议。
最简单的VPN,一般和 IPsec VPN搭配使用。
构建GRE VPN需要用到虚拟的隧道接口(Tunnel),数据由虚拟隧道接口发出和接收。
GRE封装包格式(网络层若使用IP协议)
相对正常封装过程增加了新IP头和GRE头。
- 由右向左封装。
- 新IP头
- GRE封装后新添加的IP头部源IP地址为公网IP地址,用于在公网中寻址。其中协议号为47,代表该数据包使用GRE封装。
- GRE头
- 使用以太类型0x0800标识载荷协议为IP协议。
工作过程(所有VPN大致工作过程相似)
- 私网内数据发出,找到私网网关,网关将数据包发往隧道(Tunel)口。
- 数据包在Tunel口进行封装公网IP头部。
- 根据公网IP头部查找路由表,并转发。
- 数据包在公网进行传输。
- 对端私网网关的公网端口收到该数据包并解除公网IP头部封装会因为协议号为47将数据交给GRE协议处理,GRE头部有以太类型0x0800标识载荷协议为IP协议,将数据交给IP协议处理,最后在IP头部得到私网路由信息进行寻址。
- 私网内查找私网路由并转发至目的主机。
隧道配置要求
- 隧道两边接口名称需要一样。
- 两边IP地址在一个网段(近似于直连)。
- 需要配置私网通往公网的出接口公网IP地址(封装在新的IP头部用于穿越公网)。
- 公网必须全网通。
优缺点
- 优点
- 可以用当前最为普遍的IP网络作为承载网络。
- 支持多种网络层协议。
- 支持组播和动态路由协议。
- 配置简单、部署容易。
- 缺点
- 点对点隧道(只支持两端互联,不能存在第三方)。
- 静态配置隧道参数(手动配置固定参数,灵活性不强)。
- 布置复杂连接关系时代价巨大。
- 缺乏安全性。
- 不能分割地址空间(不能解决两端私网地址冲突的问题)。
多隧道冗余
建立多条隧道,保证数据转发的稳定性。
主隧道转发数据,备用隧道处于空闲状态,主隧道一旦发生问题,备用隧道顶上。
为避免隧道假死,需要开启Keepalive来检测隧道的运行状态。
- Keepalive报文,定期发送数据包保活,若规定时间内发包无应答,则认为对方宕机,将对方状态调整为down,启用备用隧道转发数据。两端保活间隔时间应该相同。
MGRE
多点通用路由封装协议(Multi Genric Routing Encapsulation),简称MGRE。
MGRE VPN
- 适合多个分公司需要和总部连接的情况。通过构建公共隧道实现总部和分部、分部与分部之间的通信,所有私网中,有一方的公网地址必须固定(总公司),其他私网公网地址可以不固定。
- 工作原理与GRE相同,但是因为除总公司外的私网公网地址可以不固定,所以除了总公司外的分公司私网不用配置封装时的公网地址。不固定的私网公网地址通过NHRP协议获取。
NHRP
下一跳解析协议(Next Hop Resolution Protocol),简称NHRP。
工作原理
- 在私网中选择一个NHRP中心站点,其出口的公网IP必须是固定的(总公司)。
- NHRP中心站点要求所有分支都需要将自己物理接口IP和隧道IP发给中心站点(发生变化就需要重新发送)。
- NHRP中心会将所有的分支的地址映射关系动态的记录在本地,需要发送信息时查询即可。
- 分支之间需要发送信息也需要获取这个映射关系,就需要先问NHRP中心站点要。
- 在同一个NHRP域中的设备才能向域中的中心站点注册和询问地址信息。