GRE over IPsec,IPsec不服,要求IPsec over GRE

简介: GRE over IPsec,IPsec不服,要求IPsec over GRE

上个实验介绍了GRE over IPsec,就是GRE在IPsec之上,在报文封装的时候先封装GRE,再封装IPsec,从报文结构上看起来就是一个IPsec封装的报文,看不到GRE封装的痕迹,是用IPsec保护GRE隧道。


今天在上个实验基础上做一下IPsec over GRE实验,也就是GRE在IPsec之上,在报文封装的时候先封装IPsec,再封装GRE。因为GRE是不加密的,所以今天从报文结构上看,应该是可以看到外层封装GRE隧道、内层封装IPsec隧道的报文结构的,不能说用GRE隧道保护IPsec隧道了,应该是用GRE隧道转发IPsec报文了。


组网需求


RT2和RT4分别连接IPv4私有网络SUBNET 1和SUBNET 5。这两个私有网络使用相同的私网地址192.168.1.0/24。通过在RT2和RT4之间建立IPsec隧道,实现两个相同私有网络的加密互访,并对通过GRE隧道转发IPsec加密报文。


组网拓扑


1677225050278.jpg


配置步骤


开头提到,IPsec over GRE,在报文封装的时候先封装IPsec,再封装GRE,是用GRE隧道转发IPsec报文。


1、相比于上个实验,我们要修改访问控制列表需匹配数据的原始范围,把IPsec的保护数据流更改为两端互访的数据流量;


2、为了对网络间传输的数据先进行IPsec封装,再进行GRE封装,需要配置IPsec隧道的对端IP地址为GRE隧道的接口地址;


3、再把流量丢进GRE隧道就可以了,也就是将IPsec应用到GRE隧道接口上。


怎么样,听起来是不是也很简单?直接看看配置吧!


RT2


#
 sysname RT2
#
interface GigabitEthernet0/0
ip address 192.168.1.2 255.255.255.0
 proxy-arp enable
#
interface GigabitEthernet0/1
ip address 23.1.1.2 255.255.255.0
#
interface Tunnel0 mode gre
 ip address 1.1.1.2 255.255.255.0
 source 23.1.1.2
 destination 34.1.1.4
 gre key 123321
 gre checksum
 ipsec apply policy ipsecogre
#
 ip route-static 34.1.1.0 24 23.1.1.3
 ip route-static 192.168.1.4 32 Tunnel0
 ip route-static 192.168.1.5 32 Tunnel0
#
acl advanced 3400
 rule 0 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.1.0 0.0.0.255
#
ipsec transform-set TRAN
 esp encryption-algorithm 3des-cbc
 esp authentication-algorithm sha1
#
ipsec policy ipsecogre 10 isakmp
 transform-set TRAN
 security acl 3400
 remote-address 1.1.1.4
#
ike keychain key
 pre-shared-key address 1.1.1.4 255.255.255.0 key simple ipsecogre

RT-ISP


#
interface GigabitEthernet0/0
ip address 34.1.1.3 255.255.255.0
#
interface GigabitEthernet0/1
ip address 23.1.1.3 255.255.255.0

RT4

#
 sysname RT4
#
interface GigabitEthernet0/0
ip address 192.168.1.4 255.255.255.0
 proxy-arp enable
#
interface GigabitEthernet0/1
ip address 34.1.1.4 255.255.255.0
#
interface Tunnel0 mode gre
 ip address 1.1.1.4 255.255.255.0
 source 34.1.1.4
 destination 23.1.1.2
 gre key 123321
 gre checksum
 ipsec apply policy ipsecogre
#
 ip route-static 23.1.1.0 24 34.1.1.3
 ip route-static 192.168.1.1 32 Tunnel0
 ip route-static 192.168.1.2 32 Tunnel0
#
acl advanced 3400
 rule 0 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.1.0 0.0.0.255
#
ipsec transform-set TRAN
 esp encryption-algorithm 3des-cbc
 esp authentication-algorithm sha1
#
ipsec policy ipsecogre 10 isakmp
 transform-set TRAN
 security acl 3400
 remote-address 1.1.1.2
#
ike keychain key
 pre-shared-key address 1.1.1.2 255.255.255.0 key simple ipsecogre

配置说明


1、删除物理接口上的IPsec策略;

2、修改ACL匹配流量为两端的私网地址;

3、修改IKE预共享密钥的对端地址和密钥;

4、创建新的IPsec策略,对端地址为对端GRE隧道地址;

4、在GRE隧道接口上应用IPsec策略。


验证配置


查看RT4设备Tunnel口状态。

1677225266303.jpg

可以看到有几个相对关键的指标项:

1、MTU为1468字节,跟GRE over IPsec相同;

2、隧道keepalive功能未开启,开启命令如下:

1677225303463.jpg

3、隧道TTL值为255;

4、GRE over IPv4隧道中安全功能key已设置,密钥为123321;

5、GRE over IPv4隧道中安全功能checksum已设置。

使用display ike sa命令,可以看到第一阶段的SA正常建立。

1677225317949.jpg

使用display ipsec sa命令可以看到IPsec SA的建立情况。

1677225335227.jpg

 

可以看到,IPsec封装在内层,MTU是1412字节;GRE封装在外层,MTU是1468字节。那这次最后会是多少呢?


验证隧道MTU


1677225342574.jpg


可以发现,实际能通过的最大报文大小也是1384字节,跟GRE over IPsec相同。抓个包分析一下。

1677225355159.jpg

这个地方我们捋一下,报文的封装结构应该是[以太网包头][外层IPv4包头] [GRE封装] [ESP报文头] [内层IPv4包头] [ICMP报文] [ESP-T校验字段]。


反过来看,内层数据报文IPsec封装后长度为1464字节,比1384字节的数据长80字节,[ESP报文头] [内层IPv4包头] [ICMP报文] [ESP-T校验字段] 段长度为1444字节,比业务报文还要长60字节;单独使用IPsec封装时,ESP封装的数据长度为1476字节,比业务报文的1400字节长76字节。这次少了16字节,问题出在哪了呢?看来后面要和上次的问题一起验证一下了。


验证两端同子网


现在已经知道两端相同子网互通也是没有问题了。但是单独的IPsec实验不能查看traceroute路径,GRE over IPsec就可以,那这次我们看一下IPsec over GRE可不可以?

1677225374450.jpg

很棒,traceroute路径显示和上次一样,原来使用IPsec over GRE也可以解决,那是不是可以理解为用了GRE隧道就能解决这个问题?


总结


1、IPsec over GRE就是用GRE隧道保护IPsec隧道,从报文结构看起来和GRE报文比较像,但是因为内层封装的是IPsec报文,所以外层显示还是ESP报文。可以看到GRE隧道里面还套了一层IPsec隧道,最终的MTU也是1384字节,和GRE over IPsec相同;


2、不管是先封装GRE隧道,还是先封装IPsec隧道,都可以看到内层报文的traceroute路径,提高了实用性;


3、因为先封装IPsec隧道,所以在调整保护流量时,还是要和单独使用IPsec隧道一样,调整ACL的兴趣流,配置比GRE over IPsec要麻烦。其实,这个麻烦是相对而言的,只是配置ACL要指定两端的网段,并且还是反掩码,而路由则是目的网段和下一跳;


4、补充了上次的遗留问题,IPsec over GRE实际能通过的最大报文大小为1384字节,ESP封装字段的长度为1444字节,比业务报文长60字节;单独使用IPsec封装时,ESP封装的数据长度为1476字节,比业务报文的1400字节长76字节。上次多余的4个字节哪里去了?这次少了16字节,问题又出在哪里呢?


相关文章
|
中间件 数据库连接 API
Python面试:FastAPI框架原理与实战
【4月更文挑战第18天】FastAPI是受欢迎的高性能Python Web框架,以其简洁的API设计、强大的类型提示和优秀的文档生成能力著称。本文将探讨FastAPI面试中的常见问题,包括路由、响应对象、Pydantic模型、数据库操作、中间件和错误处理。同时,还会指出一些易错点,如类型提示不准确、依赖注入误解,并提供实战代码示例。通过理解和实践FastAPI,可以在面试中展示出色的Web开发技能。
660 1
|
12月前
|
SQL 存储 缓存
MySQL执行流程
本文介绍了MySQL的执行流程,分为server层和引擎层。server层包含连接器、查询缓存、解析器、预处理器、优化器等组件,负责SQL的接收、解析、优化及执行;引擎层负责数据的存储与读取。文章详细解释了各组件的功能,如连接器负责用户身份认证,查询缓存提高查询效率,解析器进行SQL的词法和语法分析,预处理器验证表和字段的存在性,优化器选择最优执行计划,最终由查询执行引擎完成查询并将结果返回给客户端。
256 0
MySQL执行流程
|
数据采集 Web App开发 JavaScript
Puppeteer自动化:使用JavaScript定制PDF下载
在现代Web开发中,自动化工具如Puppeteer可显著提升效率并减少重复工作。Puppeteer是一款强大的Node.js库,能够控制无头Chrome或Chromium浏览器,适用于网页快照生成、数据抓取及自动化测试等任务。本文通过示例展示了如何使用Puppeteer自动化生成定制化的PDF文件,并介绍了如何通过配置代理IP、设置user-agent和cookie等技术增强自动化过程的灵活性与稳定性。具体步骤包括安装Puppeteer、配置代理IP、设置user-agent和cookie等,最终生成符合需求的PDF文件。此技术可应用于报表生成、发票打印等多种场景。
529 6
Puppeteer自动化:使用JavaScript定制PDF下载
|
运维 Kubernetes Docker
微服务的成本效益分析
【8月更文第29天】随着微服务架构的流行,越来越多的企业开始考虑采用这一架构模式来构建他们的应用程序和服务。然而,迁移到微服务并非没有代价。本文旨在评估采用微服务架构所带来的成本增加与收益,并探讨如何优化资源使用,以最大化成本效益比。
995 1
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
565 4
|
机器学习/深度学习 数据可视化 算法
如何对某个研究方向的领域论文进行分析?如何快速了解某个研究方向的发展现状?如何利用VOSviewer分析研究领域的发展现状?
本文介绍了如何使用VOSviewer软件对特定研究方向的领域论文进行可视化分析,以ESN(Echo State Network)网络研究为例,展示了从安装软件、检索文献、导入数据到进行关键词分析、作者分析和引用量分析的完整流程,帮助用户快速了解并深入研究某个学术领域的发展趋势和现状。
468 0
如何对某个研究方向的领域论文进行分析?如何快速了解某个研究方向的发展现状?如何利用VOSviewer分析研究领域的发展现状?
|
数据采集 数据可视化 关系型数据库
基于Python flask MySQL的穷游网酒店数据采集与可视化大屏
本文介绍了一个基于Python Flask和MySQL的穷游网酒店数据采集与可视化大屏项目,该项目实现了酒店数据的采集、存储和前端可视化展示,使用户能够直观了解酒店数据分布和价格趋势。
256 1
|
数据采集 存储 数据可视化
穷游网酒店数据采集与可视化分析与实现
本文介绍了一个基于Python Flask框架的穷游网酒店数据采集与可视化分析系统,旨在为用户提供实时、全面的酒店信息,辅助做出更明智的预订决策,并为酒店经营者和市场分析人员提供数据洞察和决策支持。
343 0
穷游网酒店数据采集与可视化分析与实现
|
Java 编译器 程序员
Java一分钟之第一行Java代码:输出"Hello, World!"
【5月更文挑战第7天】本文引导初学者编写运行第一个Java程序——打印"Hello, World!",介绍基本代码结构及常见问题。包括语法错误(如缺少分号、缩进不规范)、编译运行问题(忘记编译、运行错误)和环境配置问题(JDK未安装、环境变量未设置)。建议检查语法、熟悉编译运行流程并正确安装配置JDK。通过实战演练,从编写到运行,迈出Java编程第一步。
581 0
|
安全 网络安全 网络虚拟化
虚拟网络设备与网络安全:深入分析与实践应用
在数字化时代📲,网络安全🔒成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁🔥,传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备🖧,作为网络架构中的重要组成部分,通过提供灵活的配置和强大的隔离能力🛡️,为网络安全提供了新的保障。本文将从多个维度深入分析虚拟网络设备是如何保障网络安全的,以及它们的实际意义和应用场景。