VPN(GRE和MGRE)
一, VPN——虚拟专用网
virtual private network
技术背景:
Internet网络不安全;
通过专线连接分支机构成本高;
PSTN拨号成本高,速率低;
作用
利用共享公网构建专有私网——跨越公网,能访问私网主机
优势
- 部署简单快捷;
- 与私有网络一样提供安全性,可靠性和可管理性;
- 通过Internet互连,不受地理位置限制,成本低;
- 简化用户侧的配置和维护工作
隧道技术
定义:
使用一种协议去封装另一种协议
相关概念:
- 载荷数据:被封装的原始数据(用户的数据)
- 载荷协议:被封装在内层的协议(私网IP地址头部)
- 封装协议:对载荷协议的封装方式(构建隧道使用的协议)
- 承载协议:再次封装的外层协议(私、公网IP地址头部)
分类
按使用场景
- site-to-site vpn:站点到站点的VPN,用于连接不同分支机构的VPN
- LAN-TO-LAN VPN: 双方的公网地址必须是静态的。
- IPsec VPN:一种网络层的安全保障技术,在公网上为两个私有网络提供安全通信通道,通过加密通道保证连接的安全
- GRE VPN: 最简单的VPN,一般和 IPsec VPN搭配使用
- access vpn:用于把单个移动用户接入到公司内网
- L2TP VPN:隧道到传送PPP网络,二层VPN,用 L2TP VPN构建 access VPN----此技术被淘汰
- SSL VPN:SSL VPN是解决远程用户访问公司敏感数据最简单最安全的技术
按工作层次
- 二层VPN:L2TP VPN
- 三层VPN:IPSEC VPNGRE VPN
- 七层VPN:SSL VPN
二, GRE
GRE简介:
Genric Routing Encapsulation,通用路由封装,标准的三层隧道技术,是一种点对点的隧道,在任意一种网络协议上传送任意一种其他网络协议的封装方法。
GRE VPN
直接使用GRE封装建立GRE隧道,在一种协议的网络上传送其他协议;虚拟的隧道接口(tunnel)
GRE报文结构
- 载荷数据:被封装的原始数据
- 载荷协议:被封装在内层的协议
- 封装协议:对载荷协议封装的方式
- 承载协议:再次封装的外层协议
IP用协议号47标识GRE
GRE使用以太类型0X0800标识载荷协议为IP
GRE VPN工作过程
- 隧道起点找到私网路由,数据包发往tunnel口
- 数据包在tunnel口进行封装公网IP头部
- 根据公网IP头部查找路由表,并转发
- 数据包在公网上进行传输
- 查找公网路由并解除公网IP头部封装
- 隧道终点查找私网路由并转发至目的主机
GRE VPN的优缺点:
优点
- 可以用当前最为普遍的IP网络作为承载网络
- 支持多种网络层协议
- 支持组播和动态路由协议
- 配置简单,部署容易
缺点
- 点对点隧道
- 静态配置隧道参数
- 布置复杂连接关系时,代价巨大
- 缺乏安全性
- 不能分割地址空间(不能解决私网地址冲突的问题)
举个例子:
多tunnel口冗余
作用:主隧道转发数据,备用隧道处于空闲状态;需要开启keepalive来检测隧道运行状态
tunnel接口虚假状态与静态路由
tunnel接口keepalive
[h3c-tunnel]keepalive "interval time"配置隧道保活
配置方法
发送端
- [r1]interface Tunnel 0/0/0 —— 创建GRE随道接口
- [r1-Tunnel0/0/0]ip address 192.168.3.1 24 —— 配置隧道IP地址
- [r1-Tunnel0/0/0]tunnel-protocol gre —— 定义封装方式
- [r1-Tunnel0/0/0]source 100.1.1.1 —— 定义隧道被封装的源地址
- [r1-Tunnel0/0/0]destination 100.2.2.3 —— 定义隧道被封装的目标地址
配置思路
- 先配置IP
- 分别搞通公网、私网
- 在公网通的基础上创建GRE VPN
- 配置路由协议传递两端私网路由,隧道两端配置一样,配置完了注意添加路由,然后就能ping通了
三, MGRE
Multi Genric Routing Encapsulation
简介
- 定义:多点通用路由封装协议,适合多个分公司需要和总部连接的情况
- 特点:通过构建公共隧道实现总部和分部,分部和分部之间的通信
所有私网中,有一方的公网地址必须固定,其他私网公网地址可以不固定
NHRP协议
下一跳解析协议
工作原理:
- 在私网中选择一个NHRP中心站点,其出口的公网IP必须固定;
- NHRP中心站点要求所有分支都需要将自己物理接口IP和隧道IP发给中心站点(发生变化就重新发送)
- NHRP中心会将所有的分支的地址映射关系动态的记录在本地,发送信息时查询即可
- 分支之间需要发送信息也需要获取映射关系,就需要先问NHRP中心站点
MGRE VPN配置方法
- [r1]interface Tunnel 0/0/0 — 创建GRE随道接口
- [r1-Tunnel0/0/0]ip address 192.168.3.1 24 ---- 配置隧道IP地址
- [r1-Tunnel0/0/0]tunnel-protocol gre p2mp ---- 定义封装方式
- [r1-Tunnel0/0/0]source 100.1.1.1 ---- 定义隧道被封装的源地址
NHRP的配置
中心站点配置:
- [R1-Tunnel0/0/0]nhrp network-id 100 创建NHRP域
分支站点配置:
- [R2]int Tunnel 0/0/0
- [R2-Tunnel0/0/0]ip add 192.168.5.2 24
- [R2-Tunnel0/0/0]tunnel-protocol gre p2mp
- [R2-Tunnel0/0/0]source GigabitEthernet 0/0/0
- [R2-Tunnel0/0/0]nhrp network-id 100 //分支加入中心站点域100
- [R2-Tunnel0/0/0]nhrp entry 中心隧道地址 中心公网接口地址 register // 分支找中心注册自己的信息
MGRE环境下的RIP网络
- 只有中心获取到分支的路由信息,但是分支并没有获取到中心的路由信息;
解决办法:在中心上启动伪广播
[R1-Tunnel0/0/0]nhrp entry multicast dynamic - 分支在中心开启伪广播后,分支只能获取到中心的路由信息,但无法获取分支之间的路由信息;
解决方案:关闭接口的水平分割
[R2-Tunnel0/0/0]undo rip split-horizon