VPN----虚拟私有网络:依靠ISP或者其他网络管理机构在公有网络基础上构建的专用的安全数据通信网络,只不过该网络是逻辑上的而非物理的。
- 虚拟:用户不再需要拥有实际的长途数据线路,而是使用公共网络资源建立的属于自己的私有网络。
- 专用:用户根据自身需求,特备定制的最符合自身网络架构的网络
- 核心技术:
GRE--- 逻辑隧道的封装技术
GRE---通用路由封装---标准的三层隧道技术---属于点到点隧道
GRE 环境:
SIP:192.168.1.1 | DIP:192.168.2.1 | 数据 |
SIP:12.0.0.1 | DIP:23.0.0.3 | 数据 |
SIP:12.0.0.1 | DIP:23.0.0.3 | SIP:192.168.1.1 | DIP:192.168.2.1 | 数据 |
配置命令:
双方均需要进行GRE配置
[r1]interface Tunnel 0/0/0 ---- 创建隧道接口
[r1-Tunnel0/0/0]ip address 192.168.3.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre --- 定义封装方式
[r1-Tunnel0/0/0]source 12.0.0.1---定义封装内容,注意是物理接口IP地址
[r1-Tunnel0/0/0]destination 23.0.0.3
[r3]interface Tunnel 0/0/0
[r3-Tunnel0/0/0]ip address 192.168.3.2 24
[r3-Tunnel0/0/0]tunnel-protocol gre
[r3-Tunnel0/0/0]source 23.0.0.3
[r3-Tunnel0/0/0]destination 12.0.0.1
[r1]ip route-static 192.168.2.0 24 192.168.3.2
[r2]ip route-static 192.168.1.0 24 192.168.3.1(物理地址 +隧道地址)
GRE 报文结构
GRE封装和解封装报文的过程
- 设备从连接死亡的接口接收到报文后,检查报文头部中出现的IP地址字段,并在路由表中查找出接口,若果发现出接口是隧道接口,则将报文发送给tunnel模块进行处理。
- tunnel模块接收道报文后,首先会根据乘客协议的类型和当前GRE隧道的配置来添加参数,并对报文进行GRE封装
- 然后,设备给报文添加传输协议报文头部,即IP报文头部。该IP头部信息的源IP地址是隧道源地址(不是隧道自身的IP地址),目的地址就是隧道的目的地址。
- 最后,设备根据新添加到IP报文中的目的IP地址,在路由器中查找对应的出接口,并发送报文
- 接收端设备从连接公网的接口收到报文后,首先分析IP报文头部,如果发现协议类型字段的值为47(GRE的协议号),表示上层协议为GRE协议,于是出接口将报文交给GRE模块处理
- GRE模块去掉IP报文头部和GRE头部,并根据GRE报文头部中的协议类型字段,发现此报文的乘客协议为私网中运行的IP协议,将该数据交给对应协议处理。
Keepalive检测---用于检测隧道对端是否可达(在MGRE中不使用,因为目的隧道地址不再明确)
配置命令:
[r1-Tunnel0/0/0]keepalive period 2 retry-times 5----设置发送时间为2s,重传次数为5
- 如果本端隧道配置了keepalive检测功能,GRE隧道会创建一个计时器,并周期性的发送探测报文,同时进行不可达计数。
- 每发送一个探测报文,不可达次数+1
- 如果该计数器到达预先设定的值之前收到回应报文,则表明对端可达。
- 如果计时器值达到预先设定的重传此处,还未收到对端的回应报文,则认为对端不可达。关闭隧道连接。
- keepalive是不需要双方均进行配置的,仅配置一端即可进行检查。
MGRE---多点通用路由封装技术
NHRP----下一跳解析协议
中心/结点:Hub-Spoke架构
NHS(下一跳服务器)
原理:在私网当中选择一个出口物理IP地址不会变的设备充当NHS服务器,剩下的节点都可以知道中心的隧道IP和物理IP,然后通过NHRP要求所有的分支节点都需要将自己的物理接口IP和隧道IP发送给该服务器(有变化就发送)。
NHS服务器将会存有所有分支节点的地址映射关系的一个动态记录。发送消息时查询该映射记录即可。
MGRE的非shortcut配置
配置命令:
Hub配置
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ip add 192.168.5.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp ---- 修改接口封装模式为点到多点[r1-Tunnel0/0/0]source 15.0.0.1 --- 定义封装的源IP,该IP地址为物理IP地址
Spoke配置[r4]interface Tunnel 0/0/0
[r4-Tunnelo/o/o]ip add 192.168.5.4 24[r4-Tunnel0/0/0]tunnel-protocol gre p2mp
[r4-Tunnel0/0/0]source GigabitEthernet 0/0/0 ---设置分支站点IP地址不固定,故源IP根据出接口变化[r4-Tunnelo/o/0]nhrp entry 192.168.5.1 15.0.0.1 register --- 分支需要到中心站点注册(隧道地址+物理地址)
[r4]display nhrp peer all 查看注册情况
DSVPN---华为
DSVPN专门为了Hub-Spoke架构诞生服务。
通过总部中转流量会导致以下问题:
1、总部在中转分支之间的数据流量时,会消耗总部hub设备的cpu和内存资源,造成资源紧张2、总部需要对分支之间的数据流量进行封装和解封装,造成额外的网络延时
3、IPSec协议不支持广播报文和组播报文。
解决问题:
DSVPN通过NHRP协议动态收集、维护和发布各节点的公网地址等信息,解决了源分支无法获取目的分支的公网IP地址的问题,从而可以在分支和分支之间直接建立一条动态的VPN隧道,实现分支和分支之间的直接通讯,减轻总部的设备负担。
DSVPN借助MGRE技术,使VPN隧道能够传输组播报文和广播报文,并且一个tunne1接口可以跟多个对端建立VPN隧道,减少网络管理员的配置量,并且,在新增分支或者分支地址变化的情况下,能够自动维护总部和分支之间的隧道关系,而不需要调整任何配置。
DSVPN概念
当源spoke需要向目的spoke发送数据报文时,源spoke通过与hub节点的静态MGRE隧道交互NHRP协议报文获取报文spoke节点的公网地址,并且与目的spoke节点建立动态MGRE隧道。
MGRE隧道
- 静态MGRE----建立在hub到spoke,并且永久存在
- 动态MGRE----建立在spoke到spoke,在一定周期内没有流量转发则会自动删除
NHRP映射表
- 静态表项
- 动态表项
- 老化时间---7200s
NHRP映射表建立过程
1、建立spoke和hub之间的MGRE隧道
2、分支学习路由
1、shortcut方式---快捷方式
(1)分支路由全部汇聚到总部
(2)spoke节点只需要存放到达hub节点的路由即可
(3)一般应用在网络规模较大、分支节点较多的场景
2、非shortcut方式---非快捷方式
(1)分支之间互相学习路由
(2)每一个分支节点都需要学习到对端的控制层面的数据
(3)一般应用在网络规模较小,路由信息较少的网络中
3、建立spoke和spoke之间的MGRE隧道
shortcut方式
非shortcut方式
shortcut方式:
[r1-Tunnel0/0/0]nhrp redirect---在hub设备上配置--使能nhrp重定向报文
[r4-Tunnel0/0/0]nhrp shortcut---在spoke设备上配置---开启spoke设备的nhrp的重定向请求报文
动态路由协议下的MGRE环境---RIP
[r1-Tunnel0/0/0]nhrp entry multicast dynamic----在hub配置,开启伪广播功能
[r1-Tunnel0/0/0]undo rip split-horizon ---关闭rip水平分割--非shortcut
[r1-Tunnel0/0/0]rip summary-address 192.168.0.0 255.255.248.0 --- shortcut