GRE、MGRE
端口映射:端口映射是Nat地址转换的一种,就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务。当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。这不是将真IP地址直接转到内部提供www服务的主机。如果这样的话,有两个弊端,一是内部机器不安全,因为除了WWW之外,外部网络可以通过地址转换功能访问到这台机器的所有功能;二是当有多台机器需要提供这种服务时,必须有同样多的IP地址进行转换,从而达不到节省IP地址的目的。端口映射功能是将一台主机的假IP地址映射成一个真IP地址,当用户访问提供映射端口主机的某个端口时,服务器将请求转到内部提供这种特定服务的主机;利用端口映射功能还可以将一台真IP地址机器的多个端口映射成内部不同机器上的不同端口。端口映射功能还可以完成一些特定的代理功能,比如代理POP、SMTP、 TELNET等协议。
VPN----虚拟专用网络
依靠ISP(运营商网络)或者其他公用网络基础设施上构建专用的安全数据通信网络。---只不过这个专用网络是逻辑的而非物理的。(不能转发实际的数据。)
虚拟:用户不再需要拥有实际的长途数据电缆,而是使用公共网络资源建立自己的专用网络。
专用:可以定制最符合自身需求的网络。
核心技术:封装技术。
A不能通多B去访问C,因为在公有设备无法存在私有网段路由。
因为公网要有私有网络就会出现跟上图问题,要是两个私网网段相同,公网网络就会把数据包各发一部分跟私网网络,两个私网都能读取数据包。
GRE---通用路由封装(点到点)
红色线路为隧道线路,即虚拟线路。
GRE封装之后新的数据包格式:新IP|GRE|原IP。原IP是两个私网IP 即192.168.1.0/24,新IP是两个私网设备的边界设备出接口IP。即 12.0.0.1/24。
注:这不是加密技术。
配置:
[r1]interface Tunnel 0/0/0 ---创建隧道接口
[r1-Tunnel0/0/0]Ip address 192.168.3.1 24 ---配置隧道IP该ip地址必须为私网地址。
[r3-Tunnel0/0/0]Ip address 192.168.3.2 24 ---配置r3
此时我们会发现Tunnel接口协议层面为down的状态,因为接口默认通讯的基本协议是IP协议,但tunnel隧道通讯的协议必须是gre协议。
解决方法:
[r1-Tunnel0/0/0]tunnel protocol gre ----定义封装方式
[r1-Tunnel0/0/0]source 12.0.0.1 ---定义封装内容,该IP必须为真实的公网出口IP。
[r1-Tunnel0/0/0]destination 23.0.0.3/24 ----目的IP地址
易错:destination 23.0.0.3/24 ---目的IP地址
description 23.0.0.3/24 ---描述信息
最后r1配置通过隧道到r3的路由:
[r1]ip route-static 192.168.1.0 24 192.168.3.2
r3配置跟r1相同,配置完后r1即可跟r3ping通。
GRE报文格式
乘客协议就是最开始构造的ip数据包。封装协议就是最开始GRE的封装头部,传输协议就是新构造的假的数据包。
GRE封装和解封装过程
- 设备从连接私网的接口接收到数据包后,检查报文头部中的目的IP地址字段,在路由表中查找出接口,如果发现出接口为隧道接口,则将报文发送给隧道模块(Tunnel模块)进行处理。
- 隧道模块接收到报文后,首先根据乘客的协议类型和当前GRE隧道配置的校验和参数,对报文进行GRE封装。(添加GRE头部)
- 然后,设备给报文添加新的传输协议,该协议的源IP就是隧道源地址,目的IP为隧道目的地址。(不是隧道配的IP,而是定于的源和目的)
- 最后,设备根据新的条件的IP报文头部中的目的地址,在路由表中查找对应的出接口并发送报文。
- 接收端设备从连接公网的接口收到报文后,首先分析IP报文头部信息(不会解封装),如果发现协议字段类型值为47(GRE协议号),表示数据部分由GRE模块进行处理
- GRE模块去掉IP报文头部和GRE白文头部,并根据GRE报文头部的协议类型字段来判断乘客协议内容。从而交给对应模块处理。
Keepalive检测机制
Keepalive若检测到r1和r3连通失败会干掉tunnel接口。Keepalive是定期发送keepalive报文,5秒一次,若3次未检测到回包,怎认定为连通失败。
Keepalive包是被tunnel模块处理。为了稳定性思考,keepalive只需要在一端配置,另一端无条件配合。
配置:
[r1-Tunnel0/0/0]keepalive p
[r1-Tunnel0/0/0]keepalive period 2---发送间隔
[r1-Tunnel0/0/0]keepalive period 2 retry-time 5---检测次数
MGRE(多个点到点连接)
近似于NBMA网络,只能进行单播,可以理解为P2MP(点到多点)。
由MGRE搭建的网络结构被称为Hub—spoke架构,中心到节点的一种架构方式。(此结构多用于政府网络)中心又被称为下一跳服务器(NHS)
有一个中心,和多个节点,节点之间在刚开始的时候是不互相连接的。且中心节点IP地址必须固定。
配置; ub节点配置
[r1]interface 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
[r1-Tunnel0/0/0]nhrp network-id 100 ---配置区域id类似于ospf的区域号。(不强制配置)
Spoke节点配置
[r2]interface Tunnel 0/0/0
[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 ---以这个接口配置的IP为我的封装原IP
[r2-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register --第一个IP是中心节点tunnel口的IP,第二个IP是物理接口的IP,register是注册。(向中心设备注册并介绍自己的信息)
[r1]display nhrp peer all ---查看nhrp映射表,查看边缘节点的虚拟IP跟物理IP的对应关系。
配置好了之后让r2去ping r3 然后在r1的0/0/0接口抓包会发现r1对一个报文处理四次。
此时如果有很多路由器向r1发送消息,r1的数据处理量
会非常大,会占用r1的大量性能。那如何解决的就需要
用到DSVPN技术。
NHRP---下一跳地址解析协议。
这个协议是典型的c/s架构,即客户端到服务端。
NHRP映射表有两种:
- 静态表项
由网络管理员手工配置,且构造出来的VPN隧道是静态隧道(spoke与hub之间)
- 动态表项
由NHRP协议动态生成。
Hub节点被动获取搭配spoke节点发来的注册信息。
各个spoke节点通过NHRP协议获取到对端的spoke节点的映射关系。
老化时间:7200s。
NHRP映射表建立过程
建立spoke到hub直接的mgre隧道
- spoke向hub发送注册请求报文。
- hub向spoke发送注册应答报文。
Hub发送应答报文后才会生成NHRP映射表。
分之间路由学习
DSVPN支持两种分支见的路由学习方式:
- 分支间互相学习路由---非shortcut方式
每个分支需要学习到所有对端的路由数据,且吓一跳为分支本身。
- 分支路由汇聚到总部---shortcut方式
下一跳为hub设备
建立spoke与spoke之间的mgre隧道
非shortcut方式的建立:r2想访问r4,先查看自己的路由表,
发现要走tunnel接口,然后需要封装,所以再查看NHRP表,发现只有到r1的信息,所以只能封装到r1的Ip,把数据发给r1,r1收到数据后查看路由表和NHRP表并进行重新封装,再把消息分送给r4。
此时r2知道自己的NHRP表是有缺陷的,r2会给r1发送icmp报文的同时会给r1再发送一个NHRP报文(向r1请求r4的NHRP映射表),r1收到报文后,把icmp报文发送给r4同时会告诉r4,r1在要你的NHRP映射关系,r4同意后直接将NHRP表发给r1.
R4把消息发给r2之前会在自己生成一个local属性的NHRP表,再把这个表分送给r2。
shortcut方式的建立:r2给r4发消息,因为shortcut方式
下一跳为hub设备,所以r2会认为自己的封装没有问题,所以就不会再去要r4的信息。此时r1收到r2的icmp报文后会自行判断(需要r1开启重定向功能。),会去提醒r2,让r2提出申请要r4的NHRP表(r2要使能shortcut功能)。此后步骤跟非shortcut一致。
在shortcut方式下需要添加的配置
中心:[r1-Tunnel0/0/0]nhrp redirect ---开启重定向功能,默认情况下为未启动。
分支:[r2-Tunnel0/0/0]nhrp shortcut ---使能shortcut功能
非shortcut用于小型网络,shortcut用于大型网络
DSVPN ---动态智能VPN
有MGRE环境+NHRP协议组成。
缺点:DSVPN不支持广播和组播。
因为传统的VPN技术存在问题。---分部之间无法直接通讯(源分支无法获取目的分支的公网地址,也就无法建立VPN隧道),导致所有的的分支之间的通讯数据只能通过总部HUB设备进行中转。
MGRE:是GRE发展的技术,近似NBMA的形式构建的网络。
MGRE接口:是用于连接MGRE环境的接口。
MGRE隧道: 两个接口建立起来的逻辑隧道,逻辑隧道之间包含着隧道源地址(GRE封装的报文源地址)、目的地址是通过NHRP获取的、接口IP
此技术不支持keepalive检测。