几种方式解决SIP穿越NAT总结讲解
STUN解决关于SIP的NAT穿透

STUN解决关于SIP的NAT穿透 STUN(Simple Traversal of UDP over NATs,NAT的UDP简单穿越)是⼀种⽹络协议,它允许位于NAT(或多重NAT)后的客户端找出⾃⼰的公⽹地址,查出⾃⼰位于哪种类型的NAT之后以及NAT为某⼀个本地端⼝所绑定的 Internet端端⼝。
这些信息被⽤来在两个同时处于NAT 路由器之后的主机之间建⽴UDP通信。
该协议由Rfc3489定义。
⼀旦客户端得知了Internet端的UDP端⼝,通信就可以开始了。
如果NAT是完全圆锥型的,那么双⽅中的任何⼀⽅都可以发起通信。
如果NAT是受限圆锥型或端⼝受限圆锥型,双⽅必须⼀起开始传输。
需要注意的是,要使⽤STUN RFC中描述的技术并不⼀定需要使⽤STUN协议——还可以另外设计⼀个协议并把相同的功能集成到运⾏该协议的服务器上。
SIP之类的协议是使⽤UDP分组在Internet上传输⾳频和/或视频数据的。
不幸的是,由于通信的两个末端往往位于NAT之后,因此⽤传统的⽅法是⽆法建⽴连接的。
这也就是STUN发挥作⽤的地⽅。
STUN是⼀个客户机-服务器协议。
⼀个VoIP电话或软件包可能会包括⼀个STUN客户端。
这个客户端会向STUN服务器发送请求,之后,服务器就会向STUN客户端报告NAT路由器的公⽹IP地址以及NAT为允许传⼊流量传回内⽹⽽开通的端⼝。
以上的响应同时还使得STUN客户端能够确定正在使⽤的NAT类型——因为不同的NAT类型处理传⼊的UDP分组的⽅式是不同的。
四种主要类型中有三种是可以使⽤的:完全圆锥型NAT、受限圆锥型NAT和端⼝受限圆锥型NAT——但⼤型公司⽹络中经常采⽤的对称型NAT(⼜称为双向NAT)则不能使⽤。
图解 SIP 穿透NAT的问题

图解 SIP 穿透NAT的问题NAT是指网络地址转换。
它是这样一种技术,在Internet公网的IP 不够的情况下,让公司或者家庭的多台电脑,共用一个公网的IP地址上网。
常见的宽带路由器,就有这样的功能。
如下面的示意图。
RTP 协议RTP 即实时传输协议(Real-Time Transport Protocol)。
RTP是传输语音、视频图像等实时数据的协议。
使用RTP传输时,需要知道对方的IP地址和端口。
SIP协议SIP协议,就是帮助呼叫双方,找到对方的IP地址和端口,及协商多媒体的类型和格式等信息。
如图。
你与朋友打电话,你的 IP是1.2.3.4 , RTP端口是 8000。
朋友的IP是193.226.0.1 ,用的RTP 端口是9000。
这样,知道了双方的IP地址与端口,双方就能够通信。
SIP+RTP 穿透问题SIP穿透NAT时,遇到的问题,实际上不是SIP穿不过NAT,本质上是RTP的问题,是RTP的数据穿不过NAT。
SIP设备要在SIP消息包中,声明它所使用的RTP端口。
当SIP设备在NAT后面时,它难以准确地预知 NAT分给它的公网的RTP端口;也就是说,SIP设备难以知道它使用RTP端口(NAT公网IP上分给RTP的端口)是多少。
对SIP服务的运营商来说,如果中转语音数据,则这个问题就比较好解决。
如使用SIP会话边界控制器SBC。
用SIP SBC 来中转语音、视频数据流,因为SBC总是在公网的IP地址上运行,则SIP设备把RTP数据发送到公网上的SBC上,是不会有问题的。
Skype 解决NAT穿透的方法Skype 解决NAT穿透的方法很聪明,它是利用在公网上运行的Skype软件,来中转在 NAT 后面的Skype软件语音数据流。
也就是说,如果你使用 Skype 软件且用的是公网IP地址,可能你的电脑在中转其它的 Skype 用户的语音数据,而你自己并不知道。
SIP协议穿越NAT的扩展研究算法

SIP协议穿越NAT的扩展研究算法摘要:由于VoIP的承载网络是IP网络,在V oIP部署的过程中会遇到由于IP资源短缺而带来的基于NAT的私有网络。
SIP协议如何成功穿越私网成为通信系统能否正常工作的一个关键问题。
本文通过对SIP协议栈进行扩展,提出了一项穿越NAT的关键技术:SIP ALG 技术。
它实现了私网内的VoIP电话终端可以在不增加任何附加设备的情况下穿越NA T,与其他VOIP终端通信。
关键词:SIP NAT ALG1引言随着近些年网络技术、处理器技术的飞速发展,网络通信的速度有了大大提高,所有业务共同承载在单一的数据网上,正在逐步成为可能。
在巨大的市场需求下,V oIP 技术应运而生并得到快速发展,展示了其在经济效益和服务发展上的巨大潜力。
VoIP 技术作为典型的基于IP 网络的多媒体应用,可以承载语音、数据和图像于一体的多媒体业务,提供了传统电信网络不能比拟的廉价的语音通信业务。
NAT是一个IETF标准,允许一个机构以一个地址出现在Internet上。
它也可以应用到防火墙技术里,把个别IP地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备。
同时,它还帮助网络可以超越地址的限制,合理地安排网络中的公有Internet地址和私有IP 地址的使用。
NAT技术不仅能帮助解决令人头痛的IP地址紧缺的问题,而且能使得内外网络隔离,提供一定的网络安全保障。
软交换作为下一代网络的核心技术,在现阶段网络部署过程中,会遇到NAT/Firewall 多媒体穿越问题。
防火墙仅控制第3层地址,而VoIP信令协议将IP地址放在第5层,RTP/RTCP工作在第3层,默认情况下,防火墙阻止外部对内部通信。
因此研究SIP协议,并对其进行扩展来实现NAT/Firewall多媒体穿越,对于下一代网络的部署有着重要意义。
2 SIP协议栈分析图1是一个Internet多媒体体系结构模型,表明了SIP在Internet协议栈中的位置[1]。
SIP软交换系统中的NAT穿越技术

关键词:会话初 始化协议;网络地址转换
Ah 嘣
:
S me 隹d哪 哪 o c
l eov o rs le NAT U yT il  ̄lm n S 1 a  ̄m be i o .wi h s se b sd i S P ae ito u e h sp p r m t y tm a e Ol I r nr d c d i ti a e. c n
了SP 用 研 究 领 域 的 一 个 重 要 课 题 。 I应
台 主机 的地 址和 某 一外 部地 址 的 映射 建立 之 后 ,任 何 外部 网络 的主 机 均 可 以通 过 该 外 部 地 址 将 数 据 包 发 送 给该 主 机 。举 例 来说 ,一 台 内部地 址 为1 ...的 主机在 其 13 端 0001 24 口 收 发 数 据 包 ,NA 为 其 映 射 的 外 部 地 址 和 端 口 为 T 2 2121 .7 :3 5 那 么 在 F l C n 方 式 下 , 所 有 0 .1 .41 32 4 , ul o e
Co e n ,R sr tdCo e P rR s itdC n  ̄ y et ce n , ot et ce o e D mmer 四 i r S ti c
于 ,NA  ̄ 建 的映 射 项 目中 包含 了 内部 主机 发 送 的数 据包 T I J 的 目的地 址 ,因此 只有 该地 址 的 主机 能 够通 过NA 与 内部 T
1既哪 1
叼
toe 晒 ∞1 hs 0
a a al ed v i be ojc ad l ln r w n i t h i dv lp n v i be f l l i .aal l bet n i a o ̄ e idc e te e eome t a mi a r
sip协议的nat穿越

SIP协议的NAT穿越技术翻译:Karl Ma原文:/articles/view/2079/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的NAT的问题,其实不是SIP的问题,而是RTP的问题。
SIP来声明RTP的地址和端口,但是如果客户端在NAT之后的话,它声明的端口就会与NAT在外部分配的不同。
如下图:即使很多SIP的实现都基于NAT总是分配一个与内网端口相同的一个外部端口这样一个假设,但这个假设是错误的。
几种方式解决SIP穿越NAT总结

几种方式解决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呼叫不成功示意图分析:1 d:211.83.100.100:23766 s:192.168.1.166:10102 d:211.83.100.100:23766 s:211.83.100.166:99933.d:211.83.100.166:9993 s:211.83.100.100:237664.d:192.168.1.166:1010 s:211.83.100.100:237665.d:211.83.100.110:23788 s:211.83.100.100:20206.d:211.83.100.100:3399 s:211.83.100.110:237887.d:211.83.100.166:9993 s:211.83.100.100:237668.d:192.168.1.166:1010 s:211.83.100.100:237669.d:211.83.100.100:3399 s:211.83.100.110:2378810.d:211.83.100.166:9993 s:211.83.100.100:2376611.d:192.168.1.166:1010 s:211.83.100.100:2376612.d:211.83.100.110:23788 s:192.168.1.166:1010d:211.83.100.110:23788 s:211.83.100.166:999313.d:192.168.1.166 s:211.83.100.110:23788 A对B invite 时在SDP中带上了RTP协商的端口和私网IP,B回复200OK时告知RTP时的端口和私网地址,B 收到A的RTP包后回复,因为RTP包记录是私网地址,所以RTP包被丢弃。
sip nat

下面对SIP协议产生NAT穿透问题,作一些解释;及提出解决的办法。
1、大致有4种类型的NAT。
a) Full Cone 完全圆锥体b) restricted cone 受限制的圆锥体c) port restricted 端口受限制的圆锥体d) symmetric 对称的其中a,b,c 也称作非对称的NAT。
2、SIP终端在NAT后面,其工作有可能出现问题。
原因是SIP信令走的路径,和媒体流走的路径不一样。
3、Full Cone 完全圆锥体NAT因特网上的任何PC,可以发送数据包到IP:port对;而NAT将这个IP:port对(公网上的)映射到内网的IP:port对(私有网络的)。
4、restricted cone 受限制的圆锥体NATNAT外面的PC,只有那些内网中已有PC与之联系过的PC,才能通过这个映射进来。
例如,我通过内网的一台机器,IP 地址是10.1.1.1:123,与PC(a)联系,则PC(a)也可以通过这个NAT的映射,联系到我。
而PC(b)则不行。
10.1.1.1:123 ---NAT ---> 202.70.65.78:10000 ------pc(a)如果pc(b)也发送数据到202.70.65.78:10000,则不会有数据送到10.1.1.1:123。
补充说明:如果我也联系过pc(b),则pc(b)也可以进来了。
10.1.1.1:123 ---NAT ---> 202.70.65.78:10000 ------pc(b)如果pc(b)也发送数据到202.70.65.78:10000,则数据送到10.1.1.1:123。
5、port restricted 端口受限制的圆锥体NAT除了4的条件外,即不但要检测pc(a)的源IP地址,还要检测其端口是否与前面也一样。
10.1.1.1:123 --->NAT---->202.70.65.78:10000 ----->pc(a)[213.123.324.34:8000]这个NAT只会接收从IP地址 213.123.324.34 且端口为 8000来的数据,让进入到10.1.1.1:123。
SIP ALG穿透NAT的实现

SIP ALG穿透NAT的实现摘要:为解决SIP应用穿透NAT的问题,剖析了NAT的工作原理,并针对SIP协议信令信令过程的特点,提出了采用ALG设备解决NAT的穿透问题,具体设计了ALG的结构和相关实现算法,并给出了详细的实现方案。
关键词:会话发起协议(SIP) 网络地址转换(NAT) 会话描述协议(SDP) 信令会话发起协议SIP[1](Session Initiation Protocol)是由IETF组织于1999年提出的在Internet网络环境中实现实时通信应用的一种信令协议。
SIP引发了现代通信体系结构的变革,然而它却在视频能力、会议控制方面没有一个完善的标准;同时,由于大量企业和驻地网都采用了私有编址[2],并通过网络地址转换NAT(Network Address Translation)来控制与公共网络的通信,而SIP数据包需通过信令消息中的IP地址和端口号端口号来实现目的地寻址,且它的媒体流媒体流端口是动态分配的,这就为在NAT上配置固定的包过滤策略带来了困难。
因此,SIP穿透NAT是绝大多数VoIP运营商亟待解决的问题。
当前,几种主要的NAT穿透技术有SIP ALG、Full Proxy、MidCom、VPN、隧道穿透、STUN等。
其中,SIP ALG 方式是在传统的NAT上进行扩展,使之具备感知SIP呼叫控制协议的能力,从而对基于SIP 呼叫的地址实现穿透。
它是一种比较简单的方案,最突出的特点是ALG和具体的SIP系统无关,对于一个SIP系统不需要做任何修改,只要在响应的NAT上加载SIP ALG,就能完成私网到公网甚至私网中的两个用户之间的SIP连接。
1 SIP应用穿透NAT面临的问题1.1 NAT 的工作原理NAT[3]被置于两网间的边界。
NAT技术使得一个私有网络可以通过Internet 注册IP连接到外部世界。
位于内网内网和外网中的NAT路由器在发送数据包之前,负责把内部IP翻译成外部合法地址。
对SIP NAT问题解决方案的介绍与分析

网 络 地 址 转 换 协 议 N T ( ew r A des A N tok d rs Ta s t n 的 广 泛 应 用 有 效 地 解 决 了 Iv rnl i ) ao P 4公 网 (ne t地址 缺乏 与 网络用 户剧 增之 间 的矛盾 。它 It me)
能将 一 个 I P公 网 地 址 映 射 到 若 干 个 私 网 ( r ae P vt i
Pot1 , r : 二 4)
图 2 Ad rs titd Con d e s Rer e c e NAT
端 口限 制 圆 锥 型 (otR t ce o e 的 映 射 P l er td C n ) " i
J n.0 7 u 2 o
对 S N T问题 解决方案的介绍与分析 I A P
王 翔 ,李 源
( 冈 山学 院 工 学 院 ,江 西 吉 安 3 30 ) 井 4 09 【 要】 I 为 下一 代 网络 中的会 话 信 令 控 制 协 议 被 广 泛 的得 到 应 用 ,但 是 SP在 I 址 匮乏 的 Iv 摘 SP作 I P地 P4网络 中 遇 到 的一 个实 际 问题 就 是 如 何穿 越 N T A 。本 文将 从 N T分 类 人 手 ,分 析 SP穿 越 N T的 问题 ,介 绍 目前 出 A I A 现 的 多种 基 于 SP的 N T穿越 解 决 方 案 ,列举 出技 术 特点 与 适用 范 围 , 以及对 它 们进 行 分 析 比 较 。 I A
网络地址 转换 N T V N tok A desT a s A i ew r d rs rn. (
1i ) a o 被很 多服 务提 供 商 和私 人 网络用 来 解 决公 网 tn
地址不 足 的问题 。N T将 内网地址 通过 映射 的方 式 A 和外 ( ) 公 网地址 相 关联 , 户 在 内 网 中一 对 内部 的 用 地址: 口(Pp r) 端 I: t对应 一对 外 网的 I :o 。当外 网 o Pp t  ̄ 的 I:ot 到 数 据 包 时 就 将 重 新 路 由 到 内部 I : Ppr 接 P
sip协议的nat穿越研究

竭诚为您提供优质文档/双击可除sip协议的nat穿越研究篇一:第15周nat协议教学时间:第十六周第二次(2课时)教学方法:上机课、实验课章节名称:第7章第1~4节教学目标:1、掌握nat的基本概念。
2、掌握静态、动态nat的配置方法。
3、掌握动态napt的配置方法。
教学重点:1、静态、动态nat的配置方法。
2、动态napt的配置方法。
教学难点:1、静态、动态nat的配置方法。
2、动态napt的配置方法。
板书安排:下划线的内容为板书。
教学内容:一、静态nat的配置1.实验目的掌握静态nat的配置方法。
2.应用环境某企业需要搭建自己的服务器以供客户通过外网访问,同时企业员工也需要从内网访问服务器。
为了保证服务器的安全,需要在边界路由器上配置网络地址转换,使外网客户可以通过特定公有ip地址访问服务器,而内部员工可以通过私有ip地址从内网直接访问服务器。
3.实验设备安装有ciscopackettracer的计算机。
4.实验内容在路由器上配置静态nat,使得外网用户可以通过特定公有ip地址访问服务器。
5.实验过程(1)打开ciscopackettracer,添加1台2611路由器,1台pc,1台服务器,并将pc连接至2611的Fa0/0口上,服务器连接至2611的Fa0/1口;(2)用pc模拟外网计算机,配置ip地址59.76.80.2/16,网关59.76.80.1;为服务器配置ip地址192.168.1.2/24,网关192.168.1.1;(3)为2611的Fa0/0口配置ip地址59.76.80.1/16,并配置为外部接口(ipnatoutside),Fa0/1口配置ip地址192.168.1.1/24,并配置为内部接口(ipnatinside);(4)在2611上配置静态nat,将服务器的地址转换为外网可以访问的59.76.80.9,并在pc上利用ping命令测试和服务器之间的连通性。
二、动态nat的配置1.实验目的掌握动态nat的配置方法。
SIP之穿越NAT

私网
O,p
M,n A,b
Give my ip
公网
[O,p] S,t O,p M,n
X,y
TURN
NAT
分配一个IP和 端口:[O,p]
SIP穿越NAT –TURN SIP穿越 穿越NAT
IETF draft “draft-rosenberg-midcom-turn“draft-rosenberg-midcom-turn06” TURN Server控制分配地址和端口,能分配 Server控制分配地址和端口 控制分配地址和端口, RTP/RTCP地址对 RTP/RTCP地址对(RTCP端口号为RTP端口号加 地址对(RTCP端口号为 端口号为RTP端口号加 1)作为私网终端用户的接收地址,避免了STUN 1)作为私网终端用户的接收地址 避免了STUN 作为私网终端用户的接收地址, 方式中出口NAT对RTP/RTCP地址端口号的任意 方式中出口NAT对RTP/RTCP地址端口号的任意 分配,使得客户端无法收到对端发来的RTCP报 分配,使得客户端无法收到对端发来的RTCP报 对端发RTCP报文时 目的端口号缺省按RTP 报文时, 文(对端发RTCP报文时,目的端口号缺省按RTP 发送) 端口号加 1发送)。
NAT
A,b
P S
SIP穿越NAT – NAT分类 SIP穿越 穿越NAT NAT分类
Full Cone NAT(完全圆锥型 完全圆锥型NAT ) 完全圆锥型
私网 公网
M X,y A,b
Full Cone NAT
P S
•NAT会将客户机地址 会将客户机地址{X:y}转换成公网地址 转换成公网地址{A:b}并绑定 会将客户机地址 转换成公网地址 并绑定 •任何包都可以通过地址 任何包都可以通过地址{A:b}送到客户主机的 送到客户主机的{X:y}地址上 任何包都可以通过地址 送到客户主机的 地址上
基于SIP的NAT穿越解决方案

基于SIP的NAT穿越解决方案
李盈;朱光喜;周楠
【期刊名称】《计算机与数字工程》
【年(卷),期】2006(034)008
【摘要】NAT(Network Address Translation)是一种IP复用方案,解决了IPv4中IP地址不足的问题.但是传统的VOIP协议是基于实IP进行设计的,与NAT的不相容性阻碍了VOIP的进一步应用.语音如何穿越NAT成为了继续推广VOIP使用的焦点.对现有的NAT实现方案进行了详细的描述,引出了基于SIP协议的VOIP穿越NAT的问题,随后讨论了可能或者已有的解决方案,包括STUN,RTP转播服务器等.最后对NAT的遗留问题做出了总结,对将来NAT研究的重点做出了展望.
【总页数】3页(P106-108)
【作者】李盈;朱光喜;周楠
【作者单位】华中科技大学电子与信息工程系,武汉,430074;华中科技大学电子与信息工程系,武汉,430074;华中科技大学电子与信息工程系,武汉,430074
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于SIP的P2P NAT穿越解决方案 [J], 吴小叶;肖继民
2.基于SBC的SIP穿越NAT的解决方案 [J], 吴瀚文;
3.几种SIP穿越NAT解决方案的比较 [J], 韩存环;陈利学;宋吉慧
4.基于sip的穿越NAT设备的解决方案的研究 [J], 贺政;龙昭华;蒋贵全;李云燕
5.基于SBC的SIP穿越NAT的解决方案 [J], 吴瀚文
因版权原因,仅展示原文概要,查看原文内容请购买。
几种SIP穿越NAT解决方案的比较

址 和端
口
。
但 不 同的是 只有 收 到 内网 主机 数 据包 的
被 转发 到相
外 部 主 机 发 的数 据 包 才 允 许 通 过 N A
应 的 内网主 机
。
体 通 道 必 需 的端 载
口
、
IP 地 址
、
域 名 等信息
。
P SI
信令可
用 用 户 数 据 报 协 议 ( U D P ) 或 传 输 控 制 协 议 (T C P ) 承
个外
些 私 有 网用 户要 接入 软交换 网时
软交换业 务流必
T
.
部地 址 和 端
地址 和端 口
2
口
。
任何外部 主 机 发往N A
T
的该 外 部 地
将 途 经 网 络 中 的 网 络 地 址 转 换 (N A
的N A T 设 备 却 并 不
一
)设 备 而 现 有
,
址 和 端 口 的 数 据 包 将 通 过 N A T 转 发 到 相 应 的 内部
。
定 支 持 S IP 和 H 2 4 8 等 协 议 的 识
别和处理
网 ( In
。
NA T
协议 的广 泛 应 用 有 效 解 决 了IP v 4 公
。
) 限 制 方 式 (R
e s tr
ic te d C o
一
n e
)
口
te r n e t
)地 址 缺 乏 与 网 络 用 户 剧 增 之 间 的 矛 盾
一
个地址域的
在N A T 上 所 映射 的公 网 地 址 或 端
同
标 准 方 法 通 过N A T 可 以 将 私 有 网 络 中 的 主 机 透 明
FreeSWITCH关于穿越NAT的那点事儿

FreeSWITCH关于穿越NAT的那点事儿NAT的种类:Full Cone NAT(全锥型NAT)、Restricted Cone NAT(限制锥型NAT)、Port Restricted Cone NAT(端口限制锥型)、Symmetric NAT(对称型NAT)。
四种类型的区别请自行百度,网上讲的很详细,本地NAT的类别,可借助于工具或自行检测。
FreeSWITCH帮助终端穿越NAT的解决方案:1、SIP穿越FreeSWITCH默认使用ACL来判断对方是否处于NAT环境中,配置:<param name="apply-nat-acl" value="nat.auto"/>nat.auto是一个ACL,包含了RFC1918规定的私网地址,并去掉了本地网络的地址。
当SIP终端注册时,通过比较contact地址是否包含在此ACL中来判定该终端是否处于NAT背后,如果是那么它就把contact地址自动替换为SIP包的来源地址,后边的呼叫就可以正常抵达。
2、RTP穿越NAT环境的SIP终端SDP信息中的IP地址是私网地址,FreeSWITCH无法直接发送RTP包,而NAT设备基本都只允许内网主机曾经接触过的外网主机发送的UDP数据包进入。
FreeSWITCH使用了一个名为RTP自动调整的特性,在SIP 协商时给对方一个可用的公网RTP地址,然后等待客户端发送RTP包,一旦FreeSWITCH收到RTP包后,就可以根据对方发包的地址给它发RTP包了。
此类情况发生时,Log中可看到类似信息:[INFO] switch_rtp.c:4753 Auto Changeing port from192.168.1.100:50496 to 1.2.3.4:50496注意:此办法存在安全性问题,如某黑客向随机的RTP端口发数据包,FreeSWITCH收到后将远端地址调整到黑客的IP和端口,进而RTP数据全部跑歪了。
NAT穿透解决方案

NAT穿透解决方案NAT穿透是指在私有网络中的主机与公网中的主机之间建立直接通信的技术。
在局域网中,通常会使用网络地址转换(NAT)来实现多个内网设备共享一个公网IP地址。
但是,NAT会导致内网设备无法直接从公网访问,因此需要一种穿透NAT的解决方案。
一、端口映射端口映射是一种最常见的NAT穿透解决方案。
它通过将内网设备的端口映射到外网设备上,实现公网对内网的访问。
有以下两种常见的端口映射方式:1.静态端口映射:管理员手动配置内网设备的端口映射规则,将内网设备的指定端口映射到公网上,实现公网对内网的直接访问。
2.动态端口映射:在内网设备与公网设备建立通信时,内网设备向路由器发送请求,在路由器上动态分配一个公网端口,并将请求重定向到内网设备的对应端口上。
这种方式可以通过UPnP(Universal Plug and Play)或NAT-PMP(NAT Port Mapping Protocol)自动实现。
二、反向代理反向代理是一种通过在公网上搭建一个代理服务器,将内网设备的请求转发到代理服务器上,再由代理服务器向公网发出请求的方式。
这种方式可以绕过NAT限制,实现公网访问内网设备。
反向代理常用的实现方式有:1.端口映射型反向代理:在公网服务器上运行反向代理软件,在路由器上进行端口映射,将公网服务器接收到的请求重定向到内网设备上。
2.HTTP反向代理:将内网设备的HTTP请求发送给公网服务器上运行的反向代理软件,然后由反向代理软件将HTTP请求发送给目标服务器,并将响应返回给内网设备。
这种方式可以实现通过HTTP协议访问内网设备。
三、虚拟专用网(VPN)VPN是一种在公共网络上建立私密连接的技术,可以通过VPN建立的隧道来实现NAT穿透。
在VPN中,内网设备可以建立与公网VPN服务器的连接,公网VPN服务器将内网设备的请求转发给目标服务器,并将响应返回给内网设备。
VPN的常见类型包括:1.IPsec(Internet Protocol Security)VPN:基于IP协议的加密隧道,可以通过Internet连接远程网络。
sip穿越NAT的解决方法

T 128.96.41.1:5678(下一跳的地址)
SDP Body IP Address for RTP:
128.97.44.5:3002
7.此时,RTP Proxy为这个Session保持着这么个连接绑定
{128.97.44.5:3000|128.97.44.5:3002}
ALG(Application Layer Gateway)适应所有NAT方式,并不需要SIP Client做任何额外的支持。它对Application层的SIP信令进行处理和修改,从而做到透明转换地址。
下面针对一个案例详细描述ALG的解决方案。
SIP ALG解决方案
ALG修改SIP消息里面的SIP地址和端口和SDP消息里面的RTP地址和端口,其中RTP地址和端口要向RTP Proxy请求获得,RTP Proxy分配自己的一个空闲的地址和端口,并和这个Call保持映射关系。并为分配给呼叫双方的地址和端口进行绑定,这样,呼叫双方的RTP连接地址都是RTP Proxy,由RTP Proxy经过中转,发至真正的目的地。
From: 128.96.41.1:5678
T 128.96.63.25:5566(下一跳的地址)
SDP Body IP Address for RTP:
128.97.44.5:3000
4.因为Bob不断的向SIP ALG发送注册包,所以,它的NAT Server始终为它保留着这么个绑定,{10.0.0.12:5060}|{128.96.63.25:5566}<-> {128.97.41.56:5060}。所以,由SIP ALG发出的INVITE,Bob能收到。
一种实现SIP穿越NAT的新方案

一种实现SIP穿越NAT的新方案
张波;胡瑞敏;边学工
【期刊名称】《计算机工程》
【年(卷),期】2005(31)2
【摘要】提出了一种使用STUN协议,只在应用层实现,无须改动现有NAT及SIP 终端,无须扩展协议就可以让用UDP方式传输的SIP信令和媒体流顺利穿越大多数类型NAT设备的解决方案,并通过一个实例详细说明了这一方案的实现.
【总页数】3页(P119-121)
【作者】张波;胡瑞敏;边学工
【作者单位】武汉大学计算机学院,武汉,430079;武汉大学多媒体网络通信工程湖北省重点实验室,武汉,430079;武汉大学多媒体网络通信工程湖北省重点实验室,武汉,430079
【正文语种】中文
【中图分类】TP393
【相关文献】
1.一种实现SIP穿越NAT的改进方案 [J], 徐德涛;郑继禹
2.一种基于SBC的SIP穿越NAT技术的研究 [J], 于中华;李含辉
3.一种UDP穿越NAT的新方案 [J], 张国印;叶在伟;曲丽君
4.一种SIP穿越NAT方案的设计与实现 [J], 熊建强;黄佳庆;熊志强;程赓
5.一种基于P2P-SIP系统的NAT和防火墙穿越方案 [J], 严刚;林涛;唐晖
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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呼叫不成功示意图分析:1 d:211.83.100.100:23766 s:192.168.1.166:10102 d:211.83.100.100:23766 s:211.83.100.166:99933.d:211.83.100.166:9993 s:211.83.100.100:237664.d:192.168.1.166:1010 s:211.83.100.100:237665.d:211.83.100.110:23788 s:211.83.100.100:20206.d:211.83.100.100:3399 s:211.83.100.110:237887.d:211.83.100.166:9993 s:211.83.100.100:237668.d:192.168.1.166:1010 s:211.83.100.100:237669.d:211.83.100.100:3399 s:211.83.100.110:2378810.d:211.83.100.166:9993 s:211.83.100.100:2376611.d:192.168.1.166:1010 s:211.83.100.100:2376612.d:211.83.100.110:23788 s:192.168.1.166:1010d:211.83.100.110:23788 s:211.83.100.166:999313.d:192.168.1.166 s:211.83.100.110:23788 A对B invite 时在SDP中带上了RTP协商的端口和私网IP,B回复200OK时告知RTP时的端口和私网地址,B 收到A的RTP包后回复,因为RTP包记录是私网地址,所以RTP包被丢弃。
目前主流的几种解决方式有ALG、STUN、TURN、ICE,我们分别来介绍它们的工作原理及工作流程。
1.ALG1.1工作原理ALG是指能识别特定应用层协议(如SIP、H.323或MGCP协议)的防火墙。
它不是简单地查看分组首部信息来解决数据分组是否可以通过,而是更深层地分析负载内容的数据,也就是应用层的数据。
SIP和H.323协议都在负载中放了重要的控制信息。
通过分析哪一个端口需要打开。
防火墙动态的打开那些被应用的端口,而所有别的端口依然安全地保持关闭状态。
ALG是支持VOIP应用最简单的一种方式,但该方案的缺点非常明显:每增加一种新的应用都将需要对NAT/Firewall进行升级。
在安全要求上还需要作一些折衷,因为ALG 不能识别加密后的报文内容,所以必须保证报文采用明文传送,这使得报文在公网中传送时有很大的安全隐患。
SIP响应消息用于对请求消息进行响应,指示呼叫或注册的成功或失败状态。
在请求与响应报文中需要进行ALG处理的地址字段类型主要有:Via、Record_Route、Contact、SDP。
ALG处理流程为如下三个步骤:首先,ALG根据会话标识的协议类型对报文进行解码,若解码发现报文为不需要做ALG或解码发现为错误字段时退出,解码发现需进行字段转换时进一步处理;其次,ALG查找接口上的NAT配置,根据NAT配置转换报文中的IP地址、端口、call-id等信息并建立关联表,关联表记录了载荷地址的转换关系;最后,ALG调整报文载荷中的长度字段,如sip message header的content-length字段标识message body的长度,ALG对message body中的地址转换后,message body 长度可能变化,content-length字段值需要置为变化后的值。
1.2工作流程示意图分析:1 d:211.83.100.100:23766 s:192.168.1.166:10102 d:211.83.100.100:23766 s:211.83.100.166:99939.d:211.83.100.166:9993 s:211.83.100.100:2376610.d:192.168.1.166:1010 s:211.83.100.100:2376611.d:211.83.100.110:23788 s:211.83.100.100:202012.d:211.83.100.100:3399 s:211.83.100.110:2378813.d:211.83.100.166:9993 s:211.83.100.100:2376614.d:192.168.1.166:1010 s:211.83.100.100:237669.d:211.83.100.100:3399 s:211.83.100.110:2378810.d:211.83.100.166:9993 s:211.83.100.100:2376611.d:192.168.1.166:1010 s:211.83.100.100:2376612.d:211.83.100.110:23788 s:192.168.1.166:1010d:211.83.100.110:23788 s:211.83.100.166:9993ALG NAT对A发给B的RTP包中的内容进行解码,发现私网地址就转换为公网IP,并做映射建立关联表,最后调整报文载荷中的长度字段。
13.d:211.83.100.166:9993 s:211.83.100.110:23788A对B invite 时在SDP中带上了RTP协商的端口和私网IP,B回复200OK时告知RTP时的端口和私网地址,B收到A的RTP包是经过ALG NAT修改后的数据包,就知道目的地址发给211.83.100.166:999314.d:192.168.1.166:1010 s:211.83.100.166:99932.STUN2.1工作原理STUN的全称是Simple Traversal of UDP Through NAT,即UDP对NAT的简单穿越方式。
是一种网络协议它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。
这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。
该协议由RFC 3489定义。
1)应用程序(即STUN CLIENT)向NAT外的STUN SERVER通过UDP发送请求STUN 消息询问自身的转换后地址,2)STUN SERVER收到请求消息,产生响应消息,响应消息中携带请求消息的源端口,即STUN CLIENT在NAT上对应的外部端口。
响应消息通过NAT发送给STUN CLIENT,3)STUN CLIENT通过响应消息体中的内容得知其在NAT上对应的外部地址,并且将其填入以后呼叫协议的UDP负载中,告知对端,同时还可以在终端注册时直接注册这个转换后的公有IP地址,这样就解决SIP穿越NAT的通信建立问题以及作为被叫时的问题。
4)本端的接收地址和端口号为NAT外的地址和端口号。
由于通过STUN协议已在NAT上预先建立媒体流的NAT映射表项,故媒体流可顺利穿越NAT。
2.2网络结构图2.3工作流程示意图A:192.168.0.10 A NA T:192.168.1.1 211.83.100.100STUN SERVER:211.83.100.110B:192.168.11.11 B NA T:192.168.11.1 211.83.100.120分析:1 d:211.83.100.110:1111 s:192.168.0.10:10102 d:211.83.100.110:1111 s:211.83.100.100:20203 d:211.83.100.100:2020 s:211.83.100.100:20204 d:192.168.0.10:1010 s:211.83.100.100:20205 d:211.83.100.120:2222 s:192.168.11.11:30306 d:211.83.100.120:2222 s:211.83.100.120:40407 d:211.83.100.120:4040 s:211.83.100.120:22228 d:192.168.11.11:3030 s:211.83.100.120:2222A与B接收到STUN的响应消息就得到信令和媒体流在NAT上的映射地址,并将这些地址写到SIP消息中的Via,Contact字段以及SDP中的媒体流传送地址,代替原有的私网地址。
如A的SDP带的端口为10000,B的SDP带的端口为20000,A、B相互告知对端它的端口,最后终端注册时直接用这个转换后的公有IP地址注册。
所以端口10000 B NAT是打开的,端口20000 A NAT是打开的,所以RTP 包可路由。
9 d:211.83.100.120:4040 s:211.83.100.100:888810 d:211.83.100.100:8888 s:211.83.100.120:40402.4需要注意1)NAT/PAT对于地址转换关系是有一定生命期的,某个地址转换后在一段时间内没有被使用将会被清除,当这个业务流再次出现时,将会建立一个新的地址转换关系,这就意味着STUN的询问过程以及终端的注册过程都需要再执行一遍才能保证通信的正确。