IPSec的NAT穿越详细介绍
直连IPSEC的野蛮模式NAT穿越

直连IPSEC的野蛮模式NAT穿越IPsec(Internet Protocol Security)是一种网络协议套件,用于实现网络通信的加密和认证。
野蛮模式(Aggressive Mode)是IPsec的一种传输模式,不需要建立安全通道即可交换密钥。
NAT(Network Address Translation)是用于在网络中分配和转换IP地址的技术。
在传统的IPsec通信中,通常使用隧道模式(Tunnel Mode)来传输IP数据包。
但是,当通信双方之间存在NAT设备时,隧道模式会受到限制。
为了解决这个问题,就出现了野蛮模式NAT穿越。
野蛮模式NAT穿越指的是在存在NAT设备的网络环境中,使用IPsec 的野蛮模式进行通信,并成功穿越NAT设备,实现加密和认证的目的。
下面将详细介绍野蛮模式NAT穿越的原理和实现过程。
野蛮模式NAT穿越的原理:1. NAT设备的限制:NAT设备通过转换IP地址和端口号来实现对网络地址的转换,但这会导致IPsec报文中的IP地址和端口号不一致,从而导致通信失败。
2. 野蛮模式的优势:野蛮模式不需要建立安全通道即可交换密钥,因此可以在初始的IKE(Internet Key Exchange)阶段就完成阶段一和阶段二的协商,减少了通信的时间和开销。
3.NAT穿越的技术:为了实现野蛮模式的NAT穿越,需要使用一些技术手段来绕过NAT设备的限制,包括端口映射和引导报文。
野蛮模式NAT穿越的实现步骤:1. 发起方(Initiator)向响应方(Responder)发送IKE_INIT请求。
该请求包含了发起方的随机数和IP地址等信息。
2.响应方收到IKE_INIT请求后,生成响应方的随机数和IP地址等信息,并使用这些信息生成哈希值和共享密钥。
3.发起方收到响应方的IKE_INIT响应后,生成发起方的哈希值和共享密钥。
4.握手阶段一结束后,发起方和响应方交换生成的哈希值和共享密钥。
IPsecNAT穿越协议

IPsecNAT穿越协议IPsecNAT穿越协议是一种用于解决IPsec(Internet Protocol Security)协议在网络地址转换(Network Address Translation,NAT)环境下遇到的问题的技术。
在传统的网络环境中,NAT设备会修改IP数据包的源地址和目的地址,这会影响IPsec协议的功能和安全性。
为了克服这一问题,IPsecNAT穿越协议应运而生。
1. 协议概述IPsecNAT穿越协议是一种允许IPsec协议在NAT环境下正常运行的技术。
它通过在NAT设备上进行特殊处理,使得IPsec协议能够成功建立安全连接,并确保数据的机密性和完整性。
IPsecNAT穿越协议遵循IPsec协议的标准,但在NAT设备上增加了额外的功能来处理与NAT相关的问题。
2. 协议原理IPsecNAT穿越协议的原理是通过在NAT设备的出口和入口处进行地址转换和端口映射,使得经过NAT的IPsec数据包能够正确地传递到目标主机。
具体而言,IPsecNAT穿越协议使用一种称为IPsec封装(IPsec encapsulation)的技术,将原始的IPsec数据包封装在NAT设备的IP包中,并在目标主机上解封装还原,从而绕过了NAT设备对IPsec数据包的修改。
3. 协议实现IPsecNAT穿越协议的实现需要在NAT设备上进行特殊配置和设置。
首先,NAT设备需要支持IPsecNAT穿越协议,并具备相应的功能和算法。
其次,NAT设备需要在NAT表中维护与IPsec会话相关的信息,以便正确地进行地址转换和端口映射。
此外,NAT设备还需要对IPsec数据包进行检查和处理,确保其完整性和安全性。
综上所述,IPsecNAT穿越协议的实现需要NAT设备和IPsec协议栈共同配合。
4. 协议优势IPsecNAT穿越协议的出现,为在NAT环境下使用IPsec提供了便利和可行性。
它解决了IPsec协议无法穿越NAT设备的问题,允许用户在享受IPsec安全性的同时,无需考虑NAT对IPsec数据包的影响。
IPsecVPN协议的NAT穿透与防火墙配置

IPsecVPN协议的NAT穿透与防火墙配置IPsec VPN协议的NAT穿透与防火墙配置在互联网时代,数据传输的安全性与稳定性成为了企业和个人用户所关注的重要问题。
虚拟私人网络(VPN)的出现有效地解决了这一问题,而IPsecVPN协议则在VPN中扮演着重要的角色。
然而,由于网络环境的复杂性,许多用户在使用IPsec VPN时遇到了NAT穿透和防火墙配置的问题。
本文将探讨这些问题,并提供适当的解决方案。
一、NAT穿透的概念及问题1. NAT穿透的概念NAT穿透指的是在网络中使用了网络地址转换(NAT)设备的情况下,如何实现对IPsec VPN的正常通信。
NAT设备通常会对传输的数据包进行源地址和目的地址的转换,以实现多个内部网络与外部网络的通信。
然而,这种地址转换对IPsec VPN的建立和传输过程产生了一定的影响。
2. NAT穿透的问题及解决方案在进行NAT穿透时,常见的问题包括:a) IPsec VPN的建立问题:由于NAT设备对数据包进行了地址转换,使得原始IP地址无法直接访问到VPN服务端。
为了解决此问题,可以使用NAT-T(NAT Traversal)技术,通过在IPsec数据包中封装额外的数据,以绕过NAT设备的限制。
b) IPsec数据包的加密问题:NAT穿透过程中,由于对数据包进行了地址转换,导致IPsec头部中的源地址和目的地址无法与实际通信双方相匹配。
为了解决此问题,可以使用NAT设备支持的IPsec Passthrough功能,将IPsec头部从转换中豁免,保证加密的完整性。
c) NAT设备与IPsec VPN设备的兼容性问题:不同厂商的NAT设备和IPsec VPN设备对NAT穿透的支持程度各不相同,可能存在兼容性问题。
解决此问题的方法是选择厂商间兼容性较好的设备,或者升级设备的固件以支持更高级的协议。
二、防火墙配置和IPsec VPN协议1. 防火墙的作用防火墙是网络安全的重要组成部分,通过规则配置来控制网络流量的进出,保护内部网络免受外部威胁。
ipsec nat穿越原理

IPsec NAT穿越原理什么是IPsec?IPsec(Internet Protocol Security)是一种网络协议,用于在IP网络上提供安全的数据传输。
它通过加密和认证机制来保护数据的完整性、机密性和身份验证。
IPsec可以在两个主机之间或两个子网之间建立安全的通信链路。
它可以用于远程访问VPN(Virtual Private Network)连接、站点到站点VPN连接以及移动设备的安全通信。
为什么需要NAT穿越?NAT(Network Address Translation)是一种网络技术,用于将私有IP地址转换为公共IP地址,以实现多个设备共享同一个公网IP地址。
然而,由于NAT会改变IP头部信息,导致加密后的数据包无法正确解析。
这就给使用IPsec进行加密通信的应用程序带来了困扰。
因此,需要一种方法来克服NAT 对IPsec的限制,实现安全的通信。
IPsec NAT穿越原理1. NAT Traversal为了解决NAT对IPsec的限制问题,提出了NAT Traversal技术。
NAT Traversal 允许在经过NAT设备时建立和维护安全通道。
a. UDP封装NAT Traversal使用UDP封装技术将原始的IPsec数据包封装在UDP数据包中。
由于UDP是一种无连接的协议,它可以通过NAT设备传输到目标主机。
在发送IPsec数据包之前,发送方会将IPsec数据包封装在UDP数据包中,并将目的端口设置为特定的值(通常是4500)。
这样,NAT设备就会将整个UDP数据包转发到目标主机。
b. NAT检测NAT Traversal还引入了一种称为”keepalive”的机制来检测是否经过了NAT设备。
当IPsec设备与对等方建立连接时,它会周期性地向对等方发送keepalive消息。
如果对等方收到了keepalive消息,则说明没有经过NAT设备。
如果对等方未收到keepalive消息,则说明可能经过了NAT设备,并且需要使用UDP封装技术。
IPSec与NAT穿越:解决地址转换对安全的影响(八)

IPSec与NAT穿越:解决地址转换对安全的影响引言互联网的迅猛发展改变了我们的生活和工作方式,但同时也带来了一系列的安全挑战。
网络安全已经成为各个组织和个人必须面对的重要问题。
在网络通信中,NAT(Network Address Translation)被广泛用于解决IPv4地址不足的问题,但同时也给网络安全带来了一定的影响。
本文将讨论如何通过IPSec与NAT穿越来解决地址转换对安全的影响。
NAT的工作原理及安全问题NAT是一种将私有IP地址转换为公共IP地址的技术,通过映射表来实现内部网络与外部网络之间的通信。
NAT能够有效利用IPv4地址资源,但也带来了一些安全问题。
首先,NAT隐藏了内部网络的真实IP地址,使得外部网络无法直接访问内部网络中的主机。
这在一定程度上降低了外部攻击者对内部网络的威胁。
然而,NAT只提供了一种有限的保护措施,外部攻击者仍然有可能通过巧妙的手段穿透NAT,对内部网络进行攻击。
其次,由于NAT缺乏端到端的连接状态跟踪能力,某些应用协议(如FTP、SIP等)的正常运行可能被NAT破坏,从而引发通信故障。
IPSec的概述与应用IPSec(Internet Protocol Security)是一组用于保护IP数据包的安全协议和算法。
IPSec可以在IP层提供数据加密、数据完整性验证和来源认证等安全服务,确保通信的保密性、完整性和可信性。
IPSec的应用范围广泛,适用于各种场景,包括远程访问VPN、站点到站点VPN和设备到设备VPN等。
IPSec与NAT的冲突与解决由于NAT对IP地址进行转换,破坏了原始IP数据包的完整性,因此与IPSec的加密和完整性验证机制发生冲突。
NAT会修改IP数据包的源IP和目的IP,从而导致IPSec认证失败。
为了解决这个问题,有两种常见的方法:NAT-T和NAPT-PT。
NAT-T(NAT Traversal)是一种通过在IPSec包装中嵌入UDP头部,以在NAT设备上通过UDP端口映射来传输数据的技术。
IPSec穿越NAT的原理

IPSec穿越NAT的原理IPSec穿越NAT的应用已经很多,但是从协议层分析说明的贴子并不多见,现特收集一篇文章大家共享之一、IPSec穿越NAT存在的兼容性问题IPSec作为一种重要的安全技术得到越来越广泛的应用,但客户网络边缘大量使用的NAT地址翻译*作可能影响到IPSec的正常*作.目前,NAT和IPSec之间存在的不兼容性问题可以分为以下三类:1.NA<P>T固有的问题这类不兼容问题是直接由NA<P>T与IPSec协议本身不兼容造成的,因此并不是所有的NA<P>T设备都存在.NA<P>T协议固有的不兼容性包括IPSec AH和NAT不兼容、NAT与校验和不兼容、IPSec SPI 选择和NAT不兼容、IKE地址标识符和NAT不兼容、固定IKE目的端口和NAPT之间不兼容、重叠<Overlap>SPD条目和NAT间不兼容、嵌套IP地址和NAT不兼容以与NA<P>T隐含的方向性问题等.2.NA<P>T实现方面的问题这类不兼容问题虽然不是NA<P>T协议所固有的,但却在大量的NA<P>T实现中存在.它们不是NA<P>T协议的固有问题,因此原则上在以后的NA<P>T设计实现中可以避免其产生.但由于这些问题已经广泛存在,因此在NA<P>T穿越方案中必须予以考虑.NA<P>T实现方面带来的不兼容性包括不能处理非UDP/TCP通信流、NAT映射超时、不能处理输出和输入分片等.3.辅助功能引入的问题这类不兼容问题出现在那些拟解决IPSecNA<P>T穿越问题的NA<P>T设备中.在这些NAT设备中,由于设计部分穿越辅助功能而产生了新的不兼容性,造成更难于解决的问题.虽然不是所有的NA<P>T设备都提供这种所谓的辅助功能,但鉴于该类问题的普遍性,在NA<P>T穿越方案中也需要考虑这类问题.在IPSec和NAT的辅助功能之间存在的不兼容问题包括ISAKMP头部检查、对端口500的特殊处理与ISAKMP载荷检查等.二、IPSec穿越NAT的兼容性要求1.可部署性IPSec-NAT兼容性解决方案必须比IPv6易于部署,还应满足只需修改主机,无需改变路由器的要求.为了在短时间内实现穿越方案的部署,必须要求兼容性解决方案能与现存的路由器和NA<P>T产品协同工作.2.协议兼容性IPSec-NAT穿越方案不解决某些协议与NAT的兼容性问题.这些协议是指用IPSec协议不能进行安全保护且无法穿越NA<P>T的协议.因此,即使有了IPSec-NAT穿越方案,ALG仍需要支持其它协议的穿越方案.3.方向性NA<P>T的方向性也是一种安全功能,所以IPSec穿越方案不应允许NA<P>T后面的主机接收来自任意IP地址随意发送的IPSec或IKE通信流.一旦双向IKE和IPSec通信已经建立,则地址转换的映射即告连接.4.远程访问IPSec的一个重要应用是远程访问公司的内部网络.NA<P>T穿越方案必须支持通过IPSec隧道模式或者L2TPoverIPSec的NAT穿越,故要求穿越方案必须考虑远程客户端与VPN网关之间存在多个NA<P>T的情况.5.防火墙兼容性目前,防火墙已经广为应用,IPSec-NAT兼容性方案必须能使防火墙管理员创建简单的静态访问规则,以决定是否允许IKE与IPSec-NAT的穿越.原则上,应该避免IKE或者IPSec目的端口的动态分配.6.可扩展性IPSec-NAT兼容性方案应具有良好的扩展性,可部署在大规模远程访问的环境中.在大量远程接入的环境下,不可能在同一时间段内只有一个主机使用同一个给定的地址进行通信.因此,在兼容性方案中,必须解决SPD条目重叠和接收包解复用的问题.7.模式支持IPSec-NAT方案必须支持IPSecESP模式的穿越.例如IPSec安全网关必须支持ESP隧道模式的NA<P>T穿越,IPSec主机必须支持IPSec传输模式的NA<P>T穿越.AH的目的是保护IP头部中不变的区域<包括地址域>,而NA<P>T必须转换地址,从而使AH完整性检验失效.因此,NA<P>T和AH从根本上就是不兼容的.在IPSec-NAT兼容性方案中,没有必要支持AH 传输或隧道模式.8.后向兼容和互*作性IPSec-NAT兼容性方案中必须能与已有的IKE/IPSec实现互*作,与不经过NA<P>T的IKE/IPSec 进行通信,即IPSec-NAT穿越方案必须能后向兼容RFC2401定义的IPSec和RFC2409定义的IKE.穿越方案应该能自动检测是否存在NAT,使通信双方只在必要时才使用NA<P>T穿越支持.兼容方案应能判断通信对方的IKE实现是否支持NA<P>T穿越,以协商双方可否只进行标准的IKE会话.也就是说,虽然IKE在发起协商时,目的端口只能使用500端口,但并没有对源端口提出特殊要求,因此UDP源端口可以使用500或非500的端口.9.安全性IPSec-NAT兼容性解决方案的引入不得对IKE或IPSec的安全带来影响.例如,一个可行的方案必须能证明,它没有引入新的拒绝服务攻击和欺骗攻击.IKE必须允许双向方式的密钥能够重生成.三、IPSec穿越NAT的解决方法在IPSec中,SA的管理既可手工进行,也可通过IKE自动协商来完成.如果采用IKE方式,需要IKE协商和UDP封装两种方法配合起来使用,以完成IPSec穿越NAT.1.IKE协商在阶段l协商中,需要针对NAT执行两种探测.一是探测是否支持NAT穿越,二是探测在通信路径中是否存在NAT.NAT可能会改变IKEUDP的源端口,因而接收方必须能处理源端口不是500的IKE报文.<1>通过Vendor ID载荷交换来确定远程主机是否支持NAT穿越.如果协商双方支持NAT穿越,则协商双方在阶段1的前两条消息中应加入一个Vendor ID载荷,载荷的内容是对特定字串进行MD5运算得出的散列值.该字串需标明它所支持的NAT穿越方法应遵循的要求.<2>NAT-D<NAT Discovery>载荷不仅用于探测两个IKE实体之间是否存在NAT,也用于探测NAT 所处的位置.Keepalive消息能从位于NAT后面的实体发出.为了探测出两台主机之间的NAT,需要检查IP 地址和端口是否沿着传输路径发生改变.协商双方只需各自向对端发送源方和目的方的IP地址与端口的散列值,就可以检测地址和端口在传输过程中是否发生改变.如果协商双方计算出的散列值与其收到的散列值相同,则表示它们之间没有NAT.反之,则是在传输中对地址或端口进行了转换,说明所通过的IPSec报文进行了NAT穿越的处理.如果发送者不能确定自己的IP地址<比如拥有多个网络接口,并且不能确定包路由选择到哪一个接口>,它可以在报文中包含多个本地IP地址的散列值.在这种情况下,仅当所有的散列值均不匹配时,才表明NAT的存在.对IPSec进行特殊处理的NAT设备可能会导致问题的发生.NAT后有多个客户端,即使某些NAT不改变500的源端口号,也能将IKE Cookie值映射到分解的通信流,而不必使用源端口.对IKE来说,很难发现NAT是否具有上述能力.对NAT的透明性而言,这些方法均存在弊端.最好的办法是使IKE通信流简单地离开500端口,以避免对任何IPSec-awareNAT进行特殊处理.在阶段l完成后,协商双方都已明确,在它们之间是否存在NAT.至于是否使用NAT穿越,则由快速模式协商决定.NAT穿越的使用在快速模式的SA载荷中协商,协商双方可向对端传送IPSec报文的原始地址<传输模式情况下>,从而使对端有可能在NAT转换之后,对TCP/IP进行校验和修正.为了执行增量TCP校验和修正,协商双方可能需要知道对端在构造报文时所使用的原始IP地址.对于发起方,其原始发起方地址定义为发起方的IP地址,而原始响应方地址定义为当前所知道的对端的IP地址.对于响应方,原始发起方地址定义为当前所知道的对端IP地址,原始响应方地址定义为响应方的IP地址.2.UDP封装<1>在进行UDP封装时,要进行一些辅助处理.当使用隧道模式传送报文时,内部IP头中会包含不适合当前网络的地址.以下说明将其转换成适合当前网络地址的处理方法.根据本地策略,必须完成下列任务之一:•如果在策略中,已为对端的封装报文定义了一个有效的源IP地址空间,则应根据策略检查在内部报文中的IP源地址是否属于有效范围.•如果已经为远程对端分配了一个地址,则应检查内部报文中的IP源地址是否与该地址一致.对报文执行NAT转换,使其适合在本地网络中传输.<2>当使用传输模式传送报文时,如果在传输中IP头部发生变化,TCP或UDP头部将包含错误的校验和.根据本地策略必须完成以下任务之一:•如果在ESP头部之后的协议头部是一个TCP/UDP头,并且已经获得对端的真实源/目的IP地址,则应增量计算TCP/UDP校验和,包括:——从校验和中减去接收包的IP源地址;——在校验和中增加通过IKE获得的真实的IP源地址<从NAT-OA中获得>;——从校验和中减去接收包的IP目的地址;——在校验和中增加通过IKE获得的真实的IP目的地址<从NAT-OA中获得>.如果接收到的地址和真实地址是相同的,则取消相关*作.•如果在ESP头后面的协议头IPv4是TCP/UDP头,则应重新计算TCP/UDP头中的校验和字段.•如果ESP头后面的协议头是UDP头,应将UDP头中的校验和字段置O.如果在ESP头后面的协议头是TCP头,并且存在一个选项,该选项用于指示协议栈,而不用检查TCP效验和,则可以使用该选项.仅在传输模式中,对报文进行了完整性保护时,才能使用这种方法.对隧道模式的TCP校验和必须进行验证.因为校验和由发送方产生并由接收方验证,该校验和是对整个IPSec处理的报文的完整性检验.<3>在实现中,可以对被NAT破坏的包含协议进行修正.传输模式下,ESP封装的报文格式如图1,图2所示.传输模式下ESP封装的步骤为:图1应用ESP/UDP之前的报文格式图2应用ESP/UDP之后的报文格式•普通的ESP封装处理.插入一个适当格式的UDP头部;编辑IP头中的总长域、协议域以与校验和字段,使之与所得报文相匹配.•传输模式下ESP解封装的步骤为:从报文中删除UDP头;编辑IP头中的总长域、协议域以与校验和域,使之与所得的报文相匹配;应用普通的ESP解封装处理过程;应用传输模式解封装NAT处理过程.•隧道模式下ESP封装的报文格式如图3,图4所示.隧道模式下ESP封装的步骤为:普通的ESP封装处理;插入一个适当格式的UDP头部.图3应用ESP/UDP之前的报文格式图4应用ESP/UDP之后的报文格式3.编辑IP头中的总长字段、协议字段以与校验和字段,使之与所得的报文相匹配隧道模式下ESP解封装的步骤为:从报文中删除UDP头;编辑IP头中的总长字段、协议字段以与校验和字段,使之与所得的报文相匹配;应用普通的ESP解封装处理过程;应用隧道模式解封装NAT处理过程.四、穿越NAT对IPSec的影响1.IPSec-NAT兼容性的安全考虑<1>IPSecAH不能穿越NAT,故只能使用空加密的ESP来替代AH.但空加密的ESP不能提供和AH 完全一样的安全属性.例如,在AH中可以排除对IP源路由的安全风险,而在使用空加密的ESP中却无法杜绝.<2>因使用任何加密变换的ESP都不提供防止源地址欺骗的保护,因此必须执行一些源IP地址的检验.在IPSec_{esp,ah}input中应完成对源IP地址的一般性防欺骗检查,以保证报文是从最初的IKE主模式和快速模式SA中所提供的相同地址发送的.当接收方主机在NAT后面时,源地址的检测对单播会话意义不大,但在隧道模式的单播会话中,这种检测可以防止欺骗攻击.<3>举例.假定两个主机A和C在NAT设备后面,并都用IPSec隧道模式与B协商安全联盟.主机A 和C可能有不同的权限.假设主机A是以职员身份访问公司内网,而C只是以承包方身份访问某个特定的Web站点.如果主机C作为源方发送一个伪造A的IP地址的隧道模式包,而作为发起方C并不具有与A相同的权限.如果接收方只执行身份验证与完整性检验,而不进行防欺骗检验<确定发起方IP地址与SPI相对应>,则C可能被允许访问那些它本没有权限访问的网络资源.因此,IPSec-NAT兼容性解决方案必须提供一定程度的防欺骗保护.2.IKE协商的安全考虑<1>IKE探测对外暴露了协商双方是否支持NAT穿越,会否引起安全问题.<2>一旦存在NAT,则失去基于IP地址的验证机制.对位于NAT后面的所有主机而言,如果没有组共享密钥,它们就不能在主模式中使用预共享密钥验证方式.使用组共享密钥是具有巨大安全风险的,不推荐使用组共享密钥.<3>因为内部地址空间只有32位,所以有可能使攻击者通过所有可能的IP地址和尝试找出匹配的散列值而发现在NAT后面的内部地址.端口号通常固定为500,并且Cookie值可以从报文中分解得出,从而使散列运算的空间降至232.如果对所有地址空间进行改进,需要找出内部IP地址的散列运算空间降至224+2×<216>.<4>在主模式和野蛮模式中NAT-D载荷和Verdor ID载荷都没有经过验证.攻击者能够删除、修改和增加这些载荷.通过删除或增加NAT-D载荷,攻击者能够发起DoS攻击.通过修改NAT-D载荷,攻击者能造成协商双方都使用UDP封装模式而不使用隧道或传输模式,从而造成带宽的浪费.<5>在快速模式中发送原始源地址,从而向对端暴露NAT之后的内部IP地址.由于需要对对端进行身份验证,且只在传输模式中传送原始源地址,因此不存在安全问题.<6>当攻击者可监听网络中的所有通信流,修改报文顺序,在已发现的报文之前注入新的报文时,对每个有效验证的报文更新IKESA报文和ESPUDP封装报文的IP地址和端口,则会造成DoS攻击.攻击者可从位于NAT后面的主机截取已验证的报文,修改报文的UDP源方和目的方的IP地址与端口,并在真正的报文到达之前发送给对端.如果不是在NAT后面的主机接收到伪造报文后,将根据伪造报文更新它的IP地址和端口映射,并将随后的通信流发送至错误的主机或端口.这种情况在攻击者停止攻击并接收到第一个正确报文后才能修正.实现中应该每次审计映射的改变,一般情况下它不应经常发生.3.UDP封装的安全考虑在一些系统中,ESPUDP可能引发DoS攻击,特别是使用普通*作系统的UDP功能.因此,建议勿打开普通的UDP端口.实现者需注意影响隧道模式使用的问题,即远程对端会协商网关中重叠的条目.在传输模式中,当同一个NAT后面有两个客户端与同一服务器建立安全会话时,也会发生类似的问题.4.IANA考虑IPSec穿越NAT使要使用包含两个新的IANA注册值,并将注册端口修改为4500.同时,还定义了两个新的IKE载荷类型,分别为15和16.。
IPSEC NAT穿越配置举例

下,配置ACL规则
port1 [ port2 ] ] [ icmp-type {icmp-type icmp-code | icmp-message} ]
[ precedence precedence ] [ dscp dscp ] [ established ] [ tos tos ] [ time-
Copyright © 2007 杭州华三通信技术有限公司
IPsec NAT穿越配置举例
3.2 配置步骤
配置野蛮模式下IPsec穿越NAT,需要以下步骤:
z 配置访问控制列表 z 配置 IKE 对等体 z 定义安全提议 z 创建安全策略 z 在接口上应用安全策略
1. 配置访问控制列表
在IPsec/IKE组建的VPN隧道中,若存在NAT网关设备,且NAT网关设备对VPN业务数据流进 行了NAT转换的话,则必须配置IPsec/IKE的NAT穿越功能。该功能删去了IKE协商过程中对UDP 端口号的验证过程,同时实现了对VPN隧道中NAT网关设备的发现功能,即如果发现NAT网关设 备,则将在之后的IPsec数据传输中使用UDP封装(即将IPsec报文封装到IKE协商所使用的UDP连 接隧道里)的方法,避免了NAT网关对IPsec报文进行篡改(NAT网关设备将只能够修改最外层的 IP和UDP报文头,对UDP报文封装的IPsec报文将不作修改),从而保证了IPsec报文的完整性 (IPsec数据加密解密验证过程中要求报文原封不动地被传送到接收端)。目前仅在IKE野蛮模式 下支持NAT穿越,主模式下不支持。
操作命令
在系统视图下,创建一个
1
高级访问控制列表
[H3C] acl number acl-number [ match-order { config | auto } ]
IPSec与NAT穿越:解决地址转换对安全的影响(五)

IPSec与NAT穿越:解决地址转换对安全的影响引言在互联网的时代,安全性是一个重要的关键。
随着互联网技术的不断发展,网络安全问题也日益突出。
网络地址转换(NAT)作为一种常用的网络管理手段,为多个设备共享一个公网IP地址提供了便利,但同时也给网络安全带来了一定的挑战。
本文将探讨NAT对安全性的影响,并介绍如何通过IPSec实现NAT穿越,确保网络的安全性。
NAT的工作原理及安全隐患NAT主要通过修改IP数据包的源IP地址和目标IP地址,实现内网与外网之间的通信。
在这个过程中,NAT会对数据包进行检查和改写,这个操作本身可能对网络的安全性产生一定的影响。
首先,NAT会隐藏内网的真实地址,使得攻击者更难追踪攻击来源。
然而,一旦内网中的主机感染了病毒或受到入侵,由于NAT的存在,追踪和定位攻击来源变得更加困难。
另外,由于多个内网设备共享一个公网IP地址,NAT也可能导致端口资源的不足。
当多个内网设备尝试与外网建立连接时,NAT需要在内网和外网之间进行端口映射。
如果网络负载过大,端口资源不足,将会导致连接失败和网络延迟。
此外,NAT也无法提供真正的完全访问控制机制,可能会给恶意用户提供一定的入侵机会。
IPSec的介绍及工作原理IPSec(Internet Protocol Security)是一种常用的网络安全协议,它通过对IP数据包进行加密和身份验证,提供了一种安全的通信机制。
IPSec具有两种工作模式,分别是传输模式和隧道模式。
传输模式主要用于主机到主机的通信,而隧道模式则用于网关到网关之间的通信。
IPSec通过建立安全的加密通道,保护数据的机密性和完整性,并对通信双方进行身份验证。
它通过在IP数据包的封装和解封装过程中,对数据进行加密和解密操作。
IPSec使用安全协议(如ESP和AH)来保护数据的安全性,并通过密钥交换协议(如IKE)来协商加密密钥。
NAT穿越与IPSec的结合尽管NAT对安全性存在一定的挑战,但通过结合IPSec技术,我们可以解决NAT带来的安全隐患。
IPSec与NAT穿越:解决地址转换对安全的影响

IPSec与NAT穿越:解决地址转换对安全的影响导言随着互联网的不断发展,网络安全问题日益成为人们关注的焦点。
网络地址转换(Network Address Translation,NAT)作为一种常见的网络技术,用于解决IPv4地址不足的问题。
然而,传统的NAT技术却给网络安全带来了一定的影响。
本文将介绍IPSec与NAT的结合,以解决地址转换对安全性的潜在威胁。
一、IPSec基础知识IPSec是一种用于保护IP网络通信安全的协议套件。
它提供了认证、加密和完整性保护等机制,可以有效地保护数据的传输过程。
然而,当网络中存在NAT设备时,IPSec面临着一些挑战。
由于NAT会改变IP数据包的源地址和目的地址,IPSec的原始加密和认证机制会受到影响,造成通信失败或降低安全性。
二、传统NAT的问题传统NAT将私有IP地址转换为公共IP地址,以实现多个主机共享一个公网IP地址。
然而,这种地址转换会破坏IPSec协议的数据完整性和安全性,导致通信失败或被攻击者利用。
原因在于,传统NAT对IP数据包进行了修改,使得其在传输过程中被修改的部分无法通过IPSec的认证机制。
三、NAT穿越的原理为了解决IPSec与NAT的兼容性问题,研究人员提出了NAT穿越(NAT traversal)的方法。
NAT穿越利用各种技术手段,确保IPSec流量能够在经过NAT设备时保持其完整性和安全性。
其中,使用UDP封装(UDP encapsulation)是最常见的方法之一。
该方法通过将IPSec数据包封装在UDP数据包中,使其在经过NAT设备时能够正确识别和处理。
四、IPSec与NAT穿越的应用IPSec与NAT穿越的应用场景广泛。
例如,远程访问VPN(Virtual Private Network)是一种常见的应用。
在传统的VPN中,当用户位于私有网络内部时,若要访问公共网络,需要经过NAT设备。
IPSec与NAT穿越为VPN的使用提供了便利,使得用户可以安全地跨越NAT设备,实现远程访问。
IPSec与NAT穿越:解决地址转换对安全的影响(七)

IPSec与NAT穿越:解决地址转换对安全的影响引言:在当前互联网环境下,网络安全问题成为各行各业关注的焦点。
网络安全的一个重要方面是如何保护数据在传输中的安全性和完整性。
IPSec(Internet Protocol Security)和NAT(Network Address Translation)是两种常见的网络安全机制和网络协议。
然而,NAT的引入对IPSec的实施和其在网络传输中的表现产生了一定影响。
本文将探讨IPSec与NAT穿越的问题,并研究解决地址转换对安全的影响的方法。
IPSec与NAT简介:IPSec是一种提供网络层安全的协议套件,它可以保护数据在传输过程中的机密性、完整性和可用性。
NAT则是一种用于解决IPv4地址短缺问题的技术,通过将内部私有网络地址转换为公网地址,实现了局域网和广域网之间的互联。
影响因素分析:1. IP地址隐私保护:NAT在网络传输中会替换源IP地址为公网地址,这种地址转换可能会破坏IPSec协议中基于IP地址的身份验证机制,导致隐私泄露的风险增加。
2. IKE协商问题:在建立IPSec安全连接时,使用的是IKE(Internet Key Exchange)协议来协商密钥和安全参数。
然而,NAT会修改传输的IP 头部,使得在网络中的IKE消息无法透明地穿越NAT设备,导致协商过程中出现错误。
3. 数据报文完整性:NAT会修改传输的IP头部和端口号,这可能干扰IPSec协议对数据报文完整性进行校验和后认证的能力。
解决方案:1. NAT Traversal:为了解决NAT与IPSec之间的冲突,NAT Traversal技术应运而生。
NAT Traversal通过在IPSec中引入额外的协议头来允许IPSec流量在NAT设备上转发。
这种技术允许在IPSec隧道中传递IPSec和NAT 报文,并确保数据在转发过程中的完整性和安全性。
2. UDP封装:由于NAT通常会过滤和修改TCP和UDP报文,使其在跨越NAT设备时更加困难。
ipsec nat穿越原理

ipsec nat穿越原理IPSec(Internet Protocol Security)是一种在网络通信中提供安全性的协议。
它通过加密和认证机制来保护数据的传输过程,防止数据在传输过程中被窃取或篡改。
而NAT(Network Address Translation)则是一种网络地址转换技术,将私有网络内部的IP地址转换为公共网络地址,以实现内部网络与外部网络的通信。
在网络通信中,当需要在不同私有网络之间建立安全通道时,IPSec 和NAT穿越技术的结合就显得尤为重要。
IPSec本身并不兼容NAT,因为IPSec在传输过程中对IP头部进行了加密,而NAT则需要访问IP头部中的信息来实现地址转换。
因此,如果直接在经过NAT 设备的网络中使用IPSec,就会导致IPSec加密后的IP头部信息被篡改,从而无法正确解密,造成通信失败。
为了解决IPSec和NAT之间的兼容性问题,IPSec NAT穿越技术应运而生。
其基本原理是在经过NAT设备的网络中,将IPSec加密的数据包进行特殊处理,以便在经过NAT设备时能够正确解密。
具体而言,通过在IPSec数据包中添加额外的头部信息,将原始IP头部信息保存在额外头部中,然后在经过NAT设备时,NAT设备只对原始IP头部进行地址转换,而不对额外头部进行操作,从而保证IPSec数据包的完整性和安全性。
在IPSec NAT穿越的过程中,需要考虑到两种情况:一种是在NAT 设备后端的主机是IPSec终端设备,另一种是在NAT设备后端的主机不是IPSec终端设备。
对于第一种情况,需要在NAT设备上配置IPSec穿越规则,以确保IPSec数据包能够正确穿越NAT设备并到达目标IPSec终端设备;对于第二种情况,需要在NAT设备上配置IPSec透明代理,以实现将IPSec数据包正确转发到目标主机上。
总的来说,IPSec NAT穿越技术通过在IPSec数据包中添加额外头部信息,保证了在经过NAT设备时数据包的完整性和安全性。
IPSec与NAT穿越:解决地址转换对安全的影响(二)

IPSec与NAT穿越:解决地址转换对安全的影响引言:现今网络中,安全性是至关重要的。
随着IPv4地址短缺问题的加剧,上网用户普遍采用网络地址转换(NAT)技术来实现多个内部设备共享一个公网IP地址。
然而,这种技术对网络安全带来一定的挑战。
本文将讨论如何通过IPSec与NAT穿越来解决地址转换对安全的影响。
1. NAT对网络安全的影响NAT技术的本质是将私有IP地址转换为公网IP地址,以实现内部设备与外部网络的通信。
然而,这种地址转换对网络安全产生了一定的影响。
首先,由于NAT会改变数据包的源IP地址,使得外部网络无法准确追踪内部网络的真实源地址,这给攻击者提供了一定的隐蔽性。
其次,由于内部设备共享一个公网IP地址,NAT无法提供端到端的访问控制,可能导致内网设备面临来自外部网络的潜在攻击。
2. IPSec简介IPSec(Internet Protocol Security)是一种常用的网络层安全协议,用于在IP网络上提供数据加密、数据完整性和身份验证等安全性服务。
它可以通过加密和认证机制来保护数据的安全传输,使得即使在不安全的网络上也能保障数据的机密性。
3. IPSec与NAT的兼容性问题由于NAT会改变数据包的IP地址,使得加密后的IPSec数据包无法在NAT设备中被正确解密,因此IPSec在NAT环境中的应用存在一定的问题。
然而,随着技术的发展,IPSec与NAT穿越的解决方案逐渐成熟。
4. IPSec与NAT穿越的解决方案NAT-T(NAT Traversal)NAT-T是一种通过在IPSec协议中添加额外的扩展头部来穿越NAT的方法。
它允许IPSec流量在经过NAT设备时不被修改,从而可以正常建立和维护IPSec隧道。
这项技术在IPSec VPN中得到广泛应用,解决了NAT对IPSec的阻碍。
IKEv2(Internet Key Exchange version 2)IKEv2是一种用于建立和管理IPSec安全连接的协议。
IPSEC-NAT穿越

ipsecvpn nat穿越研究前言:阅读本文的前提是读者已经非常熟悉ipsecvpn的原理以及配置,如果对上述技术不清楚的,请先学习相关资料,再阅读本文。
第一部分ipsecvpn nat 穿越原理ipsec使用两种认证技术:AH和ESP,下图是两种认证技术在传输模式(transport mode)和隧道模式(tunnel mode)下的包结构。
默认情况下,cisco使用隧道模式,也是推荐的模式。
从图中可以看出,不管AH使用传输模式还是隧道模式,认证的部分都包含ip包头,根据nat的原理,不管是哪种nat,都会改变ip包头的内容,一但认证的数据在建立隧道的过程中被修改过,则隧道不能建立,所以,使用AH认证方式是无法穿越nat的。
而ESP认证方式则不一样,在传输模式下,它不认证原有的ip包头,而在隧道模式下,它不认证新ip 包头(源地址和目的地址为建立ipsec的两个网关的地址,原ip包头的源和目的地址为实际发生数据传输的两个节点的地址),由于ESP认证的这种特性,使用ESP方式,可以穿越NA T,推荐的模式为:ESP隧道模式。
nat中的pat(最为常用的)方式需要使用传输层的端口,而ipsec里又没有端口号,如何让ipsec能够穿越pat?可以使用UDP封装(源端口和目的端口均为UDP 500),如下图(不采用TCP的原因是TCP头结构过于复杂,而且数据太长,开销大):建立隧道的发起方可以是PA T内部的vpn网关,也可以是PA T外部的vpn网关,不管采用哪种方式,只需要让执行PA T的设备把目的端口为UDP 500的建立隧道请求,转发至PA T 后端的vpn网关,则ipsec可以穿过PA T建立隧道。
第二部分ipsecvpn nat 穿越实验1实验环境完成目标:●按照拓扑图要求连接各个设备●使用ipsec启用VPN,穿透NAT访问内网服务器2实验过程2.1配置基本配置,完成拓扑图,保证连通性mypc为192.168.2.11,server为192.168.0.112.2配置VPN1,启用IPSEC-VPN,使之成为VPN网关2.3配置NAT1,首先是配制普通的网络地址转换,然后配置NAT穿透,映射VPN服务2.4配置ISP,模拟运营商提供时钟2.5配置NAT2,首先是配制普通的网络地址转换,然后配置NAT穿透,映射VPN服务2.6配置配置VPN2,启用IPSEC-VPN,使之成为VPN网关3验证结果3.1用mypc测试其网关之外的路由发现,虽然不能ping通其他路由,但是却能ping通VPN网关,以及VPN网关下面的内网192.168.0.0网段3.2同时服务器端也可访问mypc3.3不止底层的ICMP协议,连应用层的服务也可以穿透3.4甚至是类似\\192.168.0.11这样的操作3.5我们来看下关于IPSEC-VPN的一些信息4总结VPN实现了局域网的对接,把广域网变得象局域网一样简单特别注明!本例子中两台nat路由器并没有完整的路由配置nat1中无ip route 192.168.2.0 255.255.255.0 192.168.3.1nat2中无ip route 192.168.0.0 255.255.255.0 192.168.1.1没有路由也能通信。
ipsec nat穿越原理

ipsec nat穿越原理IPSec NAT穿越原理IPSec(Internet Protocol Security)是一种网络安全协议,用于保护IP通信的安全性和完整性。
然而,在使用NAT(Network Address Translation)时,IPSec协议会遇到一些问题。
因为NAT会改变IP 数据包的源地址和目标地址,导致IPSec无法识别和解析数据包。
为了解决这个问题,需要使用IPSec NAT穿越技术。
IPSec NAT穿越技术是一种通过NAT设备传输经过加密的IPSec数据包的方法。
它允许在使用NAT设备的情况下建立加密隧道,并且可以在不破坏数据完整性和安全性的情况下将经过加密的数据包传输到目标地址。
实现IPSec NAT穿越需要以下步骤:1. 在NAT设备上启用IPSec NAT穿越功能。
2. 在源主机上配置一个合适的隧道模式,以确保其与目标主机之间建立一个可靠的加密隧道。
3. 配置源主机和目标主机之间的网络连接,并确保它们都能通过NAT 设备进行通信。
4. 当源主机发送经过加密的数据包时,NAT设备会检测到该数据包,并将其转发到目标主机上。
5. 目标主机接收到该数据包后,使用预共享密钥解密数据包,并将其还原为明文数据。
6. 目标主机再将响应数据包发送回源主机,重复上述过程。
IPSec NAT穿越技术的实现依赖于UDP封装和NAT设备的支持。
UDP封装是一种将IPSec数据包封装在UDP数据包中的方法,以便能够通过NAT设备传输。
NAT设备需要支持UDP封装和解封装功能,以确保IPSec数据包能够正确地传输。
总之,IPSec NAT穿越技术是一种通过NAT设备传输经过加密的IPSec数据包的方法。
它通过使用UDP封装来克服了NAT对IPSec协议的限制,并且可以在不破坏数据完整性和安全性的情况下将经过加密的数据包传输到目标地址。
IPsecNAT穿越

IPsecNAT穿越IPsecNAT穿越是一种网络技术,用于解决IPsec协议在NAT环境下的通信问题。
本文将介绍IPsecNAT穿越的背景和原理,并探讨其在实际应用中的挑战和解决方案。
一、背景介绍在传统的网络环境中,IPsec协议已被广泛应用于保证网络通信的安全性。
然而,在存在网络地址转换(Network Address Translation,NAT)的情况下,IPsec协议会面临一些挑战。
NAT会改变IP报文的源IP地址和目的IP地址,打破IPsec协议中源地址和目的地址的匹配关系,从而导致IPsec通信失败。
为了克服这一问题,人们提出了IPsecNAT穿越技术,旨在解决IPsec协议在NAT环境下的通信难题。
二、IPsecNAT穿越原理1. NAT Transparency(NAT透明)IPsecNAT穿越技术通过实现NAT透明,使得NAT设备能够正确地处理经过NAT的IPsec报文。
它在IPsec数据包中添加必要的信息来维护IPsec会话,使得NAT设备能够正确地转发IPsec数据包。
2. NAT Traversal(NAT穿越)NAT穿越是IPsecNAT穿越的核心原理之一。
它通过在IPsec报文中插入额外的头部信息,使得经过NAT设备的IPsec报文能够正常到达目的地。
三、IPsecNAT穿越的挑战尽管IPsecNAT穿越技术提供了一种解决方案,但在实际应用中仍面临一些挑战。
1. NAT类型的差异不同类型的NAT设备对IPsecNAT穿越的支持程度不尽相同。
某些NAT设备可能无法正确处理IPsec报文,导致通信失败。
2. 防火墙配置限制部分防火墙可能会对IPsec通信进行限制,从而影响IPsecNAT穿越的实现。
这需要对防火墙进行相应的配置,在确保安全性的前提下实现IPsecNAT穿越。
3. 性能影响IPsecNAT穿越技术会增加通信的复杂性,导致一定的性能影响。
在大流量的场景下,IPsecNAT穿越可能导致网络延迟增加和吞吐量下降。
ipsec nat穿越原理

ipsec nat穿越原理IPSec是一种用于保护网络通信安全的协议套件,而NAT(Network Address Translation)则是一种网络地址转换技术。
在实际网络通信中,IPSec和NAT常常结合使用,以实现安全的数据传输。
本文将探讨IPSec穿越NAT的原理及相关技术细节。
我们需要了解IPSec的基本原理。
IPSec通过对数据进行加密和认证,确保数据在传输过程中不会被窃听或篡改。
它包括两个主要协议:AH(Authentication Header)和ESP(Encapsulating Security Payload)。
AH提供数据完整性和认证,而ESP则提供数据加密和机密性。
然而,当网络中存在NAT设备时,IPSec通常会遇到一些问题。
NAT会修改数据包的IP头部信息,导致IPSec协议中的加密和认证信息无法正确处理。
这就需要一些特殊的技术来解决IPSec穿越NAT的问题。
一种常用的方法是使用NAT-T(NAT Traversal)技术。
NAT-T允许在IPSec中封装加密后的数据包,并通过UDP协议传输。
这样可以绕过NAT设备对IP头部信息的修改,确保IPSec协议能够正常工作。
另一种方法是使用IKEv2(Internet Key Exchange version 2)协议。
IKEv2支持在NAT环境下的IPSec通信,通过在NAT设备上打洞(NAT Traversal)来实现数据传输。
这种方法比NAT-T更加灵活和高效。
除了NAT-T和IKEv2,还有一些其他技术可以帮助IPSec穿越NAT。
例如,在NAT设备上配置特殊的端口映射规则,或者使用中间设备进行数据转发。
这些方法都可以有效解决IPSec在NAT环境下的通信问题。
总的来说,IPSec穿越NAT的原理是通过特殊的技术手段,确保IPSec协议在存在NAT设备的网络环境中正常工作。
这些技术包括NAT-T、IKEv2等,它们通过绕过NAT设备对IP头部信息的修改,实现安全的数据传输。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IPSec的NAT穿越详细介绍1. 前言IPSec提供了端到端的IP通信的安全性,但在NAT环境下对IPSec的支持有限,AH协议是肯定不能进行NAT的了,这和AH设计的理念是相违背的;ESP协议在NAT环境下最多只能有一个VPN主机能建立VPN通道,无法实现多台机器同时在NAT环境下进行ESP通信。
关于IPSec在NAT环境下的需求问题在RFC3715中进行了描述。
NAT穿越(NATTraversal,NAT-T)就是为解决这个问题而提出的,在RFC3947,3948中定义,在RFC4306中也加入了NAT-T的说明,但并没废除RFC3947,3948,只是不区分阶段1和阶段2。
该方法将ESP协议包封装到UDP包中(在原ESP协议的IP包头外添加新的IP头和UDP 头),使之可以在NAT环境下使用的一种方法,这样在NAT的内部网中可以有多个IPSec 主机建立VPN通道进行通信。
2. IKE协商使用UDP封装RFC3947主要描述如何检测是否存在NAT设备,并如何在IKE中协商使用UDP来封装IPSec 数据包。
本帖隐藏的内容2.1 检测功能是检测通信中是否存在NAT设备和对方是否支持NAT-T。
正常的IKE协商使用的UDP包的源和目的端口都是500,如果存在NAT设备,大多数情况下该UDP包的源端口部分会改变,只有少数情况不改。
接收方如果发现UDP源端口不是500,那可以确定数据是经过了NAT设备。
另外,确定NAT的位置也是重要的,在检测对方失效(DPD)时,应该尽量由在NAT设备后面的一方主动进行DPD探测,而从另一方探测有可能会失败。
检测对方是否支持NAT-T是通过交换vendor ID载荷来实现的,如果自身支持NAT-T,在IKE 开始交互就要发送这种载荷,载荷内容是“RFC 3947”的MD5值,也就是十六进制的“4a131c81070358455c5728f20e95452f”。
判断是否在NAT设备后面是通过发送NAT-D(NAT-Discovery)载荷来实现的,载荷内容是IP 地址和UDP端口的HASH值,NAT-D载荷格式如下,载荷类型值是20:1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8+---------------+---------------+---------------+---------------+| Next Payload | RESERVED | Payload length |+---------------+---------------+---------------+---------------+~ HASH of the address and port ~+---------------+---------------+---------------+---------------+HASH值的计算方法如下,具体HASH是根据协商来确定的:HASH = HASH(CKY-I | CKY-R | IP | Port)CKY-I和CKY-R是协商发起方和响应方的cookie。
协商中双方各自至少要发送两个NAT-D载荷,第一个载荷是对方的地址和端口的HASH,后面的载荷是自己的地址和端口,如果本地有多个地址,则要发送多个载荷,包括所有地址和端口的HASH,对方接收到载荷后重新根据收到的包的实际地址端口来计算HASH值后进行比较,就可以知道是否有NAT 设备以及哪一方在NAT设备之后了。
有些的NAT设备具有端口固定的功能,也就是进行NAT转换后只改变地址而不改变端口,而且针对IKE通信使用cookie来区分内部各个 IPSec设备的IKE连接,后续IKE协商如果继续用500端口协商就会出现问题。
对于这类设备,解决方法是改变IKE协商端口从500到4500,因为这些设备只对500端口进行特殊处理而不对4500端口处理。
在协商时,发现了自己在NAT设备之后的一方立即要将协商端口从500该为4500,源和目的端口都是4500,此时协商数据包格式为:IP UDP(4500,4500) HDR*, IDii, [CERT, ] SIG_I其中“non-ESP marker”为4字节,在后面介绍其值。
接收方接收此包解密并认证通过后,要改变自己的状态将原来处理500端口状态改为处理4500端口,后续的协商过程都使用4500端口进行,以后500端口收到的不是新协商的包都将被丢弃,协商过程为:Initiator Responder------------ ------------UDP(500,500) HDR, SA, VID --><-- UDP(500,X) HDR, SA, VIDUDP(500,500) HDR, KE, Ni,NAT-D, NAT-D --><-- UDP(500,X) HDR, KE, Nr,NAT-D, NAT-DUDP(4500,4500) HDR*#, IDii,[CERT, ]SIG_I --><-- UDP(4500,Y) HDR*#, IDir,[ CERT, ], SIG_R如果支持NAT-T,在ID载荷中的端口值要设置为0。
2.2 UDP封装协商UDP封装方式有两种,一种是UDP通道模式封装,一种是UDP传输模式封装,取值为:UDP-Encapsulated-Tunnel 3UDP-Encapsulated-Transport 4当发现存在NAT设备后,就要选择这两者模式中的一种,而一般正常的通道模式封装和传输模式封装取值分别为1和2。
在协商封装模式时,提议一方或者是提议NAT模式下的3、4,或者是提议非NAT下的1、2,而不应该同时提议1、2、3、4这四种模式。
由于在计算TCP/UDP校验和的时候要用到IP地址部分,因此需要知道对方的实际原始地址值,因此协商时双方要发送各自的原始地址,使用 NAT-OA (NAT Original Address)载荷进行发送,对应发起方来说,NAT-OA载荷中的地址就是自己实际地址和对方的公网地址,而对于响应方来说,NAT-OA载荷中的对方的公网地址和自己的实际地址。
NAT-OA载荷格式为,这种载荷的类型为21:1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8+---------------+---------------+---------------+---------------+| Next Payload | RESERVED | Payload length |+---------------+---------------+---------------+---------------+| ID Type | RESERVED | RESERVED |+---------------+---------------+---------------+---------------+| IPv4 (4 octets) or IPv6 address (16 octets) |+---------------+---------------+---------------+---------------+其中ID Type只能为ID_IPV4_ADDR或者ID_IPV6_ADDR,保留字段值都要置0。
值得注意的是只是在传输模式下需要传NAT-OA载荷,但通道模式下就没必要传了,具体原因看下节UDP封装方法后再说明。
交换过程如下:Initiator Responder------------ ------------HDR*, HASH(1), SA, Ni, [, KE][, IDci, IDcr ][, NAT-OAi, NAT-OAr] --><-- HDR*, HASH(2), SA, Nr, [, KE][, IDci, IDcr ][, NAT-OAi, NAT-OAr]HDR*, HASH(3) -->3. UDP封装通信数据RFC3948描述如何对ESP包进行UDP封装和解封装,主要面向实际的通信数据处理。
封装ESP包的UDP包所用的端口和IKE协商的端口是相同的,一般都是4500,这样NAT设备也不需要处理两个端口了,区分一个UDP封装包的是IKE协商数据还是实际ESP数据是根据ESP头中的SPI字段来进行的,SPI为0表示是IKE数据,否则为实际ESP数据。
3.1. UDP封装ESP包格式0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Source Port | Destination Port |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Length | Checksum |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| ESP header [RFC4303] |~ ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+所定义的UDP头是由RFC768定义的标准UDP头,源端口和目的端口都必须是相同的,校验和字段应该设为0,ESP本身有完整性认证功能,不需要UDP的校验和,ESP头的最开始4个字节是SPI字段,该字段绝不能是0。
因此传输模式下一个TCP上层包被封装为:应用ESP/UDP之前----------------------------IPv4 |orig IP hdr | | ||(any options)| TCP | Data |----------------------------应用ESP/UDP之后-------------------------------------------------------IPv4 |orig IP hdr | UDP | ESP | | | ESP | ESP||(any options)| Hdr | Hdr | TCP | Data | Trailer |Auth|-------------------------------------------------------|<----- encrypted ---->||<------ authenticated ----->|数据包经过NAT设备后,只修改外部IP头和UDP头中的数据,TCP头中的数据是不可能修改的(实际NAT设备也根本看不到TCP头数据,因为是被 ESP加密了的),经过ESP/UDP协议解封装处理,到达应用层时的数据包剩下修改后的外部IP头和原始TCP头,因此TCP头中的校验和必须和修改后的IP头中的地址匹配,否则在应用层看来就是错误的,因此IKE 时必须交换NAT-OA载荷,使ESP/UDP处理层知道如何修改TCP校验和,而对于上层的UDP 协议,可以简单的将校验和置0即可。