目录
VPN---虚拟专用网络
依靠ISP或者其他公用网络基础设施上构建专用的安川数据通信网络。 ---只不过这个专用网络是逻辑而非物理的
虚拟:用户不在需要拥有实际的长途数据线缆,而是使用公共网络资源建立自己的专用网络
专用: 可以定制最符合自身需求的网络
GRE-----通用路由封装
GRE封装和解封装过程
- 设备从连接私网的接口接收到数据包后,检查报文头部中的目的IP地址字段,在路由表中查找出接口,如果发现出接口为隧道接口,则将报文发送给隧道模块进行处理。
- 隧道模块接收到报文后,首先根据乘客协议的类型和当前GRE隧道配置的校验和参数,对报文进行GRE封装
- 然后,设备给报文添加新的传输协议,该协议的源IP就是隧道源地址,目的IP为隧道目的地址。
- 最后,设备根据新条件的IP报文头部中的目的地址,在路由表中查找对应的出接口并发送报文。
- 接收端设备从连接公网的接口收到报文后,首先分析IP报文头部信息,如果发现协议字段类型值为47 (GRE协议号),表示数据部分由GRE模块进行处理。
GRE模块去除掉IP报文头部和GRE报文头部,并根据GRE报文头部中的协议类型字段来判断乘客协议内容。从而交给对应模块处理。
GRE实例
配置
[r1]ip route-static 0.0.0.0 0 12.0.0.2
[r3]ip route-static 0.0.0.0 0 23.0.0.1
[r1]interface ?
Bridge-if Bridge-if interface
Dialer Dialer interface
Eth-Trunk Ethernet-Trunk interface
GigabitEthernet GigabitEthernet interface
Ima-group ATM-IMA interface
LoopBack LoopBack interface
MFR MFR interface
Mp-group Mp-group interface
NULL NULL interface
Tunnel Tunnel interface
Virtual-Ethernet Virtual-Ethernet interface
Virtual-Template Virtual-Template interface
Vlanif Vlan interface
Wlan-Ess Wlan-Ess interface
[r1]interface Tunnel 0/0/0 --- 创建隧道接口
[r1-Tunnel0/0/0]ip address 192.168.3.1 24 --- 给通道接口地址配好一个IP,必须是私网地址
[r1-Tunnel0/0/0]tunnel-protocol ?
gre Generic Routing Encapsulation
ipsec IPSEC Encapsulation
ipv4-ipv6 IP over IPv6 encapsulation
ipv6-ipv4 IPv6 over IP encapsulation
mpls MPLS Encapsulation
none Null Encapsulation
[r1-Tunnel0/0/0]tunnel-protocol gre --- 定义通道封装的类型
[r1-Tunnel0/0/0]source 12.0.0.1 --- 源公网地址
[r1-Tunnel0/0/0]destination 23.0.0.2 --- 目的公网地址
[r1]ip route-static 192.168.2.0 24 192.168.3.2 --- 去往的私网网段,下一跳为R2隧道接口地址
[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.2
[r3-Tunnel0/0/0]destination 12.0.0.1
封装格式
检查设备连通性
查看数据抓包
R1请求R2的报文
R2回复R1的报文
keepalive检测机制
[r1-Tunnel0/0/0]keepalive period 2 retry-times 5
设置发送周期为2s,设置重传次数为5次
MGRE
重点
NHRP --- 下一跳解析协议
至少存在一个中心站点;中心站点的 IP 地址必须固定;所有分支站点,在启动后将本地当下的物理接口 IP 地址发送到中心站点;中心站点生成 MAP(MAP中记录分支站点的公有 IP 与 Tunnel 接口的 IP 地址对应关系); 其他分支站点也可以到中心站点下载该 MAP;
存在服务端和客户端;服务端需要固定公有ip地址,客户端ip地址可变;客户端在本地公有ip变化后,主动向服务端进行注册;服务端生成 MAP,MAP 中记录客户端的公有 IP 与 Tunnel 接口的 IP 地址对应关系;若其他客户端需要访问另一个客户端,可以到服务端下载该 MAP;
hub-spoke架构----中心到节点架构
NHS---下一跳服务器
中心节点的IP地址必须固定
MGRE的shortcut
有一台中心服务器AR1 作为整个网络中的中心服务器Hub,且每次节点与节点之间访问的时候必须经过AR1进行转发,也是有优点的,配置比较简单,但是缺点就是占用大多带宽,对线路通讯不太好
Hub 配置
[r1]int Tunnel 0/0/0
[r1-Tunnel0/0/0]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 --- Hub只有源没有目标,因为是别人得到中心认证来找Hub
[r1]ip route-static 192.168.2.0 24 192.168.5.2
[r1]display nhrp peer all
检查Hub 的 MAP 映射表
Spoke节点配置
r2
[r2-Tunnel0/0/0]ip address 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 entry 192.168.5.1 15.0.0.1 register --- 找中心站点进行注册隧道地址物理接口地址
[r2]ip route-static 192.168.1.0 24 192.168.5.1
[r1]display nhrp peer all ---- 查看nhrp映射表
r3
[r3]interface Tunnel 0/0/0
[r3-Tunnel0/0/0]ip address 192.168.5.3 24
[r3-Tunnel0/0/0]tunnel-protocol gre p2mp
[r3-Tunnel0/0/0]source g0/0/0
[r3-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register
[r3]ip route-static 192.168.1.0 24 192.168.5.1
[r3]ip route-static 192.168.2.0 24 192.168.5.1
测试设备连通性
DSVPN---动态智能VPN
传统的MGRE技术存在的问题。----分部之间无法直接通讯(源分支无法获取目的分支的公网地址,也就无法建立VPN隧道)导致所有的分支之间的通讯数据只能通过总部HUB设备进行中转。
NHRP映射表
静态表项
由网络管理员手工配置
spoke与hub建立静态的mgre隧道
动态表项
是由NHRP协议动态生成
hub节点被动获取到spoke节点发送来的注册信息
各个spoke节点通过NHRP协议获取到对端的spoke节点的映射关系。
7200S
NHRP映射表的建立过程
建立spoke到hub之间的mgre隧道
1.spoke向hub注册请求
2.hub向spoke注册应答
DSVPN支持两种分支间路由学习方式
分支间互相学习路由----非shortcut方式
每个分支需要学习到所有对端的路由数据,且下一跳为分支本身
分支路由汇聚到总部----shortcut方式
下一跳为hub设备
建立spoke与spoke之间的mgre隧道
实例
非shortcut方式
R4一开始发送的报文包括ICMP和NHRP(请求R2实际地址),因为在比对自己的NHRP表发现下一跳与NHRP映射表中的下一跳发生冲突,所以R4会认为这个映射表中的应该是错误的,继而发送一个NHRP报文来与目的去申请建立连接,目的IP是R1的IP因为他的nhrp信息表里面没有关于AR2的信息所以目的的IP是15.0.0.1
当R1收到这个报文之后他会去看R4和R2的网段发现192.168.5.4 和 192.168.5.2 同一网段,处于同一广播域下,当R2收到NHRP请求报文后如果R2同意进行通讯,这个时候他会在本地NHRP表里生成一个关于去往自己的信息,标识是local 最后发给R4然后就建立了链接
R2没ping前的nhrp表
首先来看在R1上抓取的ICMP包,能发现是第一轮是由R1做转发,再看R4上抓包发现
R4上抓包在第一次发送ICMP包的同时也会发送NHRP包去向R2申请怎么去
R2在容易了R4的请求后也会发一条NHRP报文给R4并告诉他实际地址是多少,并且序列号是跟发过去的序列号是一样的
R2上已经生成了R4的NHRP映射信息了
R4上的NHRP表上增添了关于R2的信息
shortcut方式
此时去R2环回pingR3环回发送的都是ICMP包,他并没有发送NHRP包,这是因为在shortcut模式下他并不知道自己的写的下一跳是错误的,因为在NHRP 表中他看到protocol-addr和下一跳是一样的,R2就认为是对的,并没有发NHRP包去请求R3所以只有ICMP包
在shortcut方式下需要添加的配置
开启这个功能R1就会将这个ICMP报文与自己的映射表做比对,并且判断是否在同一广播域,如果在同一广播域并且正确则不做回复,如果不正确就会通知R2你的是错的并且需要跟R1申请映射关系
[r1-Tunnel0/0/0]nhrp redirect ---- 开启重定向功能。默认情况下是未启动
开启重定向功能在使用R2 ping一下R4
此报文是R1给R2回的NHRP包告诉R2需要向R1申请映射关系
这个时候去查一下R2的表发现并没有加表,也就是说R2仍然认为自己是对的,他不听
此时需要开启R2的nhrp的 shuortcut配置
[r2-Tunnel0/0/0]nhrp shortcut
去ping一下R4发现这个表已经加载出来了,这个时候R2跟R4建立了单向的链接,如果要双向需R4同样也开启NHRP shortcut配置
这里能发现R4已经给R2回一个NHRP报文了这个时候R2才会修改他的NHRP表