老王的IT博客

不管现在如何差,总要奋力向前进!

  • 博客访问: 20000150
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000141
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000154
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000164
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000174
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000201
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000282
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

阅读(16795385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客

老王的IT博客

不管现在如何差,总要奋力向前进!

  • 博客访问: 20000275
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

阅读(16795384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


阅读(16795374) | 评论(0) | 转发(0) |
0

上一篇:搞定linux下的LumaQQ

下一篇:简单搞定debian下的字体

相关热门文章
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客

老王的IT博客

不管现在如何差,总要奋力向前进!

  • 博客访问: 20000204
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000261
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

阅读(16795384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客

老王的IT博客

不管现在如何差,总要奋力向前进!

  • 博客访问: 20000260
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000312
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

阅读(16795385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客

老王的IT博客

不管现在如何差,总要奋力向前进!

  • 博客访问: 20000327
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

阅读(16795389) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


阅读(16795384) | 评论(0) | 转发(0) |
0

上一篇:搞定linux下的LumaQQ

下一篇:简单搞定debian下的字体

相关热门文章
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


阅读(16795374) | 评论(0) | 转发(0) |
0

上一篇:搞定linux下的LumaQQ

下一篇:简单搞定debian下的字体

相关热门文章
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


阅读(16795335) | 评论(0) | 转发(0) |
0

上一篇:搞定linux下的LumaQQ

下一篇:简单搞定debian下的字体

相关热门文章
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客

老王的IT博客

不管现在如何差,总要奋力向前进!

  • 博客访问: 20000174
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000204
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000260
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

阅读(16795384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客

老王的IT博客

不管现在如何差,总要奋力向前进!

  • 博客访问: 20000260
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

IP Sec VPN与NAT破镜重圆-tonywam1036-ChinaUnix博客
  • 博客访问: 20000327
  • 博文数量: 108
  • 博客积分: 4011
  • 博客等级: 上校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-18 10:37
个人简介

落魄青年,挨踢民工,已经转行

文章分类

全部博文(108)

文章存档

2014年(1)

2008年(52)

2007年(55)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
IP Sec VPN与NAT破镜重圆 2007-10-25 14:09:03

分类: 系统运维

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

作者-王一平

笔者第一次在客户那里做支持时遇到需要使IPSec 加密数据通过NAT 设备的情况,感觉这种配置非常的奇怪,也很难解决。后来在支持使用IPSec VPN 客户的过程中,不断遇到这种情况,才意识到其实这种情况不但非常常见,而且也有其合理性,所以决定总结一些这方面的问题,希望能够让读者得到一些帮助。

NAT 网络地址翻译(Network Address Translation )技术主要是用来解决IPv4地址紧张的问题。它通过将用户网络内部的网络地址映射成公网地址来达到目的,因为这种方法隐藏了内部地址,因此一个内部网络的机器需要访问外部Internet 网络,这个内部网络只需要少量的外部公网地址就可以了,而不必每台内部机器一个公网地址。

当然因为内网地址信息对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT 技术还在一定程度上保证了内部网络的安全。

IPSec作为IPv4技术的一部分是使用最为普遍的VPN标准。现在随着企业信息化的快速发展,越来越多的用户都在部署基于IPSec的VPN设备,以达到通过Internet上进行多个企业内网安全通信和远程访问内网的需求。

但是很不幸的是,这两种非常重要且应用广泛的技术在一起工作的时候却有许多问题,以致无法使用。如何让NAT与IPSec 正常地同时工作一直是各个VPN厂商致力解决的问题,现在国际上也有相应的标准和技术出台,一种称为NAT-T(NAT穿越)的技术就是其中典型代表。

好端端的NAT

NAT技术完成的基本功能就是IP数据包网络地址的转换,如将一个内网的在Internet 上不可路数据由地址192.168.1.200 转换成Internet 上的可以路由的地址202.124.23.65。很多的网关设备都有NAT功能,如路由器、防火墙,我们可以把它们统一称为NAT 设备。当NAT设备转换的是源地址时,我们通称称其为SNAT(源地址NAT)。事实上我们大多数人在公司上Internet 网时都是利用这种方法,简单过程如下当一个内网外出的数据包经过这些NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT 设备会记录地址的映射信息,这样这个数据包就可以被路由从而在Internet 上传输。当数据包返回到NAT 设备时,有通过记录下的地址映射信息源地址转为原来的数据包地址。同理也有DNAT(目标地址NAT),这种情况下NAT设备转换的是数据包的目的地址。

叫好又叫座的IPSec VPN

因为在Internet 早期,安全的需求非常少,因此在IP 协议设计之初并没有考虑安全性,因此标准的IP 协议是不安全的。随着Internet 上的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。IPSec(IP Security)协议应运而生。

IPSec在3个方面保证了网络数据包的安全:机密性、完整性、认证性。机密性就是保证数据包的原始内容不被看到;完整性即保证数据包的内容不会被修改;认证性保证数据来自被信任的客户端。因此不可避免地需要使用多种的加密算法来修改数据包的内容。修改后的数据包有2种主要的封装形式: AH (Authentication Header) 和ESP (Encapsulating SecurityPayload)。 AH在IP数据包中插入了一个包头,其中包含对整个数据包内容的校验值。AH只用于对IP 数据包的认证,而并不对数据包认证作任何修改。ESP用户加密整个数据包内容,同时也可以对数据包进行认证。AH和ESP 即可以同时使用也可以分开使用。

IPSec 在传输数据的时候也有2 种不同的模式:传输模式和隧道模式。传输模式主要用于主机到主机之间的直接通信;而隧道模式主要用于主机到网关或网关到网关之间。传输模式和隧道模式主要在数据包封装时有所不同(如图1 所示)。

在传输模式中,只有IP包的传输层部分被修改(认证或者加密)。 而在隧道模式中,整个数据包包括IP头都被加密或认证(如图2)。

NAT 与IPSec VPN 的裂痕

 

在多数情况下NAT 的处理对用户使用是完全透明的,但是当希望使用IPSec 技术组建VPN 网络时,NAT 却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT 处理过程是需要修改IP 数据包的IP 头数据、传输层报文头数据甚至传输数据的内容(如FTP 应用),才能够正常工作。所以一旦经过IPSec 处理的IP 包穿过NAT设备时,包内容被NAT 设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文被认为是非法数据而被丢弃。这就是组建VPN 网关最常见的“IPSec 与NAT 协调工作”的问题。那么我们在什么时候会遇到这个问题呢?如果我们的VPN 设备在NAT设备的后面,如果我们在外地上网需要通过VPN客户端访问公司内网,如果我们没有合法的公网地址,只能通过服务商接入Internet 等等,都会遇到这个问题。

无论传输模式还是隧道模式,AH都会认证整个数据包。不同于ESP 的是,AH还会认证位于AH头之前的IP 头。当NAT 设备修改了IP 头之后,IPSec 就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH 是绝对不可能和NAT 在一起工作的。

我们再来看看使用ESP时的情况。ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。 所以最终可能和NAT一起工作的只能是隧道模式下的ESP。但是IKE和NAT工作时却有存在着冲突。

缝合旧创伤

现在有许多的解决方案来解决NAT 和IPSec 共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T和NAT穿越。NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec 封装好的数据包外再进行一次UDP 的数据封装。这样,当此数据包穿过NAT 网关时,被修改的只是最外层的IP/UDP 数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP 封装去掉,就可以获得完整的IPSec 数据包。NAT-T在实际运作时,第一步是判断通信的双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步,去发现在上方的链路中间是否存在NAT设备,这一步通常成为NAT发现。NAT发现的原理实际上就是判断通信双发的IP 地址或者端口是否发生了改变。当发现NAT 设备以后,NAT-T 双方开始协商所采用的数据包封装方式,至此完成协商过程。

当在VPN之间的链路中发现NAT设备之后,除对数据包进行ESP 处理外,还需要额外的进行一些其他的处理和封装。即对IPSec 通信数据采用UDP 和IKE端口的包头进行封装,因此这种封装后的数据包实际上和正常的IKE 协商数据包有相同的包头(IP 头和UDP头),从而避免防火墙对IPSec 通信数据和IKE协商数据使用不同的安全策略。NAT-T 后数据包的封装格式如图3 所示。通过在IP 头后,ESP 包头之前插入一个UDP 包头来完成NAT-T 的UDP 封装。这样的数据包在经过NAT 设备时就会被认为是一个正常的UDP数据包,从而完成NAPT转换,数据包到达VPN网关时也不会校验设备。

显然,NAT-T加大了数据包的长度和负载,大约为每个数据包增加了20B 的长度。这增加了设备处理的时间和负担。但是对应NAT-T的实现简单和安全而言,这是非常值得的,因此NAT-T实际上已成为VPN设备的必备功能,由于NAT 技术在国内的广泛应用,不具备这种功能的IPSec VPN使用环境会大大受到限制,所以用户在选用VPN 设备时应该将这一功能作为一个重要的考核指标。

转自  微电脑世界

阅读(16795385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册