HCIP的学习(4)

GRE和MGRE

复制代码
VPN---虚拟专用网络。
	指依靠ISP(运营商)或其他公有网络基础设施上构建的专用的安全数据通信网络。该网络是属于逻辑上的。

核心机制---隧道机制(封装技术)

GRE---通用路由封装

三层隧道技术,并且是属于点到点的隧道

复制代码
[r1]interface Tunnel 0/0/0  ---创建一个虚拟隧道接口(接口序号只能变最后一个数字,范围:0/0/0-0/0/511)
[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   ---定义封装中的源地址信息
[r1-Tunnel0/0/0]destination 23.0.0.3  ---定义封装中的目的地址信息

r1配完,r3也要1配置

测试隧道是否成功建立:
[r1]ping 192.168.3.3     ----ping对方的隧道地址
  PING 192.168.3.3: 56  data bytes, press CTRL_C to break
    Reply from 192.168.3.3: bytes=56 Sequence=1 ttl=255 time=20 ms
    Reply from 192.168.3.3: bytes=56 Sequence=2 ttl=255 time=20 ms
    Reply from 192.168.3.3: bytes=56 Sequence=3 ttl=255 time=30 ms
    Reply from 192.168.3.3: bytes=56 Sequence=4 ttl=255 time=30 ms
    Reply from 192.168.3.3: bytes=56 Sequence=5 ttl=255 time=30 ms

一定要添加私网路由信息,将其导入到隧道接口

复制代码
[r1]ip route-static 192.168.2.0 24 192.168.3.3
[r3]ip route-static 192.168.1.0 24 192.168.3.1

测试:
[r1]ping -a 192.168.1.1 192.168.2.1   ---要使用-a规定源IP,不然路由器会使用12.0.0.1去测试

**扩展:**接收方在接收到报文时看到封装后的目的IP是自己的,往常逻辑会直接对三层进行解封装,但是GRE不同,接口看到报文的协议号为47(GRE协议号:47),就会直接将报文完整的交给隧道接口,因为它本身接口没有开启GRE协议,就算解封装了不认识GRE也会直接将报文丢了

keepalive机制

复制代码
keepalive机制是用来检测隧道对端是否可达。(一般一端开启即可,因为发送和回复的报文都是keepalive报文,
内容都是一样的)
当某端开启该机制后,会周期性发送keepalive报文,对端收到后会回复keepalive报文。当一定次数未收到回复
报文,则认为该隧道不可用。(默认3次,每一次发送时间间隔为5秒)


[r1-Tunnel0/0/0]keepalive 
[r1-Tunnel0/0/0]keepalive period 10 retry-times 5   ---用来更改次数与时间间隔(5次,间隔10秒)
	period:设置发送周期
	retry-times:重传次数

MGRE---多点通用路由封装

NHRP---下一跳解析协议

复制代码
MGRE环境是属于P2MP网络,可以近似的看做是NBMA网络。但是其本质还是点到点。
	
Hub and Spoke架构---中心到站点架构
	
在私网环境中,选择一个出口物理IP不变的设备作为NHRP的中心节点(NHS)。这样,剩下的分支就
可以知晓中心的隧道IP和物理IP地址。然后NHRP协议要求所有分支将自己的物理IP和隧道IP的对应关系
发送给NHS(一旦发生改变就会发送)。这样NHS就拥有所有分支的地址映射关系,并记录在本地。
在发送数据报文之前,查询NHS决定封装数据。
复制代码
中心:
[r1]interface Tunnel0/0/0
[r1-Tunnel0/0/0]ip address 192.168.5.1 255.255.255.0 
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp  ---修改接口的封装协议为MGRE
[r1-Tunnel0/0/0]source 15.0.0.1

[r1-Tunnel0/0/0]nhrp network-id 1    --默认值为0(范围:1-4294967295),改不改都行,要改所有的设备都要改


分支:
[r2] Tunnel0/0/0
[r2-Tunnel0/0/0]ip address 192.168.5.2 255.255.255.0 
[r2-Tunnel0/0/0]tunnel-protocol gre p2mp
[r2-Tunnel0/0/0]source GigabitEthernet0/0/0   ---规定封装源为GE0/0/0接口的IP地址
[r2-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register   --第一个IP为隧道地址,第二个为物理地址(都是中心的)
 1、告知本端,hub节点的隧道IP与物理IP的对应关系;
 2、向hub节点注册本地的隧道IP与物理IP的对应关系;
 
 
 
补全路由信息:
[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

[r2]ip route-static 192.168.1.0 24 192.168.5.1  ----下一跳均为Hub节点
[r2]ip route-static 192.168.3.0 24 192.168.5.1

[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

  • NHRP

    shortcut方式:分支路由汇聚到总部,每一个分支编写的路由信息的下一跳均为hub节点。

    非shortcut方式:非便捷方式,分支之间相互学习路由。下一跳分别是分支的隧道IP地址。而非hub节点。

扩展:

Hub - Spoke:NHRP映射表静态关系

Spoke - Spoke:NHRP映射表动态关系

在非shortcut方式下,NHRP映射表动态关系:7200S(2小时)老化时间

非shortcut

解释:(图中的数字为报文顺序)

  1. 首先,在r2里有着3.0网段下一条对应虚拟网段接口5.3,虚拟网段接口5.1对应真实接口吓一跳15.0.0.1,r3中有着2.0网段下一条对应虚拟网段接口5.2,虚拟网段接口5.1对应真实接口吓一跳15.0.0.1
  2. r2要发送信息给3.0网段时,知道要发送给虚拟网段接口5.3,但NHRP表中没有对应虚拟网段接口5.3的真实端口IP,发现缺少(有误就封装中心的对应真实接口,让中心转发)。而此时有ICMP数据需要发送(ICMP数据发送优先级比填补缺少对应高),所以先发送ICMP数据给r1(hub),随后发送NHRP报文,问r1要r3的地址信息。
  3. r1先接收到ICMP报文,查看是给r3的,就进行转发给r3,随后接收到NHRP报文,虽然r1有r3的地址信息,但r1不会直接回复,会转发给r3(征求r3意见)
  4. r3先接收到ICMP报文,正常回复ICMP报文,随后接收到NHRP请求报文,r3直接发送给r2(因为NHRP请求报文中有原IP信息:25.0.0.2),虽然NHRP请求报文中有r2的NHRP映射关系,但r3并不会保存下来,因为在r3看来并不是我主动要的,优先度最低,不可信。只有自己要的才是可信的,但r2接收到r3发送的NHRP应答报文,会直接将r3虚拟网段接口5.3的对应真实接口35.0.0.3写进NHRP映射表中,因为这是r2主动请求的。
  5. 此时,r1将r3发送的ICMP报文转发给r2,r2要再发送ICMP报文就直接发送给r3
  6. 而r3要去回复ICMP报文报文时,发现NHRP表中没有对应虚拟网段接口5.2的真实端口IP,他也要发送NHRP请求报文给r1,然后r1转发给r2,r2再直接发送NHRP应答报文给r3,当r3将虚拟网段接口5.2的对应真实接口25.0.0.2写进NHRP映射表中时,两者的虚拟隧道就算建立起来了。
  7. 当r2与r3两者都不发消息,不发消息超过7200S(2小时)老化时间,这条隧道就会被拆除。

shortcut

解释:(图中的数字为报文顺序)

  1. r2要发送ICMP报文给r3,先发送给r1(因为是shortcut方式,所以去往3.0网段下一跳写的就是5.1,5.1在NHRP映射表中有,所以在r2看来没有错误),r1接收后将ICMP报文转发给r3,再给r2发送重定向报文(原因和携带内容下面配置后面有写)。
  2. r2接收到重定向报文,像r1发送NHRP请求报文,r1再转发给r3,r3接收到NHRP请求报文,就直接给r2发送NHRP应答报文。
  3. 有区别的是:r3接收到第一次r1转发的ICMP报文,会给r1发送ICMP回复报文,r1接收后,也会转发给r2,但也会给r3发送一个重定向报文(原理与上面一样),r3也会给r1发送一个NHRP请求报文,与上面一样,最后r2与r3都NHRP映射表数据都改了,就建立了一个虚拟隧道
复制代码
在shortcut方式下,如果需要分支之间独立建立隧道,则需要添加如下配置:

[r1-Tunnel0/0/0]nhrp redirect   ---hub节点配置,开启重定向功能(r1发现数据从r2发送进入Tunnel0/0/0,
又从Tunnel0/0/0出去转发给r3,发现是次优路径,才会给r2发送重定向报文,报文里面有3.0网段对应的
真实端口IP为192.168.5.3)
[r2-Tunnel0/0/0]nhrp shortcut    ---在spoke节点配置,使能shortcut功能,未开启该功能,则代表分支站点
无法响应重定向报文。(如果不开启,r2收到r1的重定向报文,会认为自己可以正常收发消息(去3.0网段下
一跳为5.1,5.1又映射为15.0.0.1),没有错误,不需要更改,直接将重定向报文丢弃)
[r3-Tunnel0/0/0]nhrp shortcut

以非shortcut方式进行DSVPN组网时,分支站点可以自主发现NHRP映射表中存在关系缺少的现象,从而主动向hub节点申请通讯对端的映射关系。而在shortcut组网环境下,分支站点无法自主发现,需要hub节点通过重定向报文参与到分支之间的隧道建立过程

相关推荐
ServBay13 小时前
告别面条代码,PSL 5.0 重构 PHP 性能与安全天花板
后端·php
Qinana19 小时前
从数据包旅程到首屏渲染:深入理解 TCP/IP 如何决定你的 Web 性能
前端·tcp/ip·浏览器
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
JaguarJack3 天前
FrankenPHP 原生支持 Windows 了
后端·php·服务端
BingoGo3 天前
FrankenPHP 原生支持 Windows 了
后端·php
JaguarJack4 天前
PHP 的异步编程 该怎么选择
后端·php·服务端
BingoGo4 天前
PHP 的异步编程 该怎么选择
后端·php
JaguarJack5 天前
为什么 PHP 闭包要加 static?
后端·php·服务端
ServBay6 天前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954486 天前
CTF 伪协议
php