四、IPSec NAT穿越

IPSec NAT穿越

  • 1、IPSec NAT穿越
  • 2、IPSec穿越NAT的处理
  • 3、IKEv2与NAT穿越
    • 3.1、NAT-T能力检测
    • 3.2、NAT网关发现
    • 3.3、NAT穿越的启用
    • 3.4、NAT-keepalive
  • 4、IPSec NAT穿越示例(网关之间存在NAT设备)
  • 5、IPSec NAT穿越示例(两侧存在NAT设备)

——————————————————————————————————————————————————

1、IPSec NAT穿越

NAT技术主要用于解决IPv4地址紧缺问题,在目前网络中NAT应用非常广泛,特别是在企业网出口网关大都使用了NAT技术解决公网地址不足的问题。IPSec提供了端到端的IP通信的安全性,可以实现同一企业集团不同地域分支之间的低成本安全互连。但是IPSec和NAT技术本身存在不兼容的问题。

1、NAT为了完成地址转换,会修改IP报文头的IP地址。

2、IPsec要保证数据的安全,因为会加密数据和校验数据,AH验证范围包含了IP报文头,而NAT修改IP报文头会导致AH检查失败。因此使用AH保护的IPSec隧道是不能穿越NAT网关的。

3、ESP协议保护的部分不包含IP报文头(对隧道方式而言是外层IP报文头)

还有个不兼容的问题,当NAT改变了某个包IP地址和端口,通常更新TCP和UDP校验和,当TCP或UDP校验使用了ESP来加密,就无法更新校验和。导致失败。

1、ESP封装传输模式:TCP和UDP报文头使用ESP加密,从而无法更改校验和,由于IP地址或端口号已经被NAT更改,目的地的校验和检验就会失败,导致ESP封装的传输模式无法与NAT并存。

2、ESP封装隧道模式:将整个原始IP包进行加密,且在ESP头外面新增加了一层IP头部,所以NAT如果只改变最前面的IP地址对后面受到保护的部分是不受影响的。因此,IPSec采用ESP的隧道模式来封装数据可以和NAT共存。

——————————————————————————————————————————————————

2、IPSec穿越NAT的处理

IPSec穿越NAT的流程:

NAT穿越(简称NAT-T):建立IPSec隧道的两端需要进行NAT穿越能力协商,这是在IKE协商的前两个消息中进行的,通过Vendor ID载荷指明的一组数据来标识。

NAT网关发现:通过NAT-D载荷来实现的,在IKE peer之间发现NAT网关的存在以及确定NAT设备在Peer的哪一侧,NAT侧的Peer作为发起者,定期发送NAT-Keepalive报文,使NAT网关确保安全隧道处于激活状态。

ESP报文正常穿越NAT网关:IPSec穿越NAT,简单来说就是在原报文的IP头和ESP头间增加一个UDP报文头,这样ESP报文穿越NAT网关时,NAT对该报文的外层IP和增加的UDP报文头进行地址和端口的转换。

转换后到达对端,与普通IPsec处理方式相同,但在发送响应报文时也要在IP头和ESP头之间增加一个UPD报文头。

在这里插入图片描述

——————————————————————————————————————————————————

3、IKEv2与NAT穿越

——————————————————————————————————————————————————

3.1、NAT-T能力检测

NAT-T能力检测在IKE协商的前两个消息中交换完成,通过在消息中插入一个标识NAT-T能力的Vendor ID载荷来告诉对方自己对该能力的支持。如果双方都在各自的消息中包含了该载荷,说明双方对NAT-T都是支持的。只有双方同时支持NAT-T能力,才能继续进行其他协商。

——————————————————————————————————————————————————

3.2、NAT网关发现

当存在NAT设备时必须使用UDP传输,所以在IKEv2中的第一阶段协商中必须先探测是否存在NAT设备,也就是NAT探测。通过发送NAT-D载荷来实现NAT探测是目前比较流行的方法。

探测通信链路中是否存在NAT设备,在协商双方增加两个Notify载荷,一个包括NAT_DETECTION_SOURCE_IP,标识发起方的IP地址;一个包括NAT_DETECTION_DESTINATION_IP,标识目的方的IP地址。这两个载荷主要是为了探测通信双方是否存在NAT设备,并且确定哪一方处在NAT设备之后。

在IKEv2中,NAT_DETECTION_SOURCE_IP和NAT_DETECTION_DESTINATION_IP在Notify消息类型中的编号分别为:16388和16389。载荷使用通用的ISAKMP载荷头,载荷的值是SPIs、IP地址、发送数据包的端口号的hash值。

SPIs为HDR载荷中的安全索引参数。
IP为数据包发出方或接收方的IP地址。
Port为数据包发出方或接收方的端口号。

当接受方收到数据包后,对数据包中的SPIs、IP地址、端口号进行hash运算,并与Notify载荷进行比较,如果不匹配,则说明通信链路中存在NAT设备:如果与NAT_DETECTION_SOURCE_IP不匹配,则说明发起端在NAT设备之后;如果与NAT_DETECTION_DESTINATION_IP不匹配,则说明接受端在NAT设备之后。

——————————————————————————————————————————————————

3.3、NAT穿越的启用

在第一阶段协商完成之后,协商双方均已经明确是否存在NAT,以及NAT的位置。至于是否启用NAT穿越,则由快速模式协商决定。

NAT穿越的启用协商在快速模式的SA载荷中进行。传输模式下,协商双方可向对端发送IPSec报文的原始地址,从而使对端有可能在NAT转换之后,对TCP/IP进行校验和修正。

——————————————————————————————————————————————————

3.4、NAT-keepalive

在NAT网关上NAT会话有一定的存活时间,因此,隧道建立后如果中间长时间没有报文穿越,就会导致NAT会话被删除,这样将导致无法通过隧道传输数据。解决方法是在NAT会话超时前,发送一个NAT-keepalive给对端,维持NAT会话的存活。

——————————————————————————————————————————————————

4、IPSec NAT穿越示例(网关之间存在NAT设备)

总部属于192.168.100.0/24子网,通过接口G1/0/1与FW2连接。
分支机构属于192.168.1.0/24子网,通过接口G1/0/1与FW1链接。
FW1和FW2路由可达。
AR2为NAT网关,分支用户必须经过NAT网关才能访问总部。

在这里插入图片描述

——————————————————————————————————————————————————

配置接口,网络互通

FW1:

firewall zone trust 
add int g1/0/1
firewall zone untrust 
add int g1/0/0                             

security-policy
default action permit  

int g1/0/0
ip add 1.1.1.1 30
int g1/0/1
ip add 192.168.1.254 24

ip route-static 0.0.0.0 0.0.0.0 1.1.1.2

FW2:

firewall zone trust 
add int g1/0/1
service-manage ping permit
firewall zone untrust 
add int g1/0/0    
service-manage ping permit                         

security-policy
default action permit  

int g1/0/0
ip add 2.1.1.2 30
service-manage ping permit
int g1/0/1
ip add 192.168.100.254 24
service-manage ping permit

ip route-static 0.0.0.0 0.0.0.0 2.1.1.2 

AR2:

int g0/0/0
ip add 1.1.1.2 30
int g0/0/1
ip add 3.1.1.1 30

ip route-static 0.0.0.0 0.0.0.0 3.1.1.2
ip route-static 192.168.1.0 255.255.255.0 1.1.1.1

acl number 3000  
 rule 5 permit ip source 192.168.1.0 0.0.0.255
 rule 10 permit ip source 1.1.1.0 0.0.0.3
interface GigabitEthernet0/0/1
 nat outbound 3000

AR1:

interface GigabitEthernet0/0/0
 ip address 3.1.1.2 255.255.255.252 
interface GigabitEthernet0/0/1
 ip address 2.1.1.2 255.255.255.252 

ip route-static 1.1.1.0 255.255.255.252 3.1.1.1
ip route-static 192.168.100.0 255.255.255.0 2.1.1.1

PC1-PC2已经经过转换了。

在这里插入图片描述
FW1-FW2之间也是通的。

在这里插入图片描述

——————————————————————————————————————————————————

创建ACL,定义由子网192.168.1.0/24去子网192.168.100.0/24的数据流

FW1:
acl number 3100
rule permit ip source 192.168.1.0 0.0.0.255 destination 192.168.100.0 0.0.0.255

——————————————————————————————————————————————————

创建IPSec安全提议

FW1:
ipsec proposal Sec                                                                                                 
esp au sha2-256                                                                                 
esp en aes-128 

FW2:
ipsec proposal Sec                                                                                                 
esp au sha2-256                                                                                 
esp en aes-128 

——————————————————————————————————————————————————

创建IKE安全提议及IKE对等体

FW1:
ike local-name fw1             **配置IKE协商时的名称类型ID**

ike proposal 5                 **配置IKE安全提议**
en aes-128 
au sha2-256 
dh group14  

ike peer fw1                    **配置IKE对等体**
undo version 2
exchange-mode aggressive
ike-proposal 5
pre-shared-key huawei@123 
local-id-type fqdn 
remote-address 2.1.1.1 
nat traversal

FW2:
ike local-name fw2             **配置IKE协商时的名称类型ID**

ike proposal 5                 **配置IKE安全提议**
en aes-128 
au sha2-256 
dh group14  

ike peer fw2                    **配置IKE对等体**
undo version 2
exchange-mode aggressive
ike-proposal 5
pre-shared-key huawei@123 
local-id-type fqdn 
nat traversal

——————————————————————————————————————————————————

创建安全策略

FW1**IKE动态协商方式安全策略**
ipsec policy ipvpn 10 isakmp
security acl 3100
ike-peer fw1
proposal Sec

FW2**策略模板方式配置IKE动态协商方式安全策略**
ipsec policy-template temp1 10
ike-peer fw2
proposal Sec

ipsec policy ipvpn 10 isakmp  template temp1

——————————————————————————————————————————————————

应用接口

FW1:
int g1/0/0 
ipsec policy ipvpn

FW2:    
int g1/0/0 
ipsec policy ipvpn

——————————————————————————————————————————————————

检查结果

在PC1上仍然可以Ping通PC2,执行dis ipsec stat,查看数据包统计信息。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其他用户经过NAT是不受影响的,IPSec隧道建立成功后,PC1访问PC2直接穿透NAT。

——————————————————————————————————————————————————

在IKEv1中的野蛮模式下,只有3个包。

在IKEv1协商:
相比主模式,减少了交换信息的数目,效率高,但是最大的问题是没有对身份信息进行加密保护,不安全。华为不推荐使用野蛮模式。

野蛮模式可以满足特定的网络环境需求:
1、当ipsec隧道中存在nat设备时,需要启用nat穿越功能,而NAT转换会改变对等体的ip地址,由于野蛮模式不依赖ip地址标识身份,使得采用预共享密钥验证方法时,nat穿越只能在野蛮模式中实现。主模式需要开启nat-t功能适应这种环境。
2、如果发起方的ip地址不固定或者无法预先知道,比如pppoe。而双方都希望采用预共享密钥验证方法来创建ike sa,则只能采用野蛮模式。除了野蛮模式,对于这一种场景,还可以使用模板方式。
3、如果发起方已知响应方的策略,或者对响应者的策略有全面的了解,采用野蛮模式能够更快创建ike sa。

更改为主模式后,ISAKMP协商交换的包6个。

在这里插入图片描述

——————————————————————————————————————————————————

1、开启V1 NAT穿越时,协商第一阶段的前两个消息会发送标识 NAT 穿越(NAT Traversal,简称 NAT-T)能力的 Vendor ID 载荷(主模式和野蛮模式都是)。用于检查通信双方是否支持 NAT-T。当双方都在各自的消息中包含了该载荷时,才会进行相关的 NAT-T 协商。

在这里插入图片描述

2、主模式的消息3和4中,野蛮模式的2和3中发送NAT-D(NAT Discovery)载荷,用于探测两个要建立 IPSec 隧道的网关之间是否存在 NAT 网关以及 NAT网关的位置。进行HASH计算,是否一致,一致不存在NAT设备,不一致存在NAT设备。

FW1发送方:HASH值

在这里插入图片描述

第一个NAT-D载荷包含IKE对等体的IP地址和端口的Hash值,第二个NAT-D载荷包含本端的IP地址和端口的Hash值,接收方也计算这两个Hash值。两方计算的哪个Hash值不相等,表明哪个设备在NAT网关后面。

FW2接收方:HASH值(这个截图是在FW1上看的回包,所以下图结果是反的其实)

所以是FW1本段HASH值变化了。所以FW1在NAT网关后面。

在这里插入图片描述

3、发现 NAT 网关后,后续 ISAKMP 消息(主模式从消息 5、野蛮模式从消息 3 开始)的端口号转换为 4500。ISAKMP 报文标识了“Non-ESP Marker”。

当前UDP封装的是ISAKMP消息,此处增加了一个non-ESP marker(为4个值为0的字节),以示跟封装ESP报文有区别。
在这里插入图片描述

4、IKEv1阶段2的SA协商时,需确认是否使用NAT穿越以及NAT穿越的封装模式:UDP-Encapsulated-tunnel和UDP-Encapsulated-transport。确认后,后续传输的ESP报文将都采用UDP封装,UDP封装ESP报文时,没有non-ESP marker字段。

——————————————————————————————————————————————————

使用IKEv2协商

在这里插入图片描述
KEv2的NAT穿越场景中,IKE协商的发起方和响应方在IKE_SA_INIT交换中增加两个N载荷,一个消息类型为NAT_DETECTION_SOURCE_IP,标识发起方的IP地址;另一个消息类型为NAT_DETECTION_DESTINATION_IP,标识响应方的IP地址。

1、消息1和2:在IKE消息中插入两个N载荷,第一个N载荷包含本端的IP地址和端口的Hash值,第二个N载荷包含IKE对等体的IP地址和端口的Hash值,响应方也计算这两个Hash值,两方计算的哪个Hash值不相等,表明哪个设备在NAT网关后面。

在这里插入图片描述

2、消息3和4:完成IKE_SA_INIT后,如果发现NAT设备,则后续UDP报文端口号修改为4500。

在这里插入图片描述

华为防火墙NAT-T无论在IKE1和IKE2中都是默认开启的。

在FW2上查看ipsec sa安全联盟,使用的是Template模板方式,因为不知道FW1的地址,不能主动发起连接。in和out方向NAT staversal:Y ,开启NAT穿越。

在这里插入图片描述

查看FW1,ISAKMP方式,作为IPSEC的发起方。

在这里插入图片描述

——————————————————————————————————————————————————

5、IPSec NAT穿越示例(两侧存在NAT设备)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/122224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows 根据dll生成 lib文件

假设我们现在只有dll,没有lib ,因此有源码但是在Visual Studio 20XX中代码确编译不过去,因为缺少lib文件。 接下来,黄强老师来帮大家演示,如何从dll 反推 lib文件,打开这个工具 第一步,查看一下大概的函数,确认dll有你想要的函数 dumpbin /exports 你的.dll > f…

利用RoboBrowser库和爬虫代理实现微博视频的爬取

技术概述 微博是一个社交媒体平台,用户可以在上面发布和分享各种内容,包括文字、图片、音频和视频。微博视频是微博上的一种重要的内容形式,有时我们可能想要下载微博视频到本地,以便于观看或分析。但是,微博视频并没…

jmeter接口自动化部署jenkins教程

首先,保证本地安装并部署了jenkins,jmeter,xslproc 我搭建的自动化测试框架是jmeterjenkinsxslproc ---注意:原理是,jmeter自生成的报告jtl文件,通过xslproc工具,再结合jmeter自带的模板修改&…

Jekyll框架编译GithubPages,提示没有docs

Jekyll Converters::Scss build issue: No such file or directory dir_chdir - /github/workspace/docs Error: No such file or directory dir_chdir - /github/workspace/docs 解决方案: 修改github page仓库中–> 设置—> pages 把里面的\docs&#xf…

在HTML单页面中,使用Bootstrap框架的多选框如何提交数据

1.引入Bootstrap CSS和JavaScript文件&#xff1a;确保在HTML页面的标签内引入Bootstrap的CSS和JavaScript文件。可以使用CDN链接或者下载本地文件。 <link rel"stylesheet" href"https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css&q…

财报解读:抢滩“睡眠经济”,麒盛科技如何制胜市场?

现代市场经济理论的鼻祖亚当斯密曾说&#xff0c;有需求就有市场&#xff0c;有市场才有发展。 调查研究显示&#xff0c;我国超3亿人存在睡眠障碍&#xff0c;其中超3/4的人晚11点以后入睡&#xff0c;近1/3的人熬到凌晨1点以后才能入睡。针对“睡个好觉”需求的“睡眠经济”…

Oracle递归查询树形数据

实际生活有很多树形结构的数据&#xff0c;比如公司分为多个部门、部门下分为多个组&#xff0c;组下分为多个员工&#xff1b;省市县的归属&#xff1b;页面菜单栏等等。 如果想查询某个节点的父节点或者子节点&#xff0c;一般通过表自身连接完成&#xff0c;但如果该节点的子…

【C++】单例模式【两种实现方式】

目录 一、了解单例模式前的基础题 1、设计一个类&#xff0c;不能被拷贝 2、设计一个类&#xff0c;只能在堆上创建对象 3、设计一个类&#xff0c;只能在栈上创建对象 4、设计一个类&#xff0c;不能被继承 二、单例模式 1、单例模式的概念 2、单例模式的两种实现方式 …

第二章《补基础:不怕学不懂线性代数》笔记

2.1 直观理解向量 2.1.1 理解向量加法与数乘 维度相同的向量之间才可以进行加法运算&#xff0c;向 量进行加法运算时只要将相同位置上的元素相加即可&#xff0c;结果向量的维度保持不变。 向量进行数乘运算时将标量与向量的每个元素 分别相乘即可得到结果向量。 2.1.2 理…

SpringCloud 微服务全栈体系(十三)

第十一章 分布式搜索引擎 elasticsearch 二、索引库操作 索引库就类似数据库表&#xff0c;mapping 映射就类似表的结构。 我们要向 es 中存储数据&#xff0c;必须先创建“库”和“表”。 1. mapping 映射属性 mapping 是对索引库中文档的约束&#xff0c;常见的 mapping …

交流信号继电器 DX-31BJ/AC220V JOSEF约瑟 电压启动 面板嵌入式安装

DX系列信号继电器由矩形脉冲激磁&#xff0c;磁钢保持。本继电器为双绕组。工作线圈可为电压型&#xff0c;亦可为电流型。复归线圈为电压型。继电器的工作电流或工作电压为长脉冲&#xff0c;亦可为脉冲不小于20mS的短脉冲。 系列型号 DX-31B信号继电器DX-31BJ信号继电器 D…

【笔记】结合P02项目——maven继承与聚合

maven的继承关系 P02项目大概是这个样子&#xff0c;下图展示的是其父工程 父工程配置了parent依赖springb-boot-starter-parent&#xff0c;子工程配置其parant为父工程 子工程引用common子工程 maven的版本锁定 管理子工程的版本号问题 父工程添加dependencyManageMent…

【修车案例】一波形一案例(8)

背景介绍&#xff1a;有客户问到如果气缸盖垫片失效&#xff0c;冷却液压力应该会有明显上升&#xff0c;用虹科Pico示波器怎么做这个诊断&#xff1f;我们找到一辆气缸盖垫片和冷却套坏了的丰田AD发动机进行测试分析。 示波器诊断&#xff1a; A通道 - WPS500X压力传感器测冷…

主流超融合多副本机制缺陷与 SmartX 的临时副本策略

多副本机制是超融合软件常用的数据保护方式&#xff0c;可以为存储数据提供冗余保护——即使一个或部分副本异常&#xff0c;系统仍可通过健康副本进行副本恢复。但是&#xff0c;主流实现方式下&#xff0c;这一机制依旧无法避免“副本降级”期间带来的风险&#xff1a;在副本…

视频集中存储EasyCVR平台播放一段时间后出现黑屏是什么原因?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Ubuntu开机无法进入系统,文件根系统目录空间不足导致?

前言&#xff1a; 自己电脑上装的是Win11和Ubuntu20双系统&#xff0c;平时就是切换着用。 偶然有次&#xff0c;Ubuntu提示文件根系统目录空间不足&#xff0c;自己没在意。 结果下次开机进入Ubuntu时候&#xff0c;芭比Q了。。进不了系统 这样的事情发生很多次了&#xff0c;…

Spring Boot自动配置原理、实战、手撕自动装配源码

Spring Boot自动配置原理 相比较于传统的 Spring 应用&#xff0c;搭建一个 SpringBoot 应用&#xff0c;我们只需要引入一个注解 SpringBootApplication&#xff0c;就可以成功运行。 前面四个不用说&#xff0c;是定义一个注解所必须的&#xff0c;关键就在于后面三个注解&a…

超好用!在线即可制作电子产品图册

​电子产品图册是展示产品特点、功能和外观的重要方式之一。通过图册&#xff0c;可以让客户更好地了解产品&#xff0c;增强信任感&#xff0c;从而促进销售。同时&#xff0c;对于企业来说&#xff0c;制作精美的电子产品图册也是展示企业文化和品牌形象的重要手段之一。 一、…

自然语言处理(一):RNN

「循环神经网络」&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一个非常经典的面向序列的模型&#xff0c;可以对自然语言句子或是其他时序信号进行建模。进一步讲&#xff0c;它只有一个物理RNN单元&#xff0c;但是这个RNN单元可以按照时间步骤进行展开…

大语言模型(LLM)综述(六):大型语言模型的基准和评估

A Survey of Large Language Models 前言7 CAPACITY AND EVALUATION7.1 基本能力7.1.1 语言生成7.1.2 知识利用7.1.3 复杂推理 7.2 高级能力7.2.1 人类对齐7.2.2 与外部环境的交互7.2.3 工具操作 7.3 基准和评估方法7.3.1 综合评价基准7.3.2 评估方法 7.4 实证评估7.4.1 实验设…