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认证分支)

需求和拓扑

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

操作步骤

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

2、配置域间安全策略

//f1和f3
security-policyrule name 1source-zone trustdestination-zone untrustsource-address 10.1.1.0 mask 255.255.255.0destination-address 10.1.2.0 mask 255.255.255.0action permitrule name 2source-zone untrustdestination-zone trustsource-address 10.1.2.0 mask 255.255.255.0destination-address 10.1.1.0 mask 255.255.255.0action permit
//前两个使得icmp流量通过rule name 3source-zone localdestination-zone untrustsource-address 1.1.2.1 mask 255.255.255.255destination-address 1.1.5.1 mask 255.255.255.255action permitrule name 4source-zone untrustdestination-zone localsource-address 1.1.5.1 mask 255.255.255.255destination-address 1.1.2.1 mask 255.255.255.255action permit
//后两个用于控制IPSec隧道两端设备IKE协商报文通过,使其能够进行隧道协商
//f2
security-policyrule name 1source-zone trustdestination-zone untrustsource-address 10.1.5.2 mask 255.255.255.255destination-address 1.1.2.1 mask 255.255.255.255action permitrule name 2source-zone untrustdestination-zone trustsource-address 1.1.2.1 mask 255.255.255.255destination-address 10.1.5.2 mask 255.255.255.255action 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 3000rule 5 permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
//f1
acl number 3000rule 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 tran1esp authentication-algorithm sha2-256esp encryption-algorithm aes-256

4.3、配置ike安全提议

//f1f3
ike proposal 10encryption-algorithm aes-256dh group14authentication-algorithm sha2-256authentication-method pre-shareintegrity-algorithm hmac-sha2-256prf hmac-sha2-256

4.4、配置ike peer

//f1
ike peer cundo version 2pre-shared-key Test!1234ike-proposal 10remote-id-type fqdnremote-id branchremote-address 1.1.5.1remote-address authentication-address 10.1.5.2
//f3
ike peer aundo version 2pre-shared-key Test!1234ike-proposal 10local-id-type fqdnremote-id-type iplocal-id branchremote-address 1.1.2.1

4.5、配置ipsec policy

//f1
ipsec policy map1 10 isakmpsecurity acl 3000ike-peer cproposal tran1
//f3
ipsec policy map1 10 isakmpsecurity acl 3000ike-peer aproposal tran1

4.6、接口应用IPSec policy

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

5、配置NAT

//f2
nat-policyrule name 1source-zone trustdestination-zone untrustsource-address 10.1.5.0 mask 255.255.255.0action 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 : 1udp  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--TIMEOUTHRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UPM--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--TIMEOUTHRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UPM--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_1281.1.2.1      1.1.5.1        189482996          ESP       E:AES-256 A:SHA2_256_128Number 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_1281.1.2.1      10.1.5.2      189482996      ESP           E:AES-256 A:SHA2_256_128Number of IPSec SA : 2

HCIE-Security Day35:IPSec-NAT-T相关推荐

  1. NAT-T:IPsec穿越NAT之道

    目录 1. IPsec与NAT矛盾 2.  身份确认 3.  NAT-T 3.1 NAT-T流程 3.2 报文格式 4.  地址复用 4.1. 隧道模式下的冲突 4.2. 传输模式下的冲突 4.3. ...

  2. “SCSA-T学习导图+”系列:IPSec VPN原理与应用

    本期引言: 本章主要讲解IPSec VPN相关理论概念,工作原理.从安全和加密原理入手,讲解了IPSec 在VPN对等体设备实现的安全特性,如数据的机密性.数据的完整性,数据验证等.重点分析IPSec ...

  3. Spring Security 实战:基于配置的接口角色访问控制

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...

  4. Spring Security 实战:使用 JWT 认证访问接口

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 欢迎阅读Spring Security 实战 ...

  5. Spring Security 实战:自定义异常处理

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 最近实在比较忙,很难抽出时间来继续更  [S ...

  6. java获取密钥长度_java.security.InvalidKeyException:解密期间密钥大小错误

    在解密期间,我得到的是"错误的密钥大小"或"给定的最终块未正确填充" ,这取决于我正在运行的操作系统. 在Win7上,使用IBMJCE或SUNJCE(两者都是J ...

  7. 演示: 动态NAT完成网络地址翻译

    演示: 动态NAT完成网络地址翻译 技术交流与答疑请加入群:1952289 演示目标:使用动态NAT完成对私有网络的地址翻译. 演示环境:如下图9.63所示. 演示背景:该演示环境保持PAT演示环境的 ...

  8. Spring Security笔记:HTTP Basic 认证

    在第一节 Spring Security笔记:Hello World 的基础上,只要把Spring-Security.xml里改一个位置 1 <http auto-config="tr ...

  9. Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园...

    Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园 在前一节,学习了如何自定义登录页,但是用户名.密码仍然 ...

  10. NAT 网络地址转换技术(一)NAT原理介绍:静态NAT、动态NAT、NAPT、Easy IP、NAT ALG、NAT服务器、双向NAT技术

    文章目录 出现原因 基本概念 NAT技术基本原理 源NAT技术 静态NAT 动态NAT NAPT Easy IP NAT ALG NAT服务器 双向NAT技术 域间双向NAT(NAT Server+源 ...

最新文章

  1. Tensorflow矩阵过大问题的解决
  2. Python3不用str自带lower转换位小写字母
  3. [vue] 实际工作中,你总结的vue最佳实践有哪些?
  4. 实验楼linux指令,Linux操作命令(二)
  5. MASTER:全局上下文建模大幅提高文本识别精度
  6. linux的grub界面退出,linux退出 grub
  7. 斐讯k1支持千兆吗_千兆宽带如何使用?看这里!
  8. 电子信息计算机调剂到能源动力,江苏科技大学机械、电子信息、电子信息能源动力、土木水利2020年考研调剂信息...
  9. Linux断开进程的某个socket,Linux Socket:如何在客户端程序中检测断开的网络?
  10. Linux下安装anaconda,创建虚拟环境python3.7,并且安装深度学习框架pytorch进行模型训练
  11. 单片机c语言串转并的IO实验,74LS164 串入并出实验
  12. java爬虫爬取b站视频分享iframe代码并保存10000条数据到数据库
  13. unity3d通过粒子系统制作火焰效果
  14. App Store 审核必备
  15. flask框架----跨域
  16. 主角叫张四的Java游戏_第一卷 :仙剑世界中的黑化张四 123 贝爷附体
  17. VMware+Ubuntu16.04部署k8s多节点网络(二)——配置各节点网络
  18. 迎接Ubuntu Flatpak Remix,预装了Flatpak支持的Ubuntu
  19. 2021清北毕业生去向:清华博士0人出国,70%进体制、搞教育、国内深造!
  20. hudi系列-文件归档(archive)

热门文章

  1. 论文推荐 | 一文了解百度10篇ACL 2019概况和该技术的实际可落地应用
  2. 句法分析(syntactic parsing)在NLP领域的应用是怎样的?
  3. 如何不出国门走进NLP学术前沿
  4. [TACL18]隐式句法树模型真的能学到句子中有意义的结构吗?
  5. 04 grep正则表达式与shellscipt脚本编程
  6. 基于DEAP库的python进化算法-4.遗传算法求解TSP问题
  7. 统计学习方法读书笔记4-感知机课后习题
  8. 白板推导系列Pytorch实现-感知机算法
  9. 《java程序员全攻略:从小工到专家》连载一:外行人眼中的IT人
  10. 字符编码ASCII,Unicode和UTF-8