27
SIP SIP 之之 之之 NAT NAT

SIP 之 穿越 NAT

  • Upload
    chaim

  • View
    173

  • Download
    0

Embed Size (px)

DESCRIPTION

SIP 之 穿越 NAT. Agenda. SIP 穿越 NAT NAT 分类 问题之所在 各种解决方案. SIP 穿越 NAT – NAT 分类. Full Cone NAT ( 完全圆锥型 ) Address Restricted Cone NAT ( 地址限制圆锥型 ) Port Restricted Cone NAT ( 端口限制圆锥型 ) Symmetric NAT ( 对称型 ). 公网. 私网. M. A,b. P. X,y. NAT. S. SIP 穿越 NAT – NAT 分类. - PowerPoint PPT Presentation

Citation preview

Page 1: SIP 之 穿越 NAT

SIPSIP 之之穿越穿越 NATNAT

Page 2: SIP 之 穿越 NAT

AgendaAgenda

SIPSIP 穿越穿越 NATNAT NATNAT 分类分类 问题之所在 问题之所在 各种解决方案各种解决方案

Page 3: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NATNAT – NAT 分类分类•Full Cone NAT( 完全圆锥型 )•Address Restricted Cone NAT( 地址限制圆锥型 )•Port Restricted Cone NAT( 端口限制圆锥型 ) •Symmetric NAT( 对称型 )

私网 公网

X,yA,b

M

NAT

P

S

Page 4: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NATNAT – NAT 分类分类Full Cone NAT( 完全圆锥型 NAT )

私网 公网

X,yA,b

M

Full ConeNAT

P

S

•NAT 会将客户机地址 {X:y} 转换成公网地址 {A:b} 并绑定•任何包都可以通过地址 {A:b} 送到客户主机的 {X:y} 地址上

Page 5: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NATNAT – NAT 分类分类Address Restricted Cone NAT( 地址限制圆锥型 )

私网 公网

X,yA,b

M

Restricted ConeNAT

S

•NAT 会将客户机地址 {X:y} 转换成公网地址 {A:b} 并绑定•只有来自主机 {P} 的包才能和主机 {X:y} 通信

P,q

P,r

X

X

Page 6: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NATNAT – NAT 分类分类Port Restricted Cone NAT( 端口限制圆锥型 )

私网 公网

X,yA,b

M,n

Port Restricted ConeNAT

S

•NAT 会将客户机地址 {X:y} 转换成公网地址 {A:b} 并绑定•只有来自主机 {P,q} 的包才能和主机 {X:y} 通信

P,q

P,rXX

Page 7: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NATNAT – NAT 分类分类Symmetric NAT( 对称型 )

私网 公网

X,yA,b

M,n

Port Restricted ConeNAT

S

•NAT 会将客户机地址 {X:y} 转换成公网地址 {A:b} 并绑定为 {X:y}|{A:b}<->{P:q} •NAT 只接受来自 {P:q} 的 incoming packet ,将它转给 {X:y} •每次客户机请求一个不同的公网地址和端口, NAT 会新分配一个端口号 {C,d}

P,q

P,rXX

C,d

Page 8: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NAT – 问题之所在问题之所在•SIP Proxy 无法穿过 NAT 回送 SIP 信令

私网 公网 私网SIPProxy

SIP 信令

Firewall/NATFirewall

/NAT

X X

因为 SIP 信令中的 From 和 Contact 头域记录的是私网地址和端口 ,NAT 无法识别和转换。

Page 9: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NAT – 问题之所在问题之所在•如果是 UDP Hole Punching 呢? 什么是 UDP Hole?

私网 公网

UDP 包

Firewall/NAT

这个内网的 NAT 上打了一个方向为 211.136.91.58 的“洞”,(这就是称为 UDP Hole Punching 的技术)以后 211.136.91.58 就可以通过这个洞与内网的 192.168.1.223 联系了,但是其他的 IP 不能利用这个洞。

内部主机IP:192.168.1.223

公网主机IP:211.136.91.58

Page 10: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NAT – 问题之所在问题之所在•如果是 UDP Hole Punching 呢? 在没有活动的时候,这个 Hole 会过期: NAT 对于地址转换关系是有一定生命期的,某个地址转换后在一段时间内没有被使用将会被清除,当这个业务流再次出现时,将会建立一个新的地址转换关系。

Page 11: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – NAT – 解决问题解决问题•几种解决方案

•ALG•MidCom•STUN•TURN•SBC

Page 12: SIP 之 穿越 NAT

AApplication pplication LLevel evel GGateway Solutionateway Solution

ALGALG 可以识别可以识别 SIPSIP 信令,能够适当地修改数据包信令,能够适当地修改数据包 ALGALG 可以是单独的连接于外网和内网之间的设备,可以是单独的连接于外网和内网之间的设备,

也可以是内置于防火墙内的插件也可以是内置于防火墙内的插件 当当 FW/NATFW/NAT 发现外网呼叫信令为发现外网呼叫信令为 SIPSIP 时,将其转时,将其转

发到发到 ALG(ALG( 应用层网关应用层网关 )) ,通过,通过 ALGALG 建立起内网建立起内网伪地址终端与外网终端的通信连接伪地址终端与外网终端的通信连接

需要对现有设备升级改造需要对现有设备升级改造

SIPSIP 穿越穿越 NAT – ALGNAT – ALG

Page 13: SIP 之 穿越 NAT

IETF MIDCOM(IETF MIDCOM(MidMiddlebox dlebox ComCommunications) Solutionmunications) Solution

允许第三方允许第三方 ((MIDCOM AgentMIDCOM Agent )) 成为受成为受 FW/NATFW/NAT 信任的实体,然后代表信任的实体,然后代表FW/NATFW/NAT 做出决定,强迫其开放端口传送媒体做出决定,强迫其开放端口传送媒体流或数据流。这些受信任的实体通流或数据流。这些受信任的实体通过“过“ MidCom”MidCom” 定义的新协议与定义的新协议与 FW/NATFW/NAT 进行进行通信。通信。

协议的识别不由协议的识别不由 MiddleboxMiddlebox 完成,而是由外部完成,而是由外部的的 MIDCOM AgentMIDCOM Agent 完成完成

需要对现有设备升级改造需要对现有设备升级改造

SIPSIP 穿越穿越 NAT – MidComNAT – MidCom

Page 14: SIP 之 穿越 NAT

STUNSTUN((SSimple imple TTraversalof raversalof UUDP Through DP Through NNetworketwork)) Solution Solution

STUN 服务器

私网 公网

X,yA,b S,t

NAT

[A,b]

SIPSIP 穿越穿越 NAT – STUNNAT – STUN

STUN Client

希望在 5060端口接收数据

从 5060 端口发送请求 STUN服务器

NAT映射端口为12345

STUN回包告诉客户端公网 IP和 12345 端口

What’s my ip?

Page 15: SIP 之 穿越 NAT

IETF RFC 3489IETF RFC 3489 定义了如何确定由定义了如何确定由 NATNAT 分配的公网地分配的公网地址和端口址和端口

不需要改造现有不需要改造现有 NATNAT

主要特色:主要特色: 能够让客户端发现能够让客户端发现 NATNAT 的存在以及类型的存在以及类型 能够让客户端发现能够让客户端发现 NATNAT 的绑定生命周期的绑定生命周期 可以工作在多可以工作在多 NATNAT 串联环境下串联环境下 非常简单的协议,易于实现,负载低非常简单的协议,易于实现,负载低 STUNSTUN 服务器可以位于公网任何地方服务器可以位于公网任何地方适用范围:适用范围: 不适用于不适用于 Symmetric NATSymmetric NAT 对于对于 Non- Non- Symmetric NATSymmetric NAT 都适用都适用 如果双方都位于同一个如果双方都位于同一个 NATNAT 之后,就不适用之后,就不适用

SIPSIP 穿越穿越 NAT – STUNNAT – STUN

Page 16: SIP 之 穿越 NAT

STUNSTUN 的优点:的优点: 无需现有无需现有 NATNAT 设备做任何改动 设备做任何改动 可在多个可在多个 NATNAT 串联的网络环境中使用串联的网络环境中使用 STUNSTUN 的局限性:的局限性: 需要终端支持需要终端支持 STUN CLIENTSTUN CLIENT 的功能 的功能 不适合支持不适合支持 TCPTCP 连接的穿越,所以不支持连接的穿越,所以不支持 H.32H.32

33 不支持不支持 Symmetric NATSymmetric NAT 不支持对防火墙的穿越不支持对防火墙的穿越

SIPSIP 穿越穿越 NAT – STUNNAT – STUN

Page 17: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – STUNNAT – STUN

Page 18: SIP 之 穿越 NAT

SIPSIP 穿越穿越 NAT – STUNNAT – STUN

Page 19: SIP 之 穿越 NAT

成熟的成熟的 STUN Server/ClientSTUN Server/Client 方案方案 ::

http://http://sourceforge.netsourceforge.net/projects/stun//projects/stun/

下载下载 stund_0.94_Oct29.gzstund_0.94_Oct29.gz

运行其中的运行其中的 WinStun.exeWinStun.exe 测试程序测试程序 ,,即可获知即可获知 NNATAT 类型以及分配的公网地址:类型以及分配的公网地址:

SIPSIP 穿越穿越 NAT – STUNNAT – STUN

Page 20: SIP 之 穿越 NAT

TURNTURN((TTraveral raveral UUsing sing RRelay elay NNAT)AT) Solution Solution

TURN 服务器

私网 公网

X,y

A,b

S,t

NAT

[O,p] O,p

M,n

O,pM,n

SIPSIP 穿越穿越 NAT –TURNNAT –TURN

TURN客户端

通过通过 RelayRelay 方式穿越方式穿越 NATNAT 的方式:的方式:私网终端发出的报文都要经过私网终端发出的报文都要经过 TURN ServerTURN Server 进行进行 RelayRelay 转发 转发

Give my ip

分配一个 IP和端口: [O,p]

Page 21: SIP 之 穿越 NAT

IETF draftIETF draft “draft-rosenberg-midcom-turn- “draft-rosenberg-midcom-turn-06”06”

TURN ServerTURN Server 控制分配地址和端口,能分配控制分配地址和端口,能分配 RTRTP/RTCPP/RTCP 地址对地址对 (RTCP(RTCP 端口号为端口号为 RTPRTP 端口号加端口号加1)1) 作为私网终端用户的接收地址,避免了作为私网终端用户的接收地址,避免了 STUNSTUN方式中出口方式中出口 NATNAT 对对 RTP/RTCPRTP/RTCP 地址端口号的任地址端口号的任意分配,使得客户端无法收到对端发来的意分配,使得客户端无法收到对端发来的 RTCPRTCP报文报文 (( 对端发对端发 RTCPRTCP报文时,目的端口号缺省按报文时,目的端口号缺省按RTPRTP 端口号加 端口号加 11 发送发送 )) 。。

SIPSIP 穿越穿越 NAT –TURNNAT –TURN

Page 22: SIP 之 穿越 NAT

与与 STUNSTUN 的类似之处:的类似之处: 私网中的终端通过某种机制预先得到公网上的服私网中的终端通过某种机制预先得到公网上的服

务地址,然后在报文净载中所要求的地址信息就务地址,然后在报文净载中所要求的地址信息就直接填写该公网地址。直接填写该公网地址。

与与 STUNSTUN 的区别:的区别: STUNSTUN得到的地址为出口得到的地址为出口 NATNAT 上外部地址;上外部地址; TUTU

RNRN得到的地址为得到的地址为 TURN ServerTURN Server 上的公网地址 上的公网地址 TURNTURN 支持支持 Symmetric NASymmetric NATT TURNTURN 支持基于支持基于 TCPTCP 的应用,如的应用,如 H.323H.323

SIPSIP 穿越穿越 NAT –TURNNAT –TURN

Page 23: SIP 之 穿越 NAT

TURNTURN 的优点:的优点: 无需现有无需现有 NATNAT 设备做任何改动 设备做任何改动 可在多个可在多个 NATNAT 串联的网络环境中使用串联的网络环境中使用 支持支持 Symmetric NATSymmetric NAT 支持支持 TCPTCP 连接的穿越连接的穿越TURNTURN 的局限性:的局限性: 需要终端支持需要终端支持 TURN CLIENTTURN CLIENT 的功能 的功能 所有报文都必须经过所有报文都必须经过 TURN ServerTURN Server 转发,增大转发,增大

了包的延迟和丢包的可能性了包的延迟和丢包的可能性

SIPSIP 穿越穿越 NAT –TURNNAT –TURN

Page 24: SIP 之 穿越 NAT

ICEICE((IInteractive nteractive CConnectivity onnectivity EEstablishmentstablishment)) Solution Solution IETF draft “draft-ietf-mmusic-ice-03”IETF draft “draft-ietf-mmusic-ice-03” 综合运用 综合运用 STUNSTUN、、 TURNTURN 或或 RSIP(Realm Specific IP)RSIP(Realm Specific IP) 协协

议,使之在最适合的情况下工作,以弥补单独使用其中任议,使之在最适合的情况下工作,以弥补单独使用其中任何一种所带来的固有缺陷 何一种所带来的固有缺陷

在 在 SIP clientSIP client 开发上显著地增加了复杂性开发上显著地增加了复杂性 适用于各种类型的适用于各种类型的 NATNAT 需要每一个终端支持 需要每一个终端支持 traversal traversal 方法方法

资源:资源: 可以参考论文《可以参考论文《基于基于 ICEICE 方式方式 SIPSIP 信令穿透信令穿透 Symmetric NSymmetric N

ATAT 技术研究 技术研究 》》

SIPSIP 穿越穿越 NAT –ICENAT –ICE

Page 25: SIP 之 穿越 NAT

SBC(SBC(Session Border ControllerSession Border Controller)) Solution Solution

SIP Proxy

RTP/RTCP Media

SIPSignaling

FirewallFirewall

SIPSIP 穿越穿越 NAT –SBCNAT –SBC

SBC 服务器

Page 26: SIP 之 穿越 NAT

Signaling SolutionSignaling Solution SBCSBC 可以帮助可以帮助 SIPSIP 信令穿越已经存在的信令穿越已经存在的 FW/NATFW/NAT ,,

而不需要对现有的而不需要对现有的 FW/NATFW/NAT 设备做任何改变设备做任何改变 对于对于 SIPSIP 终端,终端, SIPSIP 终端设备会周期性发送注册消终端设备会周期性发送注册消息到息到 SBCSBC

Media Traversal SolutionMedia Traversal Solution SBCSBC 可以把相应的媒体流发送到防火墙上的相关可以把相应的媒体流发送到防火墙上的相关 IPIP

地址和端口,然后正确地使媒体流到达防火墙后的用地址和端口,然后正确地使媒体流到达防火墙后的用户侧户侧

SIPSIP 穿越穿越 NAT –SBCNAT –SBC

Page 27: SIP 之 穿越 NAT

谢谢! 谢谢! 谢谢! 谢谢!