voip穿越防火墙技术
2008-12-11 16:58
281 查看
穿越防火牆技術
最常見到的是某一邊的使用者的電腦設定有問題導致單邊沒有聲音,因此收話發話兩端都必須是
電腦高手才能順利進行雙方通話。另外一個很大的限制是,收話發話兩端都必須填入所用電腦的
IP地址,
才能讓兩方相連。對於在家中利用撥接或ADSL設備上網或在防火牆後面的使用者而言,
這是一項難以達成的任務,無論使用者或電腦本身都難以輕易獲知其對外的IP位址。
這種現象一直等到Skype 推出之後才獲得大幅改善,大大提高了
VoIP的可用度,使得一般的電腦使用者也可以很輕易的使用VoIP。即使使用者是在防火牆
之後,VoIP 也可以順利運作,這是歸功於「VoIP穿越NAT[/b] 防火牆」技術。
X.1 NAT[/b] 及防火牆之來源
NAT[/b] 是一種將內部IP 與外部IP互相轉換之技術。其起源是因為 IPv4 位址稀少,而很多企業或網路公司在擁有少數IP 地址而公司內部確有太多電腦時
而採用共用IP 的解決方法,讓一個IP 地址給多個電腦使用。如今最常見的
IP 分享器或無線區域網路Access Point 都有NAT[/b] 的功能。使用者利用 ADSL上網
後,拿到一個 IP 地址,而IP 分享器或WLAN AP 則將一組專供內部使用的私有IP ,
通常是192.168.0.x,分配給所有內部電腦,內部每部電腦擁有一個192.168.0.x的IP 位址,
但WLAN AP 對外卻只有一個由網路公司賦予的IP 位址。
通常NAT[/b] 是將每一部電腦所用的 (IP, port number),
本文稱為內部位址,對應到 (共用IP, port number),本文稱為外部位址,
而 NAT[/b] 負責將進出封包的表頭進行轉換使得內部電腦可以
透通的與外部網路連線溝通。
企業使用防火牆對網路進行控管是很自然的事,通常有三項主要功能:
存取控管 (Access Control)
身份識別 (Authentication)
安全稽核
常用的私有IP 位址是
10.0.0.0/8
172.16.0.0-172.31.0.0.
192.168.0.0/24
NAT[/b] 與防火牆對於VoIP的連線造成很大的困擾,
逼得VoIP研究人員發展出一套很複雜的技術讓VoIP能
穿越防火牆,讓在防火牆後面的使用者能自由的使用VoIP。
X.2 防火牆/NAT[/b]的種類
防火牆通常整合在NAT[/b] 裡面,根據所用的防火牆技術,NAT[/b] 可以分成幾類。主要的四類如表X.1 所示:
表 X.1 Cone[/b] NAT[/b] 種類
NAT[/b] Type | Operation |
---|---|
Full[/b] Cone[/b] | Any external host can send a packet to the internal host, by sending a packet to the mapped external address. |
Restricted Cone[/b] (Address Restricted Cone[/b]) | An external host (with IP address X) can send a packet to the internal host only if the internal host had previously sent a packet to IP address X. Once an internal address (iAddr:port1) is mapped to an external address (eAddr:port2), any packets from iAddr:port1 will be sent through eAddr:port2. Any external host can send packets to iAddr:port1 by sending packets to eAddr:port2 |
Port Restricted Cone[/b] | A port restricted cone[/b] NAT[/b] is like a restricted cone[/b] NAT[/b], but the restriction includes port numbers. |
Symmetric NAT[/b] | Each request from the same internal IP address and port to a specific destination IP address and port is mapped to a unique external source IP address and port. If the same internal host sends a packet even with the same source address and port but to a different destination, a different mapping is used. Only an external host that receives a packet from an internal host can send a packet back. |
NAT[/b] Type | Address binding | Port binding | Bindings per session | UDP NAT[/b] | TCP NAT[/b] | Session direction |
---|---|---|---|---|---|---|
Full[/b] Cone[/b] | no | -> | 1 | yes | no | <-> |
Restricted Cone[/b] (Address Restricted Cone[/b]) | no | -> | 1 | yes | no | -> |
Port Restricted Cone[/b] | no | -> | 1 | yes | yes | -> |
Symmetric NAT[/b] | no | no | 0 | yes | yes | -> |
X.2.1 Full[/b] Cone[/b] NAT[/b]
Full[/b] Cone[/b] 只是單純的做位址轉換,並未對進出的封包設限。其運作方式如圖X.1, X.2 所示。
圖 X.1 Full[/b] Cone[/b] NAT[/b]
圖 X.2 Full[/b] Cone[/b] NAT[/b] 之運作
X.2.2 Restricted Cone[/b] NAT[/b] (Address Restricted Cone[/b])
Restricted Cone[/b] NAT[/b] 對於封包進出稍加限制。從內部送出之封包的目的地IP 位址會被記住。只有這些曾經收過這些封包的位址可以送封包進入
NAT[/b]。由其他位址送進來的封包,都會被檔下。換言之,
只有收過NAT[/b] 內部送來的封包的地址才能將封包送入 Restrict Cone[/b] NAT[/b] 內,
其運作如圖X.3, X.4 所示。
圖 X.3 Restricted Cone[/b] NAT[/b]
圖 X.4 Restricted Cone[/b] NAT[/b]之運作
X.2.3 Port Restricted Cone[/b] NAT[/b]
Port Restricted Cone[/b] 對於封包進出比Restricted Cone[/b] 增加了一個限制,從內部送出之封包的目的地的IP 位址及 Port Number 會被記住。
由外部送進來的封包,除了由那些接收過內部所送出
的封包的IP 位址及 Port Number 所送來的封包之外,都會被檔下。換言之,
只有收過NAT[/b] 內部送來的封包的地址及 Port Number 才能將封包送入 Restrict Cone[/b] NAT[/b] 內。
其運作如圖X.5, X.6 所示。
圖 X.5 Port Restricted Cone[/b] NAT[/b]
圖 X.6 Port Restricted Cone[/b] NAT[/b]之運作
X.2.4 Symmetric NAT[/b]
圖 X.7 Symmetric NAT[/b]
Symmetric NAT[/b] 在四種Cone[/b] NAT[/b]中最為嚴謹。
前三種NAT[/b]在做位址轉換時,無論封包是送往何處, NAT[/b]內部同一內部位址
都對應到同一個外部位址,但在Symmetric NAT[/b]內則每一內部位址對不同的目的地,
都對應到不同的外部位址。
Symmetric NAT[/b]只允許先由私有網域內的使用者發送封包到網際網路中的使用者
可以回傳封包,其運作如圖X.7, X.8所示。
隨著網路安全的要求越來越高,使用此種NAT[/b]有越來越多的趨勢。
圖 X.8 Symmetric NAT[/b]
X.3 NAT[/b] 造成的問題
SIP是在當今的網際網路裡最常使用的VoIP通訊協議。使用者端(CPE)所連接的Agent 稱為 User Agent (UA),
使用者端所需的軟體功能都建置在UA 中,
網路上並建置有各種伺服器,提供各式各樣的服務,
共同建構出一個運作順暢的電話網路。我們以SIP 為例說明NAT[/b] 防火牆
對VoIP通訊協定造成的問題。為方便說明起見,本文將以SIP作為範例說明
各種VoIP技術。前文所使用的「使用者電腦」,在SIP架構下,其實就是扮演
UA 的角色。
在SIP協議中,UA必須主動向registrars伺服器註冊,讓register伺服器掌握UA 動態。
要建立通話session時,發話端 UA 主動向 proxy servers
和受話的UA發出INVITE請求。
而這兩種自防火牆外所發出的請求會被防火牆所阻擋。
所以register 伺服器不能放在防火牆之內。但UA 就比較麻煩了,難免
會有相當數量的VoIP使用者是位於防火牆之內的,他們
可以不受干擾的主動發話向外連接。不過,他們卻很難接收他人的呼叫。
換言之,如果沒有適當的解決方案,位於防火牆之內的VoIP使用者,只能
對外發話,卻無法接受電話。
X.4 現有穿越防火牆/NAT[/b]技術介紹
現有幾個穿越防火牆/NAT[/b]技術如下:UPnP(Universal Plug and Play)
STUN(Simple Traversal of UDP Through Netwoek Address Translators)-RFC 3489
TRUN(Traversal Using Relay NAT[/b])
ALG(Application Layer Gatewqy)
ICE(Interactive Connectivity Establish)
X.4.1 Universal Plug and Play (UPnP,即插即用)
Universal Plug and Play(UPnP)是微軟公司提出的協定,其目的是要簡化家庭或企業中智慧設備的連網過程.
使用TCP/IP協定透過網路自動彼此連接在一起,
而且連接過程中無需用戶的參與
和使用中央伺服器,
UPnP設備可以自動探索網路並配置網路地址設定。
其穿越NAT[/b]的方式如下:
VoIP應用程式先對是否位於一個具有UPnP能力的NAT[/b]設備進行檢測。
應用程式將獲得共用的Public IP地址及Port,為NAT[/b]做Signaling及media資訊流使用。
VoIP使用端就可以將此資訊加入VoIP signaling建立通話。
此通話建立後,使用獲得的外部位址(Public IP地址及Port),做點對點的傳輸。
圖 X.9 是UPnP 穿越防火牆之運作之例。
它的問題是:NAT[/b]及VoIP Client (UA) 必須支援UPnP,
但UPnP尚未得到所有的UA及NAT[/b]的支援
(要獲得全部UA及NAT[/b]廠商之支援,絕非易事)。
尤其是NAT[/b]的問題,基於安全性的考慮,幾無NAT[/b] 願意支援 UPnP。
圖 X.9 UPnP 穿越防火牆之運作
X.4.2 STUN
STUN (Simple Traversal of UDP Through Network Address Translators - RFC 3489 ),是最著名和最常被使用的VoIP穿越NAT[/b]防火牆的解決辦法。STUN 利用位於
Internet 上的伺服器幫助防火牆內的UA獲知他們被NAT[/b] 轉換過的外部位址,
並協助他人的VoIP呼叫穿透防火牆送達牆內的UA。
很多應用層的 VoIP程式必須仰賴 UA 主動提供自身的IP 位址及port number,
讓VoIP兩端的UA 彼此知道對方的IP 位址及port number, 才能互送封包,
建立雙向的通話。但是如果UA 是在NAT[/b] 後面,
在沒有外部的協助下,一個UA 無法看到
它自己被NAT[/b] 轉換過的外部位址,就無法提供此項資訊,讓 VoIP順利運作。
圖 X.10 UA 與STUN 溝通獲知外部位址
STUN 伺服器可作為中介者協助UA 看到自己被轉換過的外部位址,如圖X.10所示。
UA 送一個message 給STUN 伺服器,而STUN 伺服器可從封包中挖出來該
UA 的外部位址,並將此資訊回傳給UA。
此外,STUN 伺服器也可透過一系列的測試封包獲知NAT[/b] 的型態,並提供
相對應的穿越方法,圖X.11及X.12顯示STUN 伺服器探測NAT[/b]型態之架構與流程。
可惜的是,STUN無法穿透Symmetric NAT[/b],
而偏偏這種NAT[/b]已經成為NAT[/b]市場上的主流。
以下是公眾STUN 伺服器的位址。
stun.fwdnet.net
stun.fwd.org (no DNS SRV record)
stun01.sipphone.com (no DNS SRV record)
stun.softjoys.com (no DNS SRV record)
stun.voipbuster.com (no DNS SRV record)
stun.voxgratia.org (no DNS SRV record)
stun.xten.com
stun1.noc.ams-ix.net (DNS SRV record on domain ams-ix.net not noc.ams-ix.net)
圖 X.11 STUN 伺服器探測NAT[/b]型態之架構
圖 X.12 STUN 伺服器探測NAT[/b]型態之流程
X.4.3 TURN
TURN 提供比 STUN更為強大的中介功能,足以穿透Symmetric NAT[/b] 防火牆。一個VoIP session 中的兩個端點所送出的封包全部先送給TURN server,再由
TURN server 轉送給對方。其運作如圖X.13所示。
使用TURN 服務的UA在啟動時,須以
一個TURN client的身份發出一個"TURN allocate"請求給TURN Server。
TURN Server會記住這個請求所來自的IP位址和Port,並回覆一個public IP
位址和Port。然後TURN Server就在它分配的public port上等資料傳入。啟動
完成的TURN Client 就可將封包送到所分配的Public port 上,此舉相當於
讓UA 與 TURN Server 建立通訊渠道。
當TURN Server 收到封包時時,
TURN Server會儲存封包來源的IP位址和port,然後轉送它所提出要到的位址
的請求給對方。
TURN Server之後就作為在兩個位址之間的轉接者。
從第一個位址收到的任何資料會
被提供給第二位址,
並且從第二位址收到的任何資料也會被提供給第一個。這種方式雖然
可以穿越防火牆,但喪失了
P2P通訊的特色,變成Client-Server 模式,使得負載集中於 TURN Server上,
Server 更須承擔所有頻寬,以致
沒有任何VoIP業者敢於採用。因此,這個解決辦法應該是在萬不得已下
才能考慮使用的。
圖 X.13 TURN
X.4.4 ALG (Application Layer gateway)
Application Layer Gateways (ALGs)是一具有SIP能力(SIP-aware)的防火牆穿透技術。這項技術必須汰換現有的NAT[/b],因此在推廣上有嚴重的限制。
為了克服此項限制,Middlebox communication(MIDCOM) protocol被提出,
MIDCOM允許應用程式,例如VoIP的UA和伺服器,控制NAT[/b]。
但基於安全理由,網管人員將不會接受用戶的應用程式控制他們的NAT[/b]。
因此在推廣上也是困難重重。
圖 X.14 ALG
X.4.5 ICE (Interactive Connectivity Establishment)
IETF提出Interactive Connectivity Establishment (ICE)技術,結合STUN和TURN,2005年 微軟及Cisco宣佈將採用ICE。其詳細的運作方式請見圖X.15。
圖 X.15 ICE
X.4.6 Proprietary solution
目前極受歡迎的P2P VoIP,Skype,有一個重要的專利,VoIP 穿越NAT[/b]/Fs解決辦法。筆者把它視為分散式的TURN。
連結Skype的 Client 彼此之間會互相合作,某些資源較充足的Client
會被選作為超級節點(SN),執行一些伺服器的功能,以分散伺服器的負載。
每個 Client 會保存一分隨時更新的SN目錄。在登入時,
它就努力與這些節點(SN)之
一打開一個TCP連接並且保持這個連接在開啟狀態,如此,
SN 與Skype Client 間維持一個可穿透防火牆的通道。
每一個Client會藉由SN探測管制它們進出的NAT[/b]防火牆的存在和其類型。
Skype Client 使用TCP協定傳送控制信號。在最簡單的情況下,
當呼叫與被呼叫兩個 Client 都有公共的IP位址時,
呼叫者與被呼叫者之間會建立一個直接的TCP連接傳送控制信號。
然後多媒體的封包會直接使用UDP來傳送。
如果呼叫者或被呼叫者是在NAT[/b]防火牆後面,則無法直接傳送呼叫信號
和多媒體的封包,他們就以SN 作為中介者請SN 協助轉送封包。
如果因為防火牆作祟而無法利用UDP傳送語音封包時,
Skype會改用TCP傳送。如果TCP也失敗,它會嘗試用TCP
傳送封包到常用的兩個port,HTTP(80)和HTTPS(443)。一般的防火牆不會
封殺這兩個 port,而Skype client在一開始就開啟著這兩個port以備使用。
如此,Skype 穿越防火牆的能力相當的高明,難怪如此風行。
References
Solving the Firewall and NAT[/b] Traversal Issues for Multimedia over IP Service, http://www.newport-networks.com/SearchTekTarget.com
Newport netowrks, NAT[/b] Traversal for Multimedia over IP
NGN技術在企業網路的應用分析, 通信世界, 胡琳
IETF RFC 3489
Network Address Translation (NAT[/b]),Advanced Internet Services, Henning Schulzrinne
相关文章推荐
- voip穿越防火墙技术
- VoIP穿越NAT和防火墙的方法【转】
- VoIP穿越NAT和防火墙的方法
- VoIP穿越NAT和防火墙的四种方法
- 穿越防火墙技术要求简介
- 下一代网络中多媒体业务穿越NAT和防火墙技术的研究
- NAT助VoIP穿越防火墙
- 穿越防火墙 NAT 学习总结 结合BT技术(—)
- VoIP穿越NAT和防火墙的方法
- VoIP穿越NAT和防火墙的方法
- “穿越”防火墙的XML技术
- OWASP 2012中国峰会5吴卓群:应用防火墙(WAF)绕过测试技术
- 防火墙技术(上)
- 防火墙系列(二)-----防火墙的主要技术之包过滤技术,状态检测技术
- 4G(LTE)背后的技术和利益纠结——VoIP,VoLTE,SIP,IMS的前世今生
- VoIP技术基础
- 私网穿越技术在软交换体系中的应用
- 用C#开发网络防火墙技术分析