目录

一些概念

实验一:配置基于静态路由的GRE隧道

需求和拓扑

操作步骤

1、配置接口地址和安全区域

2、配置静态路由

3、设置安全策略默认全通

4、测试是否可通

5、配置gre

6、配置安全区域

验证和分析

1、使用pc1 ping pc2

2、检查fw1的路由表

3、在fw1上使用ping -a 172.16.2.1 172.16.2.2

4、在r1上进行抓包,检查报文情况

5、检查tunnel隧道

6、检查fw的session table

总结一下gre的转发流程

进阶:隧道保活机制

一些其他的问题

1、GRE与IPSec的区别?什么情况下适合使用GRE?

2、Tunnel接口(GRE接口)的作用是什么?什么是隧道源接口和目的接口?

3、Tunnel接口的IP地址作用是什么?隧道两端的IP地址是否必须配置成同一网段?

4、Tunnel接口(GRE接口)是否一定要加入安全区域?

5、多个Tunnel接口(GRE接口)是否可以使用同一个源IP地址?


一些概念

gre:通用路由封装,三层pn封装技术。解决跨异种网络的报文传输问题。

封装分为两步,第一步是为原始报文添加gre头,第二步是在gre头前面再加新的ip头,加上新的ip头后,就可以在新的网络上传输了。

gre的封装是通过逻辑接口tunnel完成的,这个接口是一个通用的隧道接口,所以需要设置接口的封装协议。

实验一:配置基于静态路由的GRE隧道

需求和拓扑

FW_A和FW_B通过Internet相连,两者公网路由可达。网络1和网络2是两个私有的IP网络,通过在两台FW之间建立GRE隧道实现两个私有IP网络互联。

操作步骤

1、配置接口地址和安全区域

2、配置静态路由

3、设置安全策略默认全通

4、测试是否可通

5、配置gre

5.1 配置tunnel隧道接口

//f1
interface Tunnel1ip address 172.16.2.1 255.255.255.0tunnel-protocol gresource 1.1.1.1//源目隧道地址是公网地址destination 5.5.5.5gre key cipher 123456
//f2
interface Tunnel1ip address 172.16.2.2 255.255.255.0tunnel-protocol gresource 5.5.5.5//源目隧道地址是公网地址destination 1.1.1.1gre key cipher 123456

为了提高GRE的安全性,隧道双方支持对对端设备的身份验证。建立隧道的双方事先约定好一个密钥,在传输GRE报文的时候,该密钥信息会被封装到GRE头中,接收端在收到GRE报文时会用自己的密钥和报文中的密钥进行比对。密钥一致则验证通过;密钥不一致,则表示对方身份不合法,丢弃此报文。

5.2 将tunnel接口加入安全区域dmz

firewall zone dmzadd interface Tunnel1

5.3 配置到达对端私网的路由走tunne隧道

//f1
ip route-static 10.1.2.0 24 Tunnel 1
//f2
ip route-static 10.1.1.0 24 Tunnel 1

5.4 配置f1和f2之间公网静态路由,保证公网接口可达(很重要,否则看不到路由表中的隧道路由,官方文档中没有提及这个)

//f1
ip route-static 5.5.5.5 255.255.255.255 1.1.1.2
//f2
ip route-static 1.1.1.1 255.255.255.255 5.5.5.2
//r1
本环境中r1始终没有配置静态路由,实际组网中,只需要保证fw1和fw2的公网接口地址可达即可,本环境中因为和fw1和fw2是直连,所以不需要配置。

6、配置安全区域


//f1f2
security-policyrule name 1
//配置Trust域和DMZ的域间安全策略,允许封装前的报文通过域间安全策略。source-zone dmzsource-zone trustdestination-zone dmzdestination-zone trustaction permitrule name 2
//配置Local和Untrust的域间安全策略,允许封装后的GRE报文通过域间安全策略。source-zone localsource-zone untrustdestination-zone localdestination-zone untrustservice greaction permit

从原始报文进入GRE隧道开始,到GRE报文被FW转出,这个过程报文跨越了两个域间关系(trust---dmz,local--untrust)。由此可以将GRE报文所经过的安全域看成两个部分,一个是原始报文进入GRE隧道前所经过的安全域,一个是报文经过GRE封装后经过的安全域。注意我们配置了Tunnel接口属于DMZ区域。

PC_A发出的原始报文进入Tunnel接口这个过程中,报文经过的安全域间是Trust—>DMZ;原始报文被GRE封装后,FW_A在转发这个报文时,报文经过的安全域间是Local—>Untrust。匹配安全策略1.

当FW_A发出的GRE报文到达FW_B时,FW_B会进行解封装。在此过程中,报文经过的安全域间是Untrust—>Local;GRE报文被解封装后,FW_B在转发原始报文时,报文经过的安全域间是DMZ—>Trust。匹配安全策略2.

这是单向通道,只能放行从PCA到PCB的流量,如果PCB主动发起连接,产生流量,则还需要配置反向策略。所以我们的配置是双向放行。实际网络中,可以根据需要选择是否配置双向通道。

验证和分析

1、使用pc1 ping pc2

2、检查fw1的路由表

[f1]dis ip routing-table
2022-03-01 07:46:08.080
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: PublicDestinations : 10       Routes : 10       Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface1.1.1.0/24  Direct  0    0           D   1.1.1.1         GigabitEthernet
1/0/11.1.1.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
1/0/15.5.5.5/32  Static  60   0          RD   1.1.1.2         GigabitEthernet
1/0/110.1.1.0/24  Direct  0    0           D   10.1.1.1        GigabitEthernet
1/0/010.1.1.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
1/0/010.1.2.0/24  Static  60   0           D   172.16.2.1      Tunnel1127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0172.16.2.0/24  Direct  0    0           D   172.16.2.1      Tunnel1172.16.2.1/32  Direct  0    0           D   127.0.0.1       Tunnel1

可以看到有3条路由的接口指向了tunnel接口,一条是我们配置的静态路由,10.1.2.0/24,其下一跳是172.16.2.1,这是隧道地址,另外两条是tunnel接口所在网络的地址。需要将fw1和fw2的隧道地址配置在一个网段内。

3、在fw1上使用ping -a 172.16.2.1 172.16.2.2

[f1]ping -a 172.16.2.1 172.16.2.2PING 172.16.2.2: 56  data bytes, press CTRL_C to breakRequest time outRequest time outRequest time outRequest time outRequest time out--- 172.16.2.2 ping statistics ---5 packet(s) transmitted0 packet(s) received100.00% packet loss

即使将fw1和fw2的安全策略设置为全通都是无法ping通的。

4、在r1上进行抓包,检查报文情况

可以看到gre报头在实际的ip头之上,并且在gre外又封装一层ip头,这个ip头的源目地址是fw的公网地址。

GRE报文头中的flags字段的Key标识位置1,表示启用了身份验证功能,为0表示未启用身份验证功能,FW中GRE缺省未开启此功能。

5、检查tunnel隧道

<f1>dis interface Tunnel 1
2022-03-03 04:00:48.000
Tunnel1 current state : UP
Line protocol current state : UP
Last line protocol up time : 2022-03-03 03:51:09
Description:Huawei, USG6000V1-ENSP Series, Tunnel1 Interface
Route Port,The Maximum Transmit Unit is 1500
Internet Address is 172.16.2.1/24
Encapsulation is TUNNEL, loopback not set
Tunnel source 1.1.1.1 (GigabitEthernet1/0/1), destination 5.5.5.5
Tunnel protocol/transport GRE/IP, key enabled
keepalive disabled
Checksumming of packets disabled
Current system time: 2022-03-03 04:00:48300 seconds input rate 0 bits/sec, 0 packets/sec300 seconds output rate 0 bits/sec, 0 packets/sec13 seconds input rate 0 bits/sec, 0 packets/sec13 seconds output rate 0 bits/sec, 0 packets/sec7 packets input,  616 bytes0 input error10 packets output,  792 bytes1 output errorInput:Unicast: 7 packets, Multicast: 0 packetsOutput:Unicast: 10 packets, Multicast: 0 packetsInput bandwidth utilization  : --Output bandwidth utilization : --

6、检查fw的session table

[f1]dis fire session table
2022-03-01 08:23:05.790 Current Total Sessions : 19icmp  VPN: public --> public  10.1.1.100:17719 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:20279 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:20535 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:18999 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:18743 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:18231 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:17975 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:18487 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:17463 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:16183 --> 10.1.2.100:2048gre  VPN: public --> public  5.5.5.5:0 --> 1.1.1.1:0icmp  VPN: public --> public  10.1.1.100:16695 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:21047 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:17207 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:19767 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:19511 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:20791 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:19255 --> 10.1.2.100:2048icmp  VPN: public --> public  10.1.1.100:16951 --> 10.1.2.100:2048

总结一下gre的转发流程

PC_A通过GRE隧道访问PC_B时,FW_A和FW_B上的报文转发过程如下:

  1. PC_A访问PC_B的原始报文进入FW_A后,首先匹配路由表。
  2. 根据路由查找结果,FW_A将报文送到Tunnel接口进行GRE封装,增加GRE头,外层加新IP头。
    10.1.2.0/24  Static  60   0           D   172.16.2.1      Tunnel1
  3. FW_A根据GRE封装后报文的新IP头的目的地址(5.5.5.5),再次查找路由表。
     5.5.5.5/32  Static  60   0          RD   1.1.1.2         GigabitEthernet1/0/1
  4. FW_A根据路由查找结果经R1中转将报文发送至FW_B.
  5. FW_B收到报文后,首先判断这个报文是不是GRE报文。

    如何判断?抓包可以看到封装后的GRE报文会有个新的IP头,这个新的IP头中有个Protocol字段,字段中标识了内层协议类型,如果这个Protocol字段值是47,就表示这个报文是GRE报文。如果是GRE报文,FW_B则将该报文送到Tunnel接口解封装,去掉新的IP头、GRE头,恢复为原始报文;如果不是,则报文按照普通报文进行处理。

  6. FW_B根据原始报文的目的地址再次查找路由表,然后根据路由匹配结果将报文发送至PC_B。

进阶:隧道保活机制

  1. 缺省情况下,未启用GRE的Keepalive功能。
  2. GRE的Keepalive功能是单向的,对端是否支持或启用Keepalive功能不影响本端的Keepalive功能。但建议在GRE隧道两端都启用Keepalive功能。
  3. period表示本端发送keeplive报文的时间间隔。默认5s。如果本端发送retry-times次keeplive报文后,对端仍没有回应,则认为对端不可达。
  4. 启用GRE的Keepalive功能后,GRE隧道的本端会周期性的向对端发送keepalive报文,以检测GRE隧道的状态。如果GRE隧道对端不可达,本端的Tunnel接口状态会被置为Down。这就避免了因对端不可达而造成的数据黑洞。

我们给fw2的tunnel1配置了keepalive,从而周期性发gre keepalive报文。可以看到一个bug,wireshark显示源目地址是1.1.1.1----5.5.5.5,打开一看发现还是5.5.5.5---1.1.1.1。通过报文分析我们知道gre 保活报文实际上还是gre报文的一种,他在上层的ip头部的protocol封装还是47,在gre报文头中,falgs字段的key标识置位仍有效,即对保活报文还是可以认证的。

接着往下看

包裹的ip报文(第二层ip)的源目地址还是隧道绑定的公网地址,这是和普通gre报文不一样的地方,实际上也很好理解,即我们做保活本来也是对于隧道的保活,并没有什么私网地址的概念在里面。这一层ip头中仍然在protocol字段标了47,表示下层是gre报文。在下层的gre报文中,protocol type字段标注0x0000.表示这是一个保活字段,而对于正常的gre报文,他的该字段会写0x0800,这表示下层是ip字段,实际上在mac层,也有类似的字段type,如果下层是ip层,一样也是0x0800.

看看fw1给fw2的保活响应回包。

这只有一层ip报头,里面是gre的回包内容。

我们对比一下

去包

回包

一些其他的问题

1、GRE与IPSec的区别?什么情况下适合使用GRE?

IPSec目前只能对单播报文进行加密保护,不能对组播报文进行加密保护。而GRE可以将组播报文封装成单播报文,但不能对报文进行加密保护。

GRE的最大作用是对路由协议、语音、视频等组播报文或IPv6报文进行封装。

2、Tunnel接口(GRE接口)的作用是什么?什么是隧道源接口和目的接口?

Tunnel接口(GRE接口)的作用是对数据报文进行GRE封装及解封装。负责发送封装后的报文的物理接口叫做隧道源接口,对端接收此报文的物理接口叫做隧道目的接口。

一般情况下,选择本端设备与公网相连的物理接口作为隧道源接口,选择对端设备与公网相连的物理接口作为隧道目的接口。

3、Tunnel接口的IP地址作用是什么?隧道两端的IP地址是否必须配置成同一网段?

Tunnel的IP地址只是为了使Tunnel接口UP起来,属于必配参数,但是该IP地址并不参与报文封装。

在使用静态路由将流量引导到GRE隧道的场景中,隧道两端的Tunnel接口IP地址可以不在同一个网段。但在OSPF动态路由的GRE隧道应用场景中,隧道两端的Tunnel接口就必须在同一个网段,这是因为不在同一网段时,会导致Tunnel接口建立邻接关系失败,影响到路由学习。

4、Tunnel接口(GRE接口)是否一定要加入安全区域?

Tunnel接口必须要加入到安全区域,一般是DMZ域,因为GRE中报文所经过的安全域间与Tunnel接口所在的安全域有关联。

5、多个Tunnel接口(GRE接口)是否可以使用同一个源IP地址?

多个Tunnel接口不能使用同一个源IP地址。

HCIE-Security Day20:GRE协议:实验(一)配置基于静态路由的GRE隧道相关推荐

  1. 计算机网络实验二 路由器的配置和静态路由

    实验二 路由器的配置和静态路由 一.实验目的: 掌握设备系统参数的配置方法 掌握配置路由器接口IP地址的方法 掌握测试两台直连路由器连通性的方法 掌握静态路由以及静态备份路由的配置方法 掌握测试静态路 ...

  2. 实验 – 配置 IPv4 静态路由和默认路由(教师版)步骤在末尾,报告结束以后(二十步解决,不用听课,闭着眼照着步骤做就没问题)

    实验 – 配置 IPv4 静态路由和默认路由(教师版) 教师注意事项:红色字体或灰色突显的部分表示仅显示在教师副本上的文本. 拓扑 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 G0/ ...

  3. 华为实验 | 配置 IPv4 静态路由基本功能

    先看看本文目录: 规格 组网需求 操作步骤 步骤1 RouterA的配置 步骤2 RouterB的配置 步骤3 RouterC的配置 步骤4 配置主机 步骤5 配置交换机 步骤6 验证配置结果 配置注 ...

  4. 静态路由实验 +http+dns_华为静态路由配置实验

    本试验主要实验静态路由的三个主要特性 1.单向性 仅为数据提供沿着下一跳的方向进行路由,不提供反向路由.如果要使源节点域目标网络进行双向通信,必须同时配置回程静态路由 2.接力性 如果某条静态路由中间 ...

  5. 思科模拟器,计算机网络实验三之:静态路由配置

    静态路由配置是基于相对简单的的网络使用的,如果网络较复杂,则使用起来会很复杂,届时应选择动态路由配置 [实验名称]静态路由配置. [实验目的]理解静态路由的工作原理,掌握如何配置静态路由. [背景描述 ...

  6. 实验二(1)-配置 IPv4 静态路由和默认路由

    目录 一.拓扑 二.地址分配 三.目标 第 1 部分:设置拓扑并初始化设备 第 2 部分:配置基本设备设置并验证连接 第 3 部分:配置静态路由 配置递归静态路由. 配置直连静态路由. 配置和删除静态 ...

  7. 实验八 路由器静态路由配置

    实验八 路由器静态路由配置 一.实验目标 掌握静态路由的配置方法和技巧: 掌握通过静态路由方式实现网络的连通性: 熟悉广域网线缆的链接方式: 二.实验背景 学校有新旧两个校区,每个校区是一个独立的局域 ...

  8. linux配置ipv6静态路由,IPv6静态路由配置

    IPv6静态路由 命令: R1(config)#ipv6 unicast-routing //启用IPv6路由 R1(config-if)#ipv6 address 2010:1111::1/64 / ...

  9. 3分钟配置好静态路由

    实验目的 1. 了解静态路由的原理 2. 掌握静态路由的配置 实验任务 1. 任务1 2. 任务2 任务1:实验拓扑 任务1:实验需求 1. 根据实验拓扑图,完成设备的基本配置: 2. 在路由器R1. ...

  10. 路由器配置和静态路由

    路由器配置和静态路由 作者意图: 计算机网络第一次碰到让我头疼的实验,因为课程进度和实验进度不一样,特意记录下来,用于以后的学习!只是简要的说一下实验报告中的思考题,能做出来,但底层原理还是有些不懂, ...

最新文章

  1. 【设计模式】从设计到模式
  2. 面向对象3(final、static、instanceof、向上/向下转型、初始化次序)
  3. 如何正确地修改.data和.item文件的‘utf-8’格式
  4. 金融业对区块链必须有足够认识
  5. netty系列之:使用netty搭建websocket客户端
  6. Update与JOIN使用
  7. 【简单粗暴】如何给网页嵌入视频
  8. php strpbrk,PHP 字符串
  9. 蘑菇街移动端混合开发体系的研发与实践
  10. K进制 nyoj882
  11. Intel APIC Configuration
  12. 硅谷课堂 13_公众号点播课程和直播管理
  13. python画创意图形_前端图形——绘图、截图、合成动图
  14. 云计算实验(二)Hadoop 练习
  15. 批量修改RTX腾讯通用户密码
  16. 牛市股票还会亏钱?——外观模式。
  17. 是时候和else关键字说再见了……
  18. Matlab:数学之美--绘制分形图形
  19. Web组态编辑器赋能智慧石油生产储运2D可视化
  20. 动真格了!苹果下架超5万款游戏App, 辛好我有企业签

热门文章

  1. 基于汉语短文本对话的立场检测系统理论与实践
  2. Highway Networks
  3. 深度学习之RNN、LSTM及正向反向传播原理
  4. 一文搞懂常见概率分布的直觉与联系
  5. [论文笔记]Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
  6. 博文荐书:阿里运维、Java微服务、Scala编程
  7. RESTful WebServices Cookbook中文版
  8. 软件架构发展的几个阶段
  9. python函数式编程:apply, map, lambda和偏函数
  10. pytorch 方法笔记