IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HCIE-Security Day35:IPSec-NAT-T -> 正文阅读

[网络协议]HCIE-Security Day35:IPSec-NAT-T

NAT穿越场景

在ipsec pn部署中,如果发起者比如fwc位于私网内部,而它希望与fwa之间直接建立一条ipsec隧道,这种情况下nat会对部署ipsec pn网络造成障碍。

在多站点企业中,有的站点连动态的公网IP地址都没有,只能先由网络中的nat设备进行地址转换,然后才能访问internet,此时如果同时需要和另一个站点建立ipsec通道的话,就存在问题。

IPSec是用来保护报文不被修改的,而NAT却专门修改报文的IP地址,所以肯定存在问题。

协商IPSec的过程是由isakmp报文完成的,isakmp报文封装在udp中,源目端口都是500,nat设备可以转换该消息的ip地址和端口,因此isakmp消息可以完成nat转换,协商得到IPSec sa,但是数据流量是通过ah或者 esp进行封装的,在nat转换过程中存在问题。

NAT对IPSec的影响

IKE协商问题

NAT转换会改变对等体的ip地址,在IKEV1主模式+预共享密钥验证下,由于依赖IP地址标识身份,所以存在问题。

由于野蛮模式不依赖ip地址标识身份,使得野蛮模式+预共享密钥验证不影响。

解决方式

开启NAT-T。

AH+NAT问题

NAT的存在对其是致命的。因为AH对包括最外层IP头部的整个包进行认证。但是地址转换会改变IP地址,从而破坏ah的hash值,因此使用ah的ipsec隧道无法穿越nat设备。

传输模式

隧道模式

no-pat+ESP传输模式问题

隧道模式默认支持no-pat下形式的nat穿越

no-pat+ESP隧道模式下,ESP对数据包的hash不包括外层ip报头字段,这解决了认证范围包括最外层IP头部情况下的NAT问题,足以满足隧道模式下ESP报文的认证和加密。

传输模式默认不支持no-pat下形式的nat穿越

由于TCP校验问题,在不进行加密的情况下,因为NAT修改了IP地址,所以导致TCP报文中校验和字段变更。这个字段的变更导致了ESP认证范围内数据的变更,使得其无法通过接收方的验证。

在进行加密的情况下,由于TCP首部作为载荷被加密,NAT后虽然IP地址发送了变更,但是由于TCP头部被加密,NAT设备无法更新TCP校验和,接收方收到后进行TCP报文校验时会失败。

TCP报文

TCP的校验和计算和IP头部的校验和计算方法是一致的,但是覆盖的数据范围不一样。TCP校验和覆盖TCP首部和TCP数据,而IP首部中的校验和只覆盖IP的头部。TCP的校验和是必需的,而UDP的校验和是可选的。TCP和UDP计算校验和时,都要加上一个12字节的伪首部。

伪首部包含:源IP地址、目的IP地址、保留字节(置0)、传输层协议号(TCP是6)、TCP报文长度(报头+数据)。伪首部是为了增加TCP校验和的检错能力:如检查TCP的源和目的IP地址、传输层协议等。?

napt+ESP问题

NAPT转换,多个内部地址复用一个外部地址,并且使用传输层端口来区分不同流量,由于ESP报文中TCP的端口已经加密无法修改,所以对于同时转换端口的NAT来说,ESP没法支持。

解决方式

在建立IPSec隧道的两个防火墙上同时开启nat穿越功能(NAT traversal)。开启后,当需要穿越NAT设备时,就会在最外层IP头部和ESP头部之间插入一个标准UDP头部,使得ESP报文被封装在UDP头中,UDP头部中源目端口均是4500。这样就可以承载NAT修改IP地址和端口地址的需求了。

NAT表项老化问题

NAT设备上的NAT会话表项有一定的存活时间,如果IPSec隧道建立后长时间没有报文进行NAT穿越,NAT设备会删除该NAT会话表项,这将导致在NAT设备外网侧的对等体无法继续传输数据。为防止NAT表项老化,NAT设备内网侧的IKE SA会以一定的时间间隔向对端发送NAT Keepalive报文,以维持NAT会话的存活。

IPSEC与NAT并存问题

在防火墙的转发流程中,NAT在上游环节,IPSec在下游环节,所以ipsec流量会收到nat处理流程的干扰,即原本应该进入IPSec隧道的流量一旦命中nat策略就会进行nat转换,转换后的流量不会再匹配ipsec中的acl了,也就不会进行IPSec处理了。

IPSEC+源NAPT

需要进入ipsec隧道的流量提前匹配了源NAPT策略,导致地址发生改变,没有匹配到IPSec通过ACL定义的感兴趣流,从而没有进入ipsec隧道。

解决方式

在nat策略中配置优先级最高的针对ipsec流量不进行地址转换的策略,并且该策略中定义的流量范围是其他策略的子集。这样ipsec流量会先命中不进行nat转换的策略,地址不会被转换,也就不会影响下面ipsec 环节的处理,而需要进行nat处理的流量也可以命中其他策略正常转换。

IPSEC+NAT Server

需要进入ipsec隧道的流量提前匹配了nat server生成的反向server-map表项,导致地址发生改变,没有匹配到IPSec通过ACL定义的感兴趣流,从而没有进入ipsec隧道。

解决方式

配置nat server时指定no-reverse参数,不生成反向server-map表项。

NAT穿越分析

NAT-T原理

IKEV1NAT穿越协商

1、协商通信双方是否支持NAT-T

开启NAT 穿越后,IKEV1协商第一阶段的1、2消息(野蛮模式也是1、2消息)会携带标识NAT穿越能力(NAT-T)的vendor id载荷,用于检查通信双方是否支持NAT-T,当双方都在各自的消息中包含了该载荷时,才会进行相关的NAT-T协商。

2、探测NAT网关是否存在及其所在位置

IKEV1协商第一阶段的3、4消息(野蛮模式2、3消息)会携带NAT-D(NAT-Discovery)载荷,用于探测两个要建立IPSec隧道的防火墙之间是否存在nat网关以及nat网关的位置。

协商双方通过NAT-D载荷向对端发送源和目的IP地址与端口的HASH值,接收方收到3、4消息(野蛮模式2、3消息)后对源目IP地址和端口进行hash并与发来的hash值进行对比,就可以判断地址和端口是否被nat设备修改过。NAT-D载荷有两个,第一个为对端ip和端口的hash值,第二个为本端ip和端口的hash值。

解决网络设备如何知道什么时候要加UDP报头的问题

发现NAT网关后,从IKEV1协商第一阶段的5、6消息(野蛮模式从第3个消息)会将ISAKMP消息UDP的源目端口修改为4500,并标识non-esp marker。

3、协商封装模式

IKEV1协商第二阶段会协商是否使用NAT穿越以及NAT穿越时IPSec报文的封装模式:UDP封装隧道模式报文和UDP封装传输模式报文。

IKEV1为ESP报文封装UDP头、UDP报文端口号为4500.当封装后的报文通过NAT设备时,NAT设备对该报文的外层IP头和增加的UDP头进行地址和端口号转换。?

VID:vendor id?

IKEV2NAT穿越协商

1、探测NAT网关位置

开启NAT穿越后,IKE的发起者和响应者都在IKE SA INIT消息对中包含类型为NAT-DETECTION-SOURCE-IP和NAT-DETECTION-DESTINATION-IP的通知载荷。这两个通知载荷用于检测在将要建立IPSec隧道的两个防火墙之间是否存在NAT设备,如果收到的NAT-DETECTION-SOURCE-IP没有匹配到数据包中源IP和源端口的hash,则说明对端位于NAT网关后,如果收到的NAT-DETECTION-DESTINATION-IP没有匹配到数据包中目的IP和端口的hash,说明本端位于NAT网关后。

发现NAT网关后,IKEV2协商的IKE-AUTH消息会将ISAKMP消息UDP的源目端口修改为4500,并标识non-esp marker。

2、协商封装模式

IKEV2为ESP报文封装UDP头、UDP报文端口号为4500.当封装后的报文通过NAT设备时,NAT设备对该报文的外层IP头和增加的UDP头进行地址和端口号转换。?

NAT穿越配置


ike peer a//创建IKE对等体并进入IKE对等体视图。
nat traversal//使能NAT穿越功能。缺省情况下,NAT穿越功能处于开启状态。
quit
ipsec nat-traversal source-port 4500//配置IPSec NAT穿越的端口号。缺省情况下,IPSec NAT穿越的端口号为4500。
ike nat-keepalive-timer interval 20//配置IKE发送NAT Keepalive报文的时间间隔。
缺省情况下,设备发送NAT Keepalive报文的时间间隔为20秒。

实验一:两个网关之间存在NAT设备时通过IKE方式协商IPSec VPN隧道(总部通过Name认证分支)

需求和拓扑

  • 总部属于10.1.1.0/24子网,通过接口GigabitEthernet 0/0/1与FW_A连接。

  • 分支机构属于10.1.2.0/24子网,通过接口GigabitEthernet 0/0/1与FW_C连接。

  • FW_A和FW_C路由可达。

  • FW_B为NAT网关,分支用户必须经过NAT网关才能访问总部。

分支机构的员工需要访问总部的服务器。由于服务器信息较机密,数据经过Internet传输不安全,故需建立IPSec隧道来对传输数据进行加密。

操作步骤

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

2、配置域间安全策略

//f1和f3
security-policy
 rule name 1
  source-zone trust
  destination-zone untrust
  source-address 10.1.1.0 mask 255.255.255.0
  destination-address 10.1.2.0 mask 255.255.255.0
  action permit
 rule name 2
  source-zone untrust
  destination-zone trust
  source-address 10.1.2.0 mask 255.255.255.0
  destination-address 10.1.1.0 mask 255.255.255.0
  action permit
//前两个使得icmp流量通过
 rule name 3
  source-zone local
  destination-zone untrust
  source-address 1.1.2.1 mask 255.255.255.255
  destination-address 1.1.5.1 mask 255.255.255.255
  action permit
 rule name 4
  source-zone untrust
  destination-zone local
  source-address 1.1.5.1 mask 255.255.255.255
  destination-address 1.1.2.1 mask 255.255.255.255
  action permit
//后两个用于控制IPSec隧道两端设备IKE协商报文通过,使其能够进行隧道协商
//f2
security-policy
 rule name 1
  source-zone trust
  destination-zone untrust
  source-address 10.1.5.2 mask 255.255.255.255
  destination-address 1.1.2.1 mask 255.255.255.255
  action permit
 rule name 2
  source-zone untrust
  destination-zone trust
  source-address 1.1.2.1 mask 255.255.255.255
  destination-address 10.1.5.2 mask 255.255.255.255
  action permit

3、配置静态路由

//f1
ip route-static 1.1.5.0 255.255.255.0 1.1.2.2
ip route-static 10.1.2.0 255.255.255.0 1.1.2.2
ip route-static 10.1.5.0 255.255.255.0 1.1.2.2
//f2
ip route-static 1.1.2.0 255.255.255.0 1.1.5.2
ip route-static 10.1.1.0 255.255.255.0 1.1.5.2
ip route-static 10.1.2.0 255.255.255.0 10.1.5.2
//f3
ip route-static 1.1.2.0 255.255.255.0 10.1.5.1
ip route-static 10.1.1.0 255.255.255.0 10.1.5.1
//r
ip route-static 10.1.1.0 255.255.255.0 1.1.2.1
ip route-static 10.1.2.0 255.255.255.0 1.1.5.1
ip route-static 10.1.5.0 255.255.255.0 1.1.5.1

4、配置IPSEC

4.1、配置感兴趣流

//f1
acl number 3000
 rule 5 permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
//f1
acl number 3000
 rule 5 permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255

4.2、配置ipsec安全提议

//f1f3
ipsec proposal tran1
 esp authentication-algorithm sha2-256
 esp encryption-algorithm aes-256

4.3、配置ike安全提议

//f1f3
ike proposal 10
 encryption-algorithm aes-256
 dh group14
 authentication-algorithm sha2-256
 authentication-method pre-share
 integrity-algorithm hmac-sha2-256
 prf hmac-sha2-256

4.4、配置ike peer

//f1
ike peer c
 undo version 2
 pre-shared-key Test!1234
 ike-proposal 10
 remote-id-type fqdn
 remote-id branch
 remote-address 1.1.5.1
 remote-address authentication-address 10.1.5.2
//f3
ike peer a
 undo version 2
 pre-shared-key Test!1234
 ike-proposal 10
 local-id-type fqdn
 remote-id-type ip
 local-id branch
 remote-address 1.1.2.1

4.5、配置ipsec policy

//f1
ipsec policy map1 10 isakmp
 security acl 3000
 ike-peer c
 proposal tran1
//f3
ipsec policy map1 10 isakmp
 security acl 3000
 ike-peer a
 proposal tran1

4.6、接口应用IPSec policy?

//f1f3
interface GigabitEthernet1/0/1
 ipsec policy map1

5、配置NAT

//f2
nat-policy
 rule name 1
  source-zone trust
  destination-zone untrust
  source-address 10.1.5.0 mask 255.255.255.0
  action source-nat easy-ip

验证和分析

1、pc2发起访问,之后pc1和pc2之间可以互访,pc2同时可以访问公网。

在f2上检查nat 转换session表项

<f2>dis fire session table 
2022-04-04 14:21:30.190 
 Current Total Sessions : 1
 udp  VPN: public --> public  10.1.5.2:4500[1.1.5.1:2048] --> 1.1.2.1:4500

?2、f1上可以查看到对应的ike sa

[f1]dis ike sa
2022-04-04 15:30:54.200 
IKE SA information :
 Conn-ID    Peer     VPN              Flag(s)    Phase  RemoteType  RemoteID        
--------------------------------------------------------------------------------
 12    1.1.5.1:2048                  RD|A         v1:2   FQDN        branch          
 10    1.1.5.1:2048                  RD|A         v1:1   FQDN        branch          

  Number of IKE SA : 2
--------------------------------------------------------------------------------
 Flag Description:
 RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT
 HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP
 M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING

3、f3上可以查看到对端为f1的ike sa,f3是发起方,标志位是ST

[f3]dis ike sa
2022-04-04 15:37:45.530 

IKE SA information :
 Conn-ID    Peer     VPN              Flag(s)       Phase  RemoteType  RemoteID        
--------------------------------------------------------------------------------

 11         1.1.2.1:4500             RD|ST|A          v1:2   IP          1.1.2.1         
 9          1.1.2.1:4500             RD|ST|A          v1:1   IP          1.1.2.1         

  Number of IKE SA : 2
--------------------------------------------------------------------------------

 Flag Description:
 RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT
 HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP
 M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING

4、f1上可以查看到一对双向的IPSec sa,对应f3

[f1]dis ipsec sa brief 
2022-04-04 15:39:49.190 

IPSec SA information:
   Src address  Dst address     SPI    VPN        Protocol     Algorithm
 -------------------------------------------------------------------------------
   1.1.5.1      1.1.2.1        184615425          ESP       E:AES-256 A:SHA2_256_128
   1.1.2.1      1.1.5.1        189482996          ESP       E:AES-256 A:SHA2_256_128

  Number of IPSec SA : 2

5、f3上可以查看到一对双向IPSec sa,对应f1

[f3]dis ipsec sa brief 
2022-04-04 15:42:12.900 

IPSec SA information:
   Src address   Dst address    SPI  VPN    Protocol           Algorithm
 -------------------------------------------------------------------------------
   10.1.5.2      1.1.2.1      184615425      ESP           E:AES-256 A:SHA2_256_128
   1.1.2.1      10.1.5.2      189482996      ESP           E:AES-256 A:SHA2_256_128

  Number of IPSec SA : 2

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:25:55  更:2022-04-06 16:26:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:34:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码