VPN--虚拟专用网络
依靠ISP或者某他公用网络基础设施上构建专用的安全数据通信网络。--这个专用网络是逻辑而非物理;
虚拟指用户不再需要拥有实际的长途数据线缆,而是使用公共网络资源建立自己的专用网络;
专用指可以定制最符合自身需求的网络。
VPN核心技术--封装技术
GRE--通用路由封装
配置:
[r1-GigabitEthernet0/0/0]ip address 12.0.0.1 24
[r1-LoopBack0]ip address 192.168.1.1 24
[r1]ip route-static 0.0.0.0 0 12.0.0.2
[r2-GigabitEthernet0/0/0]ip address 12.0.0.2 24
[r2-GigabitEthernet0/0/1]ip address 23.0.0.2 24
[r3-GigabitEthernet0/0/0]ip address 23.0.0.3 24
[r3-LoopBack0]ip address 192.168.2.1 24
[r3]ip route-static 0.0.0.0 0 23.0.0.2
ping -a 指定源ip进行ping
Tunnel--隧道接口
[r1]interface Tunnel 0/o/o----创建隧道接口
[r1-Tunnelo/o/o]ip address 192.168.3.1 24---该IP地址必须为私网IP
此时协议层面为down,通讯协议不是ip协议而是隧道技术GRE
[r1-Tunnel0/0/O]tunnel-protocol gre ---定义封装方式
此时协议层面认为down,gre功能需要加入内容
[r1-Tunnelo/0/0]source 12.0.0.1----定义封装内容,该IP必须为真实的公网出口IP
[r1-Tunnelo/0/0]destination 23.0.0.3 目的地址
注:description--描述信息 destination--目的地
[r1]ip route-static 192.168.2.0 24 192.168.3.2 补充路由信息
r3配置同上,source和destination相反
[r3-Tunnel0/0/0]ip address 192.168.3.2 24
[r1-Tunnelo/0/0]source 23.0.0.3
[r1-Tunnelo/0/0]destination 12.0.0.1
[r3]ip route-static 192.168.1.0 24 192.168.3.1
GRE报文格式
GRE封装和解封装过程:
1、设备从连接私网的接口接收到数据包后,检查报文头部中的目的IP地址字段,在路由表中查找出接口,如果发现出接口为隧道接口,则将报文发送给隧道模块进行处理。
2、隧道模块接收到报文后,首先根据乘客协议的类型和当前GRE隧道配置的校验和参数,对报文进行GRE封装;
3、然后,设备给报文添加新的传输协议,该协议的源IP就是隧道源地址,目的IP为隧道目的地址。
4、最后,设备根据新条件的IP报文头部中的目的地址,在路由表中查找对应的出接口并发送报文。
解封装:
接收端设备从连接公网的接口收到报文后,首先分析IP报文头部信息,如果发现协议字段类型值为47(GRE协议号),表示数据部分由GRE模块进行处理。
-
GRE模块去除掉IP报文头部和GRE报文头部,并根据GRE报文头部中的协议类型字段来判断乘客协议内容。从而交给对应模块处理。
Keeplive检测机制
[r1-Tunnel0/0/0]keepalive period 2 retry-times 5--设置发送周期为2S;设置重传次数为5次
MGRE
NHRP--下一跳解析协议
hub-spoke--中心(NHS--下一跳服务器)到节点架构
中心节点的ip地址必须固定
MGRE的shortcut配置
配置:
1、配ip地址
[r1-GigabitEthernet0/0/0]ip address 15.0.0.1 24
[r1-LoopBack0]ip address 192.168.1.1 24
r2r3r4同上
2、把公网做通,r1r2r3r4 补上一个缺省路由
[r1]ip route-static 0.0.0.0 0 15.0.0.5
[r2]ip route-static 0.0.0.0 0 25.0.0.5
[r3]ip route-static 0.0.0.0 0 35.0.0.5
[r4]ip route-static 0.0.0.0 0 45.0.0.5
3、hub中心节点配置
[r1]interface Tunnel 0/0/o
[r1-Tunnelo/0/o]ip address 192.168.5.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp ---修改接口封装协议为GRE,且为点到多点模式
[r1-Tunnel0/0/0]source 15.0.0.1 --指定源地址
MGRE环境不需要配置目的地地址,不需要给中心站点配置目标,通过nhrp映射表互相传输数据
4、Spoke节点配置
[r2]interface Tunnel 0/0/0
[r2-Tunnelo/o/o]ip address 192.168.5.2 24
[r2-Tunnel0/0/o]tunnel-protocol gre p2mp
[r2-Tunnelo/o/o)source GigabitEthernet 0/0/0--spoke节点不固定,要写出口,以这个接口配置的ip作为封装源ip
[r2-TunnelO/0/0]nhrp entry 192.168.5.1 15.0.0.1 register(注册)--中心节点的虚拟接口ip和中心节点的物理接口IP 这个操作是向中心节点注册
r3r4配置同上
[r1]display nhrp peer all----查看nhrp映射表
5、配置路由,让数据包导向tunnel
[r1]ip route-static 192.168.2.0 24 192.168.5.2
[r1]ip route-static 192.168.3.0 24 192.168.5.3
[r1]ip route-static 192.168.4.0 24 192.168.5.4
[r2]ip route-static 192.168.1.0 24 192.168.5.1
[r3]ip route-static 192.168.1.0 24 192.168.5.1
[r4]ip route-static 192.168.1.0 24 192.168.5.1
测试:
以上证明中心节点能与边缘节点进行通信
6、边缘节点互通
[r2]ip route-static 192.168.3.0 24 192.168.5.1 [r2]ip route-static 192.168.4.0 24 192.168.5.1
[r3]ip route-static 192.168.2.0 24 192.168.5.1 [r3]ip route-static 192.168.4.0 24 192.168.5.1
[r4]ip route-static 192.168.2.0 24 192.168.5.1 [r4]ip route-static 192.168.3.0 24 192.168.5.1
DSVPN技术--动态智能VPN--解决了中心节点处理量过大的问题
DSVPN:
-
由MGRE+NHRP组成
-
DSVPN不支持广播组播
传统的MGRE技术存在的问题:分部之间无法直接通讯(源分支无法获取目的分支的公网地址,也就无法建立VPN隧道),导致所有的分支之间的通讯数据只能通过总部HUB设备进行中转。
NHRP映射表
-
静态表项
-
由网络管理员手工配置
-
spoke与hub建立的mgre隧道
-
-
动态表项
-
由NHRP协议动态生成
-
hub节点被动获取到spoke节点发送来的注册信息
-
各个spoke节点通过NHRP协议获取到对端的spoke节点的映射关系
-
7200s(动态映射表老化时间)
-
NHRP映射表的建立过程
一、建立spoke到hub之间的mgre隧道
1、spoke向hub注册请求
2、hub向spoke注册应答
建立mgre隧道12缺一不可
二、分之间路由学习--生成一端分支到另一端分支的路由信息
DSVPN支持两种分之间路由学习方式:
-
分支间互相学习路由(下一跳写到对端分支)----非shortcut方式
-
每个分支需要学习到所有对端的路由数据,且下—跳为分支本身
-
-
分支路由汇聚到总部(下一跳全部写到中心节点hub)----shortcut方式
-
下—跳为hub设备
-
三、建立spoke与spoke之间的mgre隧道
非shortcut方式
在shortcut方式基础上更改spoke节点下一跳
[r2]ip route-static 192.168.3.0 24 192.168.5.3 [r2]ip route-static 192.168.4.0 24 192.168.5.4
[r3]ip route-static 192.168.2.0 24 192.168.5.2 [r3]ip route-static 192.168.4.0 24 192.168.5.4
[r4]ip route-static 192.168.2.0 24 192.168.5.2 [r4]ip route-static 192.168.3.0 24 192.168.5.3
shortcut方式
配置:
中心: [r1-Tunnel0/0/0]nhrp redirect ----开启重定向功能。默认情况为未启动
分支: [r4-Tunnel0/0/0]nhrp shortcut ----使能shortcut功能
MGRE的shortcut方式和非shortcut方式建立MGRE隧道的过程
非shortcut方式
配置:
中心节点配置与shortcut方式相同,spoke节点配置在shortcut方式基础上更改spoke节点下一跳
此时,r1有三个映射表,r2/r3/r4只有r1的映射表
以r2和r4建立隧道为例:
r4访问r2:
-
查看路由表
-
封装,查看映射表,但无法查看到r2映射表
-
此时只能把r1的信息封装成报文转发给r1
-
r1转发报文给r2,r1把r2的映射关系通告r4
-
r4收到r2映射关系后在下一次发送数据包时目的地为r2
此时r2的映射关系:
与r4建立关系后的映射关系:
根据映射表得知:r2通过tunnel隧道获取到r4的映射表,自己又构造本地的映射表作为回应;此时r4也有了r2和自己本地的映射表;
r2第一次发送ICMP报文同时发送nhrp报文,向r1请求r4的映射关系,r1先把ICMP转发给r4保持通信状态,r1不会把r4的信息直接给r2,而是把请求信息转发给r4,r4收到后直接把映射关系转发给r2,这也是r4需要先建立local信息的原因。
shortcut方式
以r2和r4建立隧道为例:
r4访问r2:
-
查看路由表
-
封装,查看映射表目的地址正确,则r4不会向r1请求r2的信息
-
此时在r1抓包显示都是ICMP报文,客户端没有发送nhrp请求,服务端也没有更正这个问题
-
在r1添加[r1-Tunnel0/0/0]nhrp redirect 配置开启重定向功能,开启后hub设备会自行判断源地址和目标地址的正确与否,然后通告r4发送映射关系的请求
-
通过抓包发现r4依旧未获取到r2的映射关系,在r2r4配置[r4-Tunnel0/0/0]nhrp shortcut 使能shortcut功能,此时r4和r2便可以直接通讯
补充拓展:
MGRE是GRE点到点的扩展,本质也是点到点协议,而非点到多点
shortcut和非shortcut都属于DSVPN
MGRE环境下的RIP网络搭建--非shortcut方式
在MGRE环境下中心节点只能点到点发送单播报文,存在多个中心节点不会发,导致其他spoke节点学不到中心节点路由。
分支没有获取到中心的路由信息的原因:
因为RIP是以组播的方式在发送报文,而MGRE环境下是点到点通讯,不支持组播行为。
解决方法:
开启伪广播功能--还是单播行为
[r1-Tunnel0/0/0]nhrp entry multicast dynamic --在中心节点开启伪广播
分支之间无法获取对方路由信息原因:
主要因为华为设备默认开启水平分割机制,导致中心无法从接口将分支的路由发送出去。
解决方法:
方法一:[r1-Tunnelo/0/0]undo rip split-horizon ----关闭水平分割机制
方法二:[r1-Tunnelo/0/0] rip summary-address 192.168.0.0 255.255.0.0 -- 路由汇总
MGRE环境下的RIP网络搭建--shortcut方式
中心: [r1-Tunnel0/0/0]nhrp redirect ----开启重定向功能。默认情况为未启动
分支: [r2/3/4/-Tunnel0/0/0]nhrp shortcut ----使能shortcut功能