搜档网
当前位置:搜档网 › NAT原理与穿越

NAT原理与穿越

NAT原理与穿越
NAT原理与穿越

NA T的完全分析及其UDP穿透的完全解决方案

一:基本术语

防火墙

防火墙限制了私网与公网的通信,它主要是将(防火墙)认为未经授权的的包丢弃,防火墙只是检验包的数据,并不修改数据包中的IP地址和TCP/UDP端口信息。

网络地址转换(NAT)

当有数据包通过时,网络地址转换器不仅检查包的信息,还要将包头中的IP 地址和端口信息进行修改。以使得处于NAT之后的机器共享几个仅有的公网IP 地址(通常是一个)。网络地址转换器主要有两种类型.

P2P应用程序

P2P应用程序是指,在已有的一个公共服务器的基础上,并分别利用自己的私有地址或者公有地址(或者两者兼备)来建立一个端到端的会话通信。

P2P防火墙

P2P防火墙是一个提供了防火墙的功能的P2P代理,但是不进行地址转换.

P2P-NAT

P2P-NAT 是一个 P2P代理,提供了NAT的功能,也提供了防火墙的功能,一个最简的P2P代理必须具有锥形NAT对Udp通信支持的功能,并允许应用程序利用Udp打洞技术建立强健的P2P连接。

回环转换

当NAT的私网内部机器想通过公共地址来访问同一台局域网内的机器的时,NAT设备等价于做了两次NAT的事情,在包到达目标机器之前,先将私有地址转换为公网地址,然后再将公网地址转换回私有地址。我们把具有上叙转换功能的NAT设备叫做“回环转换”设备。

二:NAT分类

可以分为基础NAT与网络地址和端口转换(NAPT)两大类

(一):基础NAT

基础NAT将私网主机的私有IP地址转换成公网IP地址,但并不将TCP/UDP 端口信息进行转换。基础NAT一般用在当NAT拥有很多公网IP地址的时候,它将公网IP地址与内部主机进行绑定,使得外部可以用公网IP地址访问内部主机。(实际上是只将IP转换,192.168.0.23 <-> 210.42.106.35,这与直接设置IP 地址为公网IP还是有一定区别的,特别是对于企业来说,外部的信息都要经过统一防火墙才能到达内部,但是内部主机又可以使用公网IP)

(二):网络地址和端口转换(NAPT)

这是最普遍的情况,网络地址/端口转换器检查、修改包的IP地址和TCP/UDP 端口信息,这样,更多的内部主机就可以同时使用一个公网IP地址。

请参考[RFC1631]和[RFC2993]及[RFC2663]这三个文档了解更多的NAT分类和术语信息。另外,关于NAPT的分类和术语,[RFC2663]做了更多的定义。当一个内部网主机通过NAT打开一个“外出”的TCP或UDP会话时,NAPT分配给这

个会话一个公网IP和端口,用来接收外网的响应的数据包,并经过转换通知内部网的主机。这样做的效果是,NAPT在[私有IP:私有端口]和[公网IP:公网端口]之间建立了一个端口绑定。

端口绑定指定了NAPT将在这个会话的生存期内进行地址转换任务。这中间存在一个这样的问题,如果P2P应用程序从内部网络的一个[私有IP地址:端口]对同时发出多条会话给不同的外网主机,那么NAT会怎样处理呢?这又可以分为锥形NAT (CONE NAT)与对称NAT (SYMMTRIC NAT)两大类来考虑:

A.锥形NAT

(为什么叫做锥形呢?请看以下图形,终端和外部服务器,都通过NAT分派的这个绑定地址对来传送信息,就象一个漏斗一样,筛选并传递信息)

当建立了一个 [私有IP:端口]-[公网IP:端口] 端口绑定之后,对于来自同一个[私有IP:端口]会话,锥形NAT服务器允许发起会话的应用程序重复使用这个端口绑定,一直到这个会话结束才解除(端口绑定)。

例如,假设 Client A(IP地址信息如上图所示)通过一个锥形NAT 同时发起两个外出的连接,它使用同一个内部端口(10.0.0.1:1234)给公网的两台不同的服务器,S1和S2。锥形NAT 只分配一个公网IP和端口

(155.99.25.11:62000)给这个两个会话,通过地址转换可以确保 Client使用端口的“同一性”(即这个Client只使用这个端口)。而基础NATs和防火墙却不能修改经过的数据包端口号,它们可以看作是锥形NAT的精简版本。

进一步分析可以将CONE NAT受限制锥形NAT (RESTRICT CONE)与端口受限锥形NAT (PORT RESTRICT CONE)三大类,以下是详细论述:分为全双工锥形NAT(FULL CONE) ,

1.全双工锥形NAT

当内部主机发出一个“外出”的连接会话,就会创建了一个公网/私网地址,一旦这个地址对被创建,全双工锥形NAT会接收随后任何外部端口传入这个公共端口地址的通信。因此,全双工锥形NAT有时候又被称为"混杂"NAT。

2.受限制锥形NAT

受限制的锥形NAT会对传入的数据包进行筛选,当内部主机发出“外出”的会话时,NAT会记录这个外部主机的IP地址信息,所以,也只有这些有记录的外部IP地址,能够将信息传入到NAT内部,受限制的锥形NAT 有效的给防火墙提炼了筛选包的原则——即限定只给那些已知的外部地址“传入”信息到NAT 内部。

3.端口受限锥形NAT

端口受限制的锥形NAT,与受限制的锥形NAT不同的是:它同时记录了外部主机的IP地址和端口信息,端口受限制的锥形NAT给内部节点提供了同一级别的保护,在维持端口“同一性”过程中,将会丢弃对称NAT传回的信息。

B.对称NAT

对称NAT,与Cone NAT是大不相同的,并不对会话进行端口绑定,而是分配一个全新的公网端口给每一个新的会话。

还是上面那个例子:如果 Client A (10.0.0.1:1234)同时发起两个 "外出" 会话,分别发往S1和S2。对称Nat会分配公共地址155.99.25.11:62000给Session1,然后分配另一个不同的公共地址155.99.25.11:62001给Session2。对称Nat能够区别两个不同的会话并进行地址转换,因为

在 Session1 和 Session2中的外部地址是不同的,正是因为这样,Client端的应用程序就迷失在这个地址转换边界线了,因为这个应用程序每发出一个会话都会使用一个新的端口,无法保障只使用同一个端口了。

在TCP和UDP通信中,(到底是使用同一个端口,还是分配不同的端口给同一个应用程序),锥形NAT和对称NAT各有各的理由。当然锥形NAT在根据如何公平地将NAT接受的连接直达一个已创建的地址对上有更多的分类。这个分类一般应用在Udp通信(而不是Tcp通信上),因为NATs和防火墙阻止了试图无条件传入的TCP连接,除非明确设置NAT不这样做。

三:NAT对session的处理

以下分析NAPT是依据什么策略来判断是否要为一个请求发出的UDP数据包建立Session的.主要有一下几个策略:

A. 源地址(内网IP地址)不同,忽略其它因素, 在NAPT上肯定对应不同的Session

B. 源地址(内网IP地址)相同,源端口不同,忽略其它的因素,则在NAPT

上也肯定对应不同的Session(会话)

C. 源地址(内网IP地址)相同,源端口相同,目的地址(公网IP地址)相同,目的端口不同,则在NAPT上肯定对应同一个Session

D. 源地址(内网IP地址)相同,源端口相同,目的地址(公网IP地址)不同,忽略目的端口,则在NAPT上是如何处理Session的呢?

A,B,C三种情况的都是比较简单的,可以很容易的实现.而D的情况就比较复杂了.所以D情况才是我们要重点关心和讨论的问题。

四:完全解决方案

以下针对四种SESSION与四种NAT的完全解决方案,为了方便将使用以下缩写形式:

C代表CONE NAT

S代表SYMMETRIC NAT,

FC代表 FULL CONE NAT,

RC代表 RESTRICT CONE NAT,

PC 代表 PORT RESTRICT CONE NAT.

首先依据CLIENT (客户)端在NAT后的个数不同可以分为两大类:

TYPE ONE :一个在NAT后 + 一个在公网中.

这种情况下可以分为两大类:

A. S VS 公网:此种情况下,由于公网的地址在一个SESSION内是不变的,所以可以打洞是可以成功的.

B. C VS 公网: 与上面类似,这种情口下打洞是可以成功的.

TYPE TWO:两个客户都在NAT后面.

这种情况下也可以细分为两大类:

A. 其中一个NAT 是S(SYMMETRIC NAT) 型的,既:S VS C或者是S VS S .

下面论证这种情口下按照常规打洞是行不通的,在常规打洞中,所有的客户首先登陆到一个服务器上去.服务器记录下每个客户的[公网IP:端口],然后在打洞过程中就使用这个记录的值,然而对于S型的NAT来说,它并不绑定[私网IP:端口]和[公网IP:端口]的映射.所以在不同的SESSION中,NAT将会重新分配一对[公网IP:端口].这样一来对于S型的NAT来说打洞的[公网IP:端口]与登记在服务器上的[公网IP:端口]是不同的.而且也没有办法将打洞的[公网IP:端口]通知到另一个位于NAT下的客户端, 所以打洞是不会成功的.然而如果另一个客户端是在公网时,打洞是可以的.前面已经论证了这种情况.

这种情况下的解决方案是只能通过端口预测来进行打洞,具体解决方法如下:例如(以两个都是S型的为例) NAT A 分配了它自己的UDP端口62000,用来保持客户端A 与服务器S的通信会话, NAT B 也分配了31000端口,用来保持客户端B 与服务器S的通信会话。通过与服务器S的对话,客户端A 和客户端B都相互知道了对方所映射的真实IP和端口。

客户端A发送一条UDP消息到138.76.29.7:31001(请注意到端口号的增加),同时客户端B发送一条UDP消息到155.99.25.11:62001。如果NAT A 和NAT B 继续分配端口给新的会话,并且从A-S和B-S的会话时间消耗得并不多的话,那么一条处于客户端A和客户端B之间的双向会话通道就建立了。

客户端A发出的消息送达B导致了NAT A打开了一个新的会话,并且我们希望NAT A将会指派62001端口给这个新的会话,因为62001是继62000后,NAT 会自动指派给从服务器S到客户端A之间的新会话的端口号;类似的,客户端B发出的消息送达A导致了 NAT B打开了一个新的会话,并且我们希望 NAT B 将会指派31001这个端口给新的会话;如果两个客户端都正确的猜测到了对方新会话被指派的端口号,那么这个客户端A-客户端B的双向连接就被打通了。其结果如下图所示:

明显的,有许多因素会导致这个方法失败:如果这个预言的新端口(62001和31001)恰好已经被一个不相关的会话所使用,那么NAT就会跳过这个端口号,这个连接就会宣告失败;如果两个NAT有时或者总是不按照顺序来生成新的端口号,那么这个方法也是行不通的。

如果隐藏在NATA后的一个不同的客户端X(或者在NAT B后)打开了一个新的“外出”UDP连接,并且无论这个连接的目的如何;只要这个动作发生在客户端A 建立了与服务器S的连接之后,客户端A 与客户端B 建立连接之前;那么这个无关的客户端X 就会趁人不备地“偷”到这个我们渴望分配的端口。所以,这个方法变得如此脆弱而且不堪一击,只要任何一个NAT方包含以上碰到的问题,这个方法都不会奏效。

在处于 cone NAT 系列的网络环境中这个方法还是实用的;如果有一方

为 cone NAT 而另外一方为 symmetric NAT,那么应用程序就应该预先发现另外一方的 NAT 是什么类型,再做出正确的行为来处理通信,这样就增大了算法的复杂度,并且降低了在真实网络环境中的普适性。

最后,如果P2P的一方处在两级或者两级以上的NAT下面,并且这些NATS 接近这个客户端是SYMMETRIC NAT的话,端口号预言是无效的!

因此,并不推荐使用这个方法来写新的P2P应用程序,这也是历史的经验和教训!

B. 两个都是CONE NAT型的.

这种情况下可以分为六大类型:

A: FC + FC

B: FC + RC

C: FC + PC

D: PC + RC

E: PC + PC

F: RC + RC

虽然有这么多种情况,但是由于CONE NAT 的特性,所以还是很好办的,因为

对于CONE NAT 来说,在同一个SESSION中它会绑定一对[私网IP:端口]和[公网IP:端口]的映射,所以它们打洞用的[公网IP:端口]与登记在服务器上的[公网IP:端口]是一致的,所以打洞是可以行的通的.

综上所述,就已经完全的概括了所有类型的NAT之间的可能的通信情况了.并且都提供了可行的解决方案.

五:对前一阶段的总结

1.前一阶段使用的打洞方法是有缺陷的,它只适应于两个都是

FULL CONE NAT的类型的CLIENT(客户端).以下论证它不适应于两个都是

CONE NAT的类型中的

B: FC + RC

C: FC + PC

D: PC + RC

E: PC + PC

F: RC + RC

这五种情况.

因为对于受限的NAT它登记了外出包的[IP地址&端口],它仅仅接受这些已登记地址发过来的包,所以它们报告服务器的端口只能接受来自服务器的包.不能接受来自另一客户端的包.所以前一阶段的打洞方法是不可行的.

六: 存在的问题

按照理论.NAT将在一定时间后关闭UDP的一个映射,所以为了保持与服务器能够一直通信,服务器必须要发送UDP心跳包,来保持映射不被关闭.这就需要一个合适的时间值.

Trackback: https://www.sodocs.net/doc/032322453.html,/TrackBack.aspx?PostId=712773

IPsec 穿越NAT 配置

典型配置示例(对应新版本IPsec模块) 3.2.1组网需求: 某企业总部和分部通过两台路由器实现互联,但由于总部需要和分部建立IPsec VPN通道,总部增加了一台新的路由器用于和分部建立VPN之用,但是又不想改变现有的网络环境,所以把新增的路由器直接挂接在核心交换机下面。现网络环境描述如下: ●R2605,R4860都支持IPsec穿越NA T功能 ●总部(PC 1)通过交换机接入到R2605的F0/1口,网关地址为192.168.1.1; ●分部(PC 2)通过交换机接入到分部R2605的F0/1口,网关为172.16.1.1; ●总部的R2605的F0/0通过核心交换机连接到总部出口路由器R4860的G0/1口; ●总部R4860通过G0/0口接入互联网,分部R2605通过F0/0口接入到互联网; 网络管理员希望通过总部的R2605和分部的R2605通过IPsec VPN建立连接。 使用IPsec 穿越NA T功能实现该需求,进行如下配置: ●总部R2605作为NAT inside侧的IPsec设备,R4860作为NAT网关,分部R2622 作为分部的IPsec设备; ●总部R2605和分部R2622作为VPN设备,配置ipsec vpn与对端建立IPsec通道。 ●R4860作为总部的出口路由器配置NAT实现网络地址的转换。 组网图如图1 所示

图1 3.2.2典型实例配置: (1)分部R2605配置 5.01A R1# ! hostname R1 ! crypto isakmp key 0 bdcom address 0.0.0.0 0.0.0.0 //…定义预共享密钥…// crypto isakmp nat keepalive 20 crypto isakmp policy 10 authentication pre-share encryption 3des group 2

IPSec协议

IPSec协议 IPSec协议 1 IP Sec协议概述 2 IPSec VPN工作原理 4.2.1 隧道建立方式 2.2 数据保护方式 2.3 IPSEC 协议体系结构 3 IP Sec的优点 1 IP Sec协议概述 IPSec是一系列基于IP网络(包括Intranet、Extranet和Internet)的,由IETF 正式定制的开放性IP安全标准,是虚拟专网的基础,已经相当成熟可靠。 IPSec可以保证局域网、专用或公用的广域网及Internet上信息传输的安全。 ①保证Internet上各分支办公点的安全连接:公司可以借助Internet或公用的广域网搭建安全的虚拟专用网络。这使得公司可以不必耗巨资去建立自己的专用网络,而只需依托Internet即可以获得同样的效果。 ②保证Internet上远程访问的安全:在计算机上装有IPSec的终端用户可以通过拨入所在地的ISP的方式获得对公司网络的安全访问权。这一做法降低了流动办公雇员及远距离工作者的长途电话费用。 ③通过外部网或内部网建立与合作伙伴的联系:IPSec通过认证和钥匙交换机制确保企业与其它组织的信息往来的安全性与机密性。 ④提高了电子商务的安全性:尽管在电子商务的许多应用中已嵌入了一些安全协议,IPSec的使用仍可以使其安全级别在原有的基础上更进一步,因为所有由网络管理员指定的通信都是经过加密和认证的。 IPSec的主要特征在于它可以对所有IP级的通信进行加密和认证,正是这一点才使IPSec可以确保包括远程登录、客户/服务器、电子邮件、文件传输及Web 访问在内多种应用程序的安全。 IPSec在传输层之下,对于应用程序来说是透明的。当在路由器或防火墙上安装IPSec时,无需更改用户或服务器系统中的软件设置。即使在终端系统中执行IPSec,应用程序一类的上层软件也不会被影响。 IPSec对终端用户来说是透明的,因此不必对用户进行安全机制的培训。 如果需要的话,IPSec可以为个体用户提供安全保障,这样做就可以保护企业内部的敏感信息。 IPSec正向Internet靠拢。已经有一些机构部分或全部执行了IPSec。IAB的前任总裁Christian Huitema认为,关于如何保证Internet安全的讨论是他所见过的最激烈的讨论之一。讨论的话题之一就是安全是否在恰当的协议层上被使用。

IPSec的NAT穿越详细介绍

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,后面的载荷是自己的地址和端口,如果本地有多个地址,则要发送多个载荷,包括所有地址和

ipsec原理介绍

Ipsec VPN调研总结 一、Ipsec原理 Ipsec vpn指采用IPSec协议来实现远程接入的一种VPN技术,IPSec全称为Internet Protocol Security,是由Internet Engineering Task Force (IETF) 定义的安全标准框架,用以提供公用和专用网络的端对端加密和验证服务。 Ipsec是一个协议集,包括AH协议、ESP协议、密钥管理协议(IKE协议)和用于网络验证及加密的一些算法。 1、IPSec支持的两种封装模式 传输(transport)模式:只是传输层数据被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。 隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。

2、数据包结构 ◆传输模式:不改变原有的IP包头,通常用于主机与主机之间。 ◆隧道模式:增加新的IP头,通常用于私网与私网之间通过公网进行通信。

3、场景应用图

4、网关到网关交互图

5、Ipsec体系结构: 6、ipsec中安全算法 ●源认证 用于对对等体的身份确认,具体方法包含:PSK(pre-share key);PK3(public key infrustructure公钥基础设施)数字证书,RSA等,后两种为非对称加密算法。 ●数据加密 对传输的数据进行加密,确保数据私密性,具体对称加密算法包含:des(data encrypt standard)共有2种密钥长度40bits,56bits,3des密钥长度为56bits的3倍;aes(advanced encrypted standard)AES 加密共有三种形式,分为AES 128(128-bit 长度加密),AES 192(192-bit 长度加密)以及AES 256(256-bit 长度加密)。 ●完整性校验 对接收的数据进行检查,确保数据没有被篡改,主要使用hash算法(HMAC hashed message authentication code),包含MD5(message digest输出128bit校验结 果);SHA-1(secure hash algorithm 1)输出160bits校验结果。 ●密钥交换算法

几种方式解决SIP穿越NAT总结讲解

SIP穿越NAT的几种方式 多媒体会话信令协议是在准备建立媒体流传输的代理之间交换信息的协议,媒体流与信令流截然不同,它们所采用的网络通道也不一致。由于协议自身设计上的原因,使得媒体流无法直接穿透网络地址转换/防火墙(NAT/Firewall)。因为它们生存期的目标只是为了建立一个在信息中携带IP地址的分组流,这在遇到NAT/Firewall 时会带来许多问题。而且这些协议的目标是通过建立P2P(Peer to Peer)媒体流以减小时延,而协议本身很多方面却与NAT存在兼容性问题,这也是穿透 NAT/Firewall的困难所在。而NAT仍是解决当前公用IP地址紧缺和网络安全问题的最有力手段,所以解决NAT穿越成为首要问题。 以SIP通信为例,呼叫建立和媒体通信的建立是依赖SIP消息首部和SDP 消息所描述的地址和端口信息进行的,呼叫双方分别在内网和外网上,内网是通过NAT设备连接到外网,由于NAT设备工作在IP和TCP/UDP层,所以它不对SDP 等应用层数据进行NAT变换,因此会造成寻址失败,从而导致呼叫无法正常建立。另外,VOIP设备的主要通信协议(如SIP和H.323)要求终端之间使用IP地址和端口号来建立端到端的数据侦听外来的呼叫,而防火墙却通常被配置阻止任何不请自到的数据分组通过。需要网络管理者打开防火墙上的一个端口来接收呼叫建立数据分组,例如5060端口(SIP的通信端口),但IP语音和视频通信协议还要求打开许多别的端口接收呼叫控制信息来建立语音和视频通信,这些端口号事先并不知道,是动态分配的,也就是说网络管理者为了允许语音和视频通信将不得不打开防火墙上所有的端口,防火墙就失去了存在的意义。所以当前的问题还有需要解决监听端口的问题。如下图SIP呼叫不成功示意图

第九章 IPSec及IKE原理

第九章IPSec及IKE原理 9.1 IPSec概述 IPSec(IP Security)是IETF制定的为保证在Internet上传送数据的安全保密性能的三层隧道加密协议。IPSec在IP层对IP报文提供安全服务。IPSec协议本身定义了如何在IP数据包中增加字段来保证IP包的完整性、私有性和真实性,以及如何加密数据包。使用IPsec,数据就可以安全地在公网上传输。IPsec提供了两个主机之间、两个安全网关之间或主机和安全网关之间的保护。 IPSec包括报文验证头协议AH(协议号51)和报文安全封装协议ESP(协议号50)两个协议。AH可提供数据源验证和数据完整性校验功能;ESP除可提供数据验证和完整性校验功能外,还提供对IP报文的加密功能。 IPSec有隧道(tunnel)和传送(transport)两种工作方式。在隧道方式中,用户的整个IP 数据包被用来计算AH或ESP头,且被加密。AH或ESP头和加密用户数据被封装在一个新的IP数据包中;在传送方式中,只是传输层数据被用来计算AH或ESP头,AH或ESP头和被加密的传输层数据被放置在原IP包头后面。 9.2 IPSec的组成 IPSec包括AH(协议号51)和ESP(协议号50)两个协议: AH(Authentication Header)是报文验证头协议,主要提供的功能有数据源验证、数据完整性校验和防报文重放功能,可选择的散列算法有MD5(Message Digest ),SHA1(Secure Hash Algorithm)等。AH插到标准IP包头后面,它保证数据包的完整性和真实性,防止黑客截断数据包或向网络中插入伪造的数据包。AH采用了hash算法来对数据包进行保护。AH没有对用户数据进行加密。 ESP(Encapsulating Security Payload)是报文安全封装协议,ESP将需要保护的用户数据进行加密后再封装到IP包中,证数据的完整性、真实性和私有性。可选择的加密算法有DES,3DES等。 9.3 IPSec的安全特点 数据机密性(Confidentiality):IPSec发送方在通过网络传输包前对包进行加密。 数据完整性(Data Integrity):IPSec接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改。

IPSEC NAT 穿越 (两种解法) 小余出品

IPSEC NAT 穿越(两种解法) 需求分析:如图,R2是上海总公司的路由器,R1是苏州分公司路由器,ISP1是长宽的路由,ISP2是电信路由器。R2的外部地址是公网地址,R1的外部地址是私网地址。在实际的工程中我们遇到这种问题太正常了,但恰好我们又需要在R1和R4之间建立IPSEC VPN。NAT和IPSEC是互相冲突的,因为IPSEC保护私网地址和传输层内容,而NAT需要改这些.OK 我们开始解决这个问题! 解法一:基于ESP穿越NAT 配置如下 R1: interface Loopback0 ip address 192.168.12.1 255.255.255.0 interface Ethernet0/0 ip address 172.16.12.1 255.255.255.0 half-duplex ip route 0.0.0.0 0.0.0.0 172.16.12.2 crypto isakmp policy 10 authentication pre-share crypto isakmp keepalive 60 ISAKMP的DPD crypto isakmp nat keepalive 10 用于在NAT之后的情況,防止NAT丢弃转发条目

crypto isakmp key cisco address 202.100.34.4 crypto ipsec transform-set myset esp-des esp-md5-hmac crypto ipsec nat-transparency spi-matching 开启SIP-Matching,跟NAT特性有关 access-list 101 permit ip 192.168.12.0 0.0.0.255 192.168.34.0 0.0.0.255 crypto map map 10 ipsec-isakmp set peer 202.100.34.4 set transform-set myset match address 101 interface Ethernet0/0 crypto map map R2: interface Ethernet0/0 ip address 172.16.12.2 255.255.255.0 ip nat inside ip virtual-reassembly IP分片虚拟重组 half-duplex interface Ethernet0/1 ip address 202.100.23.2 255.255.255.0 ip nat outside ip virtual-reassembly half-duplex

SIP协议的NAT穿越技术

NAT 指的是网络地址转换(Netword Address Translation)。这一技术使得大部分人可以在家里用多于一台的计算机上网但只用一个IP地址。多半时间里,一台有NAT功能的路由器支持从内部网络(带有内部IP地址)中取得数据,并将其发送到Internet,同时将每一个包的内部IP地址替换为外部地址。如下图所示: 什么是RTP? RTP 指的是实时传输协议(Real-Time Transport Protocol),这个协议的目的是在主叫和被叫之间传输语音数据。问题是,当你试图用RTP协议呼叫一个人的时候,你要事先知道他的IP地址和端口号(PORT),这使得RTP协议单独使用起来有相当的困难,因为呼叫的双方没有办法事先知道彼此的IP和端口。这就是为什么人们还需要SIP。 什么是SIP? SIP 也就是会话初始协议(Session Initiation Protocol),语法上很象HTTP协议,是可读的文本。它的目的是让主叫方可以找到被叫方的IP和端口,同时它也帮助双方协商媒体的类型和格式。比如,你想通过家里的一台PC机上运行的Free World Diadup(它使用SIP协议)来呼叫你远在罗马尼亚的朋友,如下图:

SIP发送一个INVITE包到FWD SERVER,其中包含有主叫方的RTP的IP地址和端口,FWD 将这个包转到对应的被叫方,被叫方接受了呼叫并将它自己的RTP的IP地址和端口返回来。 SIP+NAT,一个不能解决的问题? SIP的NA T的问题,其实不是SIP的问题,而是RTP的问题。SIP来声明RTP的地址和端口,但是如果客户端在NA T之后的话,它声明的端口就会与NA T在外部分配的不同。如下图: 即使很多SIP的实现都基于NA T总是分配一个与内网端口相同的一个外部端口这样一个假设,但这个假设是错误的。在产品环境下,你不能告诉奶奶说她不能与孙子说话是因为有些路由器分配了一个不同的端口号。

ipsec协议的应用

竭诚为您提供优质文档/双击可除 ipsec协议的应用 篇一:ipsec协议 ipsec协议 ipsec协议 1ipsec协议概述 2ipsecVpn工作原理 4.2.1隧道建立方式 2.2数据保护方式 2.3ipsec协议体系结构 3ipsec的优点 1ipsec协议概述 ipsec是一系列基于ip网络(包括intranet、extranet 和internet)的,由ietF正式定制的开放性ip安全标准,是虚拟专网的基础,已经相当成熟可靠。ipsec可以保证局域网、专用或公用的广域网及internet上信息传输的安全。 ①保证internet上各分支办公点的安全连接:公司可以借助internet或公用的广域网搭建安全的虚拟专用网络。这使得公司可以不必耗巨资去建立自己的专用网络,而只需依

托internet即可以获得同样的效果。 ②保证internet上远程访问的安全:在计算机上装有ipsec的终端用户可以通过拨入所在地的isp的方式获得对公司网络的安全访问权。这一做法降低了流动办公雇员及远距离工作者的长途电话费用。 ③通过外部网或内部网建立与合作伙伴的联系:ipsec 通过认证和钥匙交换机制确保企业与其它组织的信息往来 的安全性与机密性。 ④提高了电子商务的安全性:尽管在电子商务的许多应用中已嵌入了一些安全协议,ipsec的使用仍可以使其安全级别在原有的基础上更进一步,因为所有由网络管理员指定的通信都是经过加密和认证的。 ipsec的主要特征在于它可以对所有ip级的通信进行加密和认证,正是这一点才使ipsec可以确保包括远程登录、客户/服务器、电子邮件、文件传输及web访问在内多种应用程序的安全。 ipsec在传输层之下,对于应用程序来说是透明的。当在路由器或防火墙上安装ipsec时,无需更改用户或服务器系统中的软件设置。即使在终端系统中执行ipsec,应用程序一类的上层软件也不会被影响。 ipsec对终端用户来说是透明的,因此不(ipsec协议的应用)必对用户进行安全机制的培训。如果需要的话,ipsec

CISCO IPsec NAT 穿越

CISCO IPsec NAT 穿越 一.案例拓扑 二.需求分析:如图,R2是BNET公司上海总公司的路由器,R1是BNET公司苏州分公司路由器,ISP1是长宽的路由,ISP2是电信路由器。R2的外部地址是公网地址,R1的 外部地址是私网地址。在实际的工程中我们遇到这种问题太正常了,但恰好我们又需要在R1和R2之间建立IPSEC VPN。NA T和IPSEC是互相冲突的,因为IPSEC保护私网地址和传输层内容,而NAT需要改这些。在CISCO设备中,我们只需要一条命令就可以解决这样的问题。R(config)#crypto isakmp nat keeplive 60 它自动检测是否经过NAT设备,如果发现时NA T设备,则用UDP封装。 三.配置参数 1.R1的配置 hostname R1 crypto isakmp policy 1 //配置IKE策略,同普通IPSEC VPN hash md5 authentication pre-share lifetime 60 crypto isakmp key cisco address 201.1.1.2 crypto isakmp nat keepalive 60 //与普通IPSEC不同之处,在此启用IPSEC NA T穿越,并且保持活跃的时间是60秒 ! ! crypto ipsec transform-set tran1 esp-des esp-sha-hmac ! crypto map map1 1 ipsec-isakmp set peer 201.1.1.2 set transform-set tran1

ipsec穿越nat典型配置指导

IPSEC穿越NAT 典型配置指导 Huawei-3Com Technologies Co., Ltd. 华为3Com技术有限公司

IPSEC穿越NAT特性典型配置指导目录 目录 1 特性介绍 (2) 2 特性的优点 (2) 3 使用指南 (2) 3.1 使用场合 (2) 3.2 配置步骤 (2) 3.2.1 配置IKE安全提议 (3) 3.2.2 配置IKE对等体 (4) 3.2.3 配置IPSEC访问控制列表 (4) 3.2.4 配置IPSEC安全提议 (5) 3.2.5 配置IPSEC安全策略 (5) 3.2.6 应用IPSEC安全策略 (6) 3.3 注意事项 (6) 3.4 举例:隧道模式下的IPSEC穿越NAT (6) 3.4.1 组网需求 (6) 3.4.2 组网图 (7) 3.4.3 硬件连接图 (7) 3.4.4 配置 (7) 3.4.5 验证结果 (11) 3.4.6 故障排除 (11) 4 关键命令 (12) 4.1 nat traversal (12) 5 相关资料 (13) 5.1 相关协议和标准 (13) 5.2 其他相关资料 (13)

IPSEC 穿越NAT 特性典型配置指导 正文 关键词:IPSEC ,NAT 摘 要:本文简单描述IPSEC 及其穿越NAT 特性的特点,详细描述了路由器上配置IPSEC 穿越 NAT 的基本方法和详细步骤,给出了一种IPSEC 穿越NAT 方法的配置案例。 缩略语: 第1页

1 特性介绍 IPSec(IP Security)协议族是IETF制定的一系列协议,它为IP数据报提供了高质量的、可互 操作的、基于密码学的安全性。特定的通信方之间在IP层通过加密与数据源验证等方式,来保证 数据报在网络上传输时的私有性、完整性、真实性和防重放。 IPSec通过AH(Authentication Header,认证头)和ESP(Encapsulating Security Payload,封装安全载荷)这两个安全协议来实现上述目标。并且还可以通过IKE(Internet Key Exchange,因特网密钥交换协议)为IPSec提供了自动协商交换密钥、建立和维护安全联盟的服务,以简化IPSec的使用和管理。 如果两个IPsec设备之间存在一个或多个NAT设备,由于NAT设备会改变源IP地址和源端口,对IPsec报文和IKE协商都造成影响,因此必须配置IPSec/IKE的NAT穿越功能。为了节省IP地址空间,ISP经常会在公网中加入NAT网关,以便于将私有IP地址分配给用户,此时可能会导致IPSec/IKE隧道的两端一端为公网地址,另一端为私网地址,所以必须在私网侧配置NAT穿越,保证隧道能够正常协商建立。 2 特性的优点 IPSEC穿越NAT特性可以帮助用户穿过NAT网关在公网地址和私网地址间建立VPN隧道,极 大拓展了IPSEC VPN的应用范围。 3 使用指南 3.1 使用场合 用户在公网和私网间建立VPN隧道时,若需要对传输数据进行验证和加密,则推荐使用 IPSEC穿越NAT特性。 要求两侧作为VPN网关的路由器设备必须支持IPSEC穿越NAT特性,我司路由器设备均支持 此特性。 路由器VRP版本要求是VRP 3.3 Release 0006及以上。 3.2 配置步骤 IPSec协议有两种操作模式:传输模式和隧道模式。在传输模式下,AH或ESP被插入到IP头 之后但在所有传输层协议之前,或所有其他IPSec协议之前。在隧道模式下,AH或ESP插在原始 IP头之前,另外生成一个新头放到AH或ESP之前。从安全性来讲,隧道模式优于传输模式。它可 第2页

ipsec工作原理

一、IPSec如何工作的 1,定义interesting traffic 如access-list 101 permit ip 10.0.1.0 0.0.0.255 10.0.2.0 0.0.0.255 2,IKE Phase 1 IKE Phase 1的目的是鉴别IPsec对等体,在对等体之间设立安全通道,以使IKE能够进行信息交换。 IKE Phase 1执行以下的功能: 鉴别和保护IPSec对等体的身份 在对等体之间协商一个相匹配的IKE安全关联策略。 执行一个被认证过的Diffie-Hellman交换,其结果是具有匹配的共享密钥。 建立安全的通道,以协商IKE Phase 2中的参数 IKE Phase 1有两种模式: master mode aggressive mode 3,IKE Phase 2 IKE Phase 2的目的是协商IPSec安全关联(SA),以建立IPSec通道。IKE Phase 2执行以下功能: 协商受已有IKE SA 保护的IPSec SA参数 建立IPSec SA 周期性的重新协商IPSec SA 以确保安全性 4,IPSec 加密隧道 在IKE Phase 2结束之后,信息就通过IPSec隧道被交换 5,隧道终止 当被删除或生存期超时后,IPSec就终止了。当指定的秒数过去或指定的字节数通过隧道后,安全关联 将超时。当SA终结后,密钥会被丢弃。当一个数据流需要后续的IPSEC SA时,IKE就执行一个新的IKE Phase 2和IKE Phase 1协商,产生新的SA密钥,新的SA密钥可以在现有的SA超时之前被建立。 二IPSec安全关联(SA) IPSec 提供了许多选项用于网络加密和认证。每个IPSec连接能够提供加密、完整性、认证保护或三者 的全部。两个IPSEC必须精确确定要使用的算法(如DES或3DES用于加密,MD5或SHA用于完整性验证)。在 确定算法事,两个设备必须共享会话密钥。用于IPSEC 的安全关联是单向的。双向通信由两个安全关联 组成。

IPSec-VPN中隧道模式和传输模式区别

IPSec VPN基本原理 IPSec VPN是目前VPN技术中点击率非常高的一种技术,同时提供VPN和信息加密两项技术,这一期专栏就来介绍一下IPSec VPN的原理。 IPSec VPN应用场景 IPSec VPN的应用场景分为3种: 1. Site-to-Site(站点到站点或者网关到网关):如弯曲评论的3个机构分布在互联网的3个不同的地方,各使用一个商务领航网关相互建立VPN隧道,企业内网(若干PC)之间的数据通过这些网关建立的IPSec隧道实现安全互联。 2. End-to-End(端到端或者PC到PC):两个PC之间的通信由两个PC之间的IPSec 会话保护,而不是网关。 3. End-to-Site(端到站点或者PC到网关):两个PC之间的通信由网关和异地PC之间的IPSec进行保护。 VPN只是IPSec的一种应用方式,IPSec其实是IP Security的简称,它的目的是为IP 提供高安全性特性,VPN则是在实现这种安全特性的方式下产生的解决方案。IPSec是一个框架性架构,具体由两类协议组成: 1. AH协议(Authentication Header,使用较少):可以同时提供数据完整性确认、数据来源确认、防重放等安全特性;AH常用摘要算法(单向Hash函数)MD5和SHA1实现该特性。 2. ESP协议(Encapsulated Security Payload,使用较广):可以同时提供数据完整性确认、数据加密、防重放等安全特性;ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性。 为何AH使用较少呢?因为AH无法提供数据加密,所有数据在传输时以明文传输,而

NAT原理与NAT的简单穿越

NAT原理与NAT穿越 最近在看东西的时候发现很多网络程序中都需要NAT穿越,特意在此总结一下。 先做一个约定: 内网A中有:A1(192.168.0.8)、A2(192.168.0.9)两用户 网关X1(一个NAT设备)有公网IP 1.2.3.4 内网B中有:B1(192.168.1.8)、B2(192.168.1.9)两用户, 网关Y1(一个NAT设备)有公网IP 1.2.3.5 公网服务器:C (6.7.8.9) D (6.7.8.10) NAT原理 网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术。下面介绍两类不同方式实现的NAT: 1.NAT(Network Address Translators):称为基本的NAT 在客户机时 192.168.0.8:4000——6.7.8.9:8000 在网关时 1.2.3.4:4000——6.7.8.9:8000 服务器C 6.7.8.9:8000 其核心是替换IP地址而不是端口,这会导致192.168.0.8使用4000端口后,192.168.0.9如何处理?具体参考RFC 1631 基本上这种类型的NAT设备已经很少了。或许根本我们就没机会见到。 2. NAPT(Network Address/Port Translators):其实这种才是我们常说的 NAT NAPT的特点是在网关时,会使用网关的 IP,但端口会选择一个和临时会话对应的临时端口。如下图:

在客户机时 192.168.0.8:4000——6.7.8.9:8000 在网关时 1.2.3.4:62000——6.7.8.9:8000 服务器C 6.7.8.9:8000 网关上建立保持了一个1.2.3.4:62000的会话,用于192.168.0.8:4000与6.7.8.9:8000之间的通讯。 对于NAPT,又分了两个大的类型,差别在于,当两个内网用户同时与8000端口通信的处理方式不同: 2.1、Symmetric NAT型 (对称型) 在客户机时 192.168.0.8:4000——6.7.8.9:8000 192.168.0.8:4000—— 6.7.8.10:8000 在网关时,两个不同session但端口号不同1.2.3.4:62000——6.7.8.9:8000 1.2.3.4:62001——6.7.8.10:8000 服务器C 6.7.8.9:8000 服务器 D 6.7.8.10:8000 这种形式会让很多p2p软件失灵。 2.2、Cone NAT型(圆锥型)

IPsec穿越NAT浅析

IPsec穿越NAT浅析 上海博达公司数据通信有限公司 2010年11月

目录 1 概述 (2) 2 技术介绍 (2) 2.1 IPsec 和NAT之间的存在的矛盾 (2) 2.2.ESP报文结构 (3) 2.3.端口NAT流程 (3) 2.4. 检测NAT设备 (3) 2.5 .NAT 穿越 (4) 2.6. NAT Keepalives (4) 2.7. 两个Lifetime (5) 3.典型配置 (5) 3.1典型配置示例(对应老版本IPsec模块) (5) 3.1.1组网需求: (5) 3.1.2配置示例: (6) 3.1.3配置信息查看: (9) 3.1.4抓包分析交互过程: (11) 3.2典型配置示例(对应新版本IPsec模块) (17) 3.2.1组网需求: (17) 3.2.2典型实例配置: (18) 3.2.3配置信息查看: (22) 3.2.4抓包分析交互过程: (27) 4 结束语 (29) 说明: (29) 附录A 缩略语 (30)

1 概述 点对点的IPsec VPN在大型网络内部或者行业私网里面应用比较广泛。解决网络内部传输的部分数据需要加密,网络内部的点到点设备需要身份验证的问题。而在一些企业中企业节点连接到Internet,用户打算在不改变原有的网络结构的同时,在内网新增一台VPN设备,实现与远端VPN设备之间的IPSec VPN。此时点到点的IPsec VPN显然无法满足,而IPsec 穿越NAT技术却解决了这一问题。 2 技术介绍 IPSec提供了端到端的IP通信的安全性,但在NAT环境下对IPSec的支持有限。从IPsec的角度上说,IPsec要保证数据的安全,因此它会加密和校验数据。而从NAT的观点来看,为了完成地址转换,势必会修改IP地址。当 NAT 改变了某个包的 IP 地址和(或)端口号时,它通常要更新 TCP 或 UDP 校验和。当 TCP 或 UDP 校验和使用了 ESP 来加密时,它就无法更新这个校验和。由于地址或端口已经被 NAT 更改,目的地的校验和检验就会失败。虽然 UDP 校验和是可选的,但是 TCP 校验和却是必需的。ESP隧道模式将整个原始的IP包整个进行了加密,且在ESP的头部外面新加了一层IP头部,所以NAT如果只改变最前面的IP地址对后面受到保护的部分是不会有影响的。因此,IPsec只有采用ESP的隧道模式来封装数据时才能与NAT共存。 2.1 IPsec 和NAT之间的存在的矛盾 (1)从IPsec的角度上说,IPsec要保证数据的安全,因此它会加密和校验数据。 IPSec提供了端到端的IP通信的安全性,但在NAT环境下对IPSec的支持有限,AH协议是肯定不能进行NAT的了,这和AH设计的理念是相违背的;ESP协议在NAT环境下最多只能有一个VPN主机能建立VPN通道,无法实现多台机器同时在NAT环境下进行ESP通信。 (2)从NAT的观点来看,为了完成地址转换,势必会修改IP地址。 当 NAT 改变了某个包的 IP 地址和(或)端口号时,它通常要更新 TCP 或 UDP 校验和。当 TCP 或 UDP 校验和使用了 ESP 来加密时,它就无法更新这个校验和。由于地址或端口已经被 NAT 更改,目的地的校验和检验就会失败。虽然 UDP 校验和是可选的,但是 TCP 校验和却是必需的。

H3C IPSec基本原理及配置指导

IPSec基本原理及配置指导 一、IPSec描述: 1、IPSec在RFC2401中描述了IP得安全体系结构IPSec,以便保证在IP网络数据传输的安全性。 2、IPSec在IP层对IP报文提供安全服务。 3、IPSec并非单一协议,而是由一系列的安全开放标准构成。 4、IPSec实现于OSI参考模型的网络层,因此,上层的协议都可以得到IPSec 的保护。 5、IPSec是一个可扩展的体系,不受任何一种算法的局限,可以引入多种开放的验证算法。 6、IPSec的缺点是难部署,协议体系复杂,不支持组播,只能对点对点的数据进行保护,不利于语音视频实时性高的应用。 二、IPSec体系结构 1、IPSec使用两种安全协议来提供通信安全服务: i.AH(验证头):AH提供完整性保护和数据源验证以及可选的抗重播 服务,但是不能提供机密性保护。 ii.ESP(封装安全载荷):ESP可以提供AH的所有功能,而且还可以提供加密功能。 2、AH和ESP可以单独使用,也可以一起使用,从而提供额外的安全性。 3、安全协议AH和ESP都具有两种工作模式: i.传输模式:用于保护端到端的安全性。 ii.隧道模式:用于保护点到点的安全性。

4、IPSec通过两种途径获得密钥: i.手工配置:管理员预先手工配置,这种方法不便于随时更改,安全 性较低,不易维护。 ii.通过IKE协商,通信双方可以通过IKE动态生成并交换密钥,获得更高的安全性。 5、IPSec SA(安全联盟) i.SA提供IPSec数据流安全服务的基础概念。 ii.SA是通信双方就如何保证通信安全达成的一个协定。具体确定了对IP报文进行处理。 iii.SA是单向的,入站数据流和出站数据流分别由入站SA和出站SA 处理。 iv.一个SA由(SPI,IP目的地址,安全参数索引)构成。 v.SA可以手工配置,也可以通过IKE自动协商生成。 vi.SA的生存时间有“以时间进行限制”和“以流量进行限制”。 vii.IPSec把类似“对哪些数据提供哪些服务”这样的信息储存在SPD (安全策略数据库)中,而SPD中的项指向SAD(安全联盟数据库), 如果,一个需要加密的出站数据包,系统会将他与SPD进行比较, 如果匹配一项,系统会使用该项对应的SA以及算法进行对数据包的 加密。否则,需要新建一个SA。 6、IKE i.无论是AH还是ESP,在对一个IP包进行操作之前,首先必须要建 立一个IPSec SA,IPSec SA可以手工建立,也可以通过IKE协商建

SIP协议的NAT穿越技术

SIP协议的NAT穿越技术 NAT 指的是网络地址转换(Netword Address Translation)。这一技术使得大部分人可以在家里用多于一台的计算机上网但只用一个IP地址。多半时间里,一台有NAT功能的路由器支持从内部网络(带有内部IP地址)中取得数据,并将其发送到Internet,同时将每一个包的内部IP地址替换为外部地址。如下图所示: SIP协议的NAT穿越技术 什么是RTP? RTP 指的是实时传输协议(Real-Time Transport Protocol),这个协议的目的是在主叫和被叫之间传输语音数据。问题是,当你试图用RTP协议呼叫一个人的时候,你要事先知道他的IP地址和端口号(PORT),这使得RTP协议单独使用起来有相当的困难,因为呼叫的双方没有办法事先知道彼此的IP和端口。这就是为什么人们还需要SIP。 什么是SIP? SIP 也就是会话初始协议(Session Initiation Protocol),语法上很象HTTP协议,是可读的文本。它的目的是让主叫方可以找到被叫方的IP和端口,同时它也帮助双方协商媒体的类型和格式。比如,你想通过家里的一台PC机上运行的Free World Diadup(它使用SIP协议)来呼叫你远在罗马尼亚的朋友,如下图: SIP协议的NAT穿越技术 SIP发送一个INVITE包到FWD SERVER,其中包含有主叫方的RTP的IP地址和端口,FWD将这个包转到对应的被叫方,被叫方接受了呼叫并将它自己的RTP的IP地址和端口返回来。SIP+NAT,一个不能解决的问题? SIP的NAT的问题,其实不是SIP的问题,而是RTP的问题。SIP来声明RTP的地址和端口,但是如果客户端在NAT之后的话,它声明的端口就会与NAT在外部分配的不同。如下图:SIP协议的NAT穿越技术 即使很多SIP的实现都基于NAT总是分配一个与内网端口相同的一个外部端口这样一个假设,但这个假设是错误的。在产品环境下,你不能告诉奶奶说她不能与孙子说话是因为有些路由器分配了一个不同的端口号。 SIP协议的NAT穿越技术 如果你是一个carrier,解决办法要简单一点,因为你要代理所有的数据,就是用SIP会话边界控制器(SIP Session Border Controller),简称SIP SBC。SIP SBC通常位于carrier 的内部SIP网络的前面,它来解决NAT穿越问题,同时也保护SIP网络。 SIP协议的NAT穿越技术 这种情况下解决NAT穿越问题需要一些小技巧。 第一个小技巧是让NAT上从客户端到服务器的洞保持打开状态,这通常是让SIP客户端至少每隔30发送一个两个字节的包到服务器。一些路由器会将30秒内没用的映射显式的删除掉,GNU/Linux通常是3分钟后才删除。 第二个小技巧是在我们在yate项目中用到的,就是从到达服务器本地的RTP IP和端口的第一个包中计算客户端的RTP IP和端口,而不是用在SDP中声明的那个IP和端口。这个技巧可以解决NAT的穿越问题,不论客户端在多少层NAT之后。这个方法的主要缺点是,在一些情况下,客户端不能收到起初的媒体流(since at that point, it sends out no voice packets)并将听不到振铃音。 如果你不是一个carrier,你想实现一个Peer to Peer的呼叫,并且呼叫的双方都在NAT之后,你必须用一个外部的SIP代理或网关来在两点之间传递SIP,希望NAT们一个接一个的为RTP接连打开合适的端口。然而,对于这种情况,没有最终的解决方案。两个建议的解决

几种方式解决SIP穿越NAT总结

SIP 穿越NAT 的几种方式 多媒体会话信令协议是在准备建立媒体流传输的代理之间交换信息的协议,媒体流与信令流截然不同,它们所采用的网络通道也不一致。由于协议自身设计上的原因,使得媒体流无法直接穿透网络地址转换/ 防火墙(NAT/Firewall) 。因为它们生存期的目标只是为了建立一个在信息中携带IP 地址的分组流,这在遇到NAT/Firewall 时会带来许多问题。而且这些协议的目标是通过建立 P2P(Peer to Peer) 媒体流以减小时延,而协议本身很多方面却与NAT 存在兼容性问题,这也是穿透NAT/Firewall 的困难所在。而NAT 仍是解决当前公用IP 地址紧缺和网络安全问题的最有力手段,所以解决NAT 穿越成为首要问题。 以SIP 通信为例,呼叫建立和媒体通信的建立是依赖SIP 消息首部和SDP 消息所描述的地址和端口信息进行的,呼叫双方分别在内网和外网上,内网是通过NAT 设备连接到外网,由于NAT 设备工作在IP 和TCP/UDP 层,所以它不对SDP 等应用层数据进行NAT 变换,因此会造成寻址失败,从而导致呼叫无法正常建立。另外,VOIP 设备的主要通信协议(如SIP 和H.323 )要求终端之间使用IP 地址和端口号来建立端到端的数据侦听外来的呼叫,而防火墙却通常被配置阻止任何不请自到的数据分组通过。需要网络管理者打开防火墙上的一个端口来接收呼叫建立数据分组,例如5060 端口( SIP 的通信端口),但IP 语音和视频通信协议还要求打开许多别的端口接收呼叫控制信息来建立语音和视频通信,这些端口号事先并不知道,是动态分配的,也就是说网络管理者为了允许语音和视频通信将不得不打开防火墙上所有的端口,防火墙就失去了存在的意

相关主题