NAT的四种类型及类型检测2【很好】
表 9.1 Cone NAT 種類
NAT Type Operation
Full Cone Any external host can nd a packet to the internal host, by nding a packet to the mapped external address.
Restricted Cone (Address Restricted Cone)An external host (with IP address X) can nd a packet to the internal host only if the internal host had previously nt 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 nt through eAddr不什么不什么的词语
:port2. Any external host can nd packets to iAddr:port1 by nding packets to eAddr:port2
Port
Restricted
Cone
A port restricted cone NAT is like a restricted cone NAT, but the restriction includes port numbers.
Symmetric NAT 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 nds a packet even with the same source address and port but to a different destination, a different mapping is ud. Only an external host that receives a packet from an internal host can nd a packet back.
9.2.1 Full Cone NAT
Full Cone 只是單純的做位址轉換,並未對進出的封包設限。其運作⽅式如圖9.1, 9.2 所⽰。
9.2.2 Restricted Cone NAT (Address Restricted Cone)
Restricted Cone NAT 對於封包進出稍加限制。從內部送出之封包的⽬的地 IP 位址會被記住。只有這些曾經收過這些封包的位址可以送封包進⼊ NAT。由其他位址送進來的封包,都會被檔下。換⾔之,只有收過NAT 內部送來的封包的地址才能將封包送⼊ Restrict Co随笔散文
ne NAT 內,其運作如圖9.3, 9.4 所⽰。
9.2.3 Port Restricted Cone NAT
Port Restricted Cone 對於封包進出⽐Restricted Cone 增加了⼀個限制,從內部送出之封包的⽬的地的IP 位址及 Port Number 會被記住。由外部送進來的封包,除了由那些接收過內部所送出的封包的IP 位址及 Port Number 所送來的封包之外,都會被檔下。換⾔之,只有收過NAT 內部送來的封包的地址及 Port Number 才能將封包送⼊ Restrict Cone NAT 內。其運作如圖9.5, 9.6 所⽰。
9.2.4 Symmetric NAT
圖 9.7 Symmetric NAT
Symmetric NAT 在四種Cone NAT中最為嚴謹。前三種NAT在做位址轉換時,無論封包是送往何處, NAT內部同⼀內部位址都對應到同⼀個外部位址,但在Symmetric NAT內則每⼀內部位址對不同的⽬的地,都對應到不同的外部位址。
Symmetric NAT只允許先由私有網域內的使⽤者發送封包到網際網路中的使⽤者可以回傳封包,其運作如圖9.7, 9.8所⽰。隨著網路安全的要求越來越⾼,使⽤此種NAT有越來越多的趨勢。
圖 9.8 Symmetric NAT
9.3 NAT 造成的問題
SIP是在當今的網際網路裡最常使⽤的VoIP通訊協議。使⽤者端(CPE)所連接的Agent 稱為 Ur Agent (UA),使⽤者端所需的軟體功能都建置在UA 中,網路上並建置有各種伺服器,提供各式各樣的服務,共同建構出⼀個運作順暢的電話網路。我們以SIP 為例說明NAT 防⽕牆對VoIP通訊協定造成的問題。為⽅便說明起⾒,本⽂將以SIP作為範例說明各種VoIP技術。前⽂所使⽤的「使⽤者電腦」,在SIP架構下,其實就是扮演 UA 的⾓⾊。
在SIP協議中,UA必須主動向registrars伺服器註冊,讓register伺服器掌握UA 動態。要建⽴通話ssion時,發話端 UA 主動向 proxy rvers 和受話的UA發出INVITE請求。⽽這兩種⾃防⽕牆外所發出的請求會被防⽕牆所阻擋。所以register 伺服器不能放在防⽕牆之內。但UA 就⽐較⿇煩了,難免會有相當數量的VoIP使⽤者是位於防⽕牆之內的小学生成语
,他們可以不受⼲擾的主動發話向外連接。不過,他們卻很難接收他⼈的呼叫。換⾔之,如果沒有適當的解決⽅案,位於防⽕牆之內的VoIP使⽤者,只能對外發話,卻無法接受電話。
9.4 現有穿越防⽕牆/NAT技術介紹
現有幾個穿越防⽕牆/NAT技術如下:
UPnP(Universal Plug and Play)
STUN(Simple Traversal of UDP Through Netwoek Address Translators)-RFC 3489
TRUN(Traversal Using Relay NAT)
ALG(Application Layer Gatewqy)
ICE(Interactive Connectivity Establish)
9.4.1 Universal Plug and Play (UPnP,即插即⽤)
Universal Plug and Play(UPnP)是微軟公司提出的協定,其⽬的是要簡化家庭或企業中智慧設備的連網過程.使⽤TCP/IP協定透過網路⾃動彼此連接在⼀起,⽽且連接過程中無需⽤⼾的參與和使⽤中央伺服器, UPnP設備可以⾃動探索網路並配置網路地址設定。其穿越NAT 的⽅式如下:
1. VoIP應⽤程式先對是否位於⼀個具有UPnP能⼒的NAT設備進⾏檢測。
2. 應⽤程式將獲得共⽤的Public IP地址及Port,為NAT做Signaling及media資訊流使⽤。
3. VoIP使⽤端就可以將此資訊加⼊VoIP signaling建⽴通話。
4. 此通話建⽴後,使⽤獲得的外部位址(Public IP地址及Port),做點對點的傳輸。
圖 9.9 是UPnP 穿越防⽕牆之運作之例。
它的問題是:NAT及VoIP Client (UA) 必須⽀援UPnP,但UPnP尚未得到所有的UA及NAT的⽀援 (要獲得全部UA及NAT廠商之⽀援,絕⾮易事)。尤其是NAT的問題,基於安全性的考慮,幾無NAT 願意⽀援 UPnP。
圖 9.9 UPnP 穿越防⽕牆之運作
9.4.2 STUN
STUN (Simple Traversal of UDP Through Network Address Translators - RFC 3489 ),是最著名和最常被使⽤的VoIP穿越NAT防⽕牆的解決辦法。STUN 利⽤位於 Internet 上的伺服器幫助防⽕牆內的UA獲知他們被NAT 轉換過的外部位址,並協助他⼈的VoIP呼叫穿透防⽕牆送達牆內的UA。
很多應⽤層的 VoIP程式必須仰賴 UA 主動提供⾃⾝的IP 位址及port number,讓VoIP兩端的UA 彼此知道對⽅的IP 位址及port number,才能互送封包,建⽴雙向的通話。但是如果UA 是在NAT 後⾯,在沒有外部的協助下,⼀個UA 無法看到它⾃⼰被NAT 轉換過的外部位址,就無法提供此項資訊,讓 VoIP順利運作。
圖 9.10 UA 與STUN 溝通獲知外部位址
STUN 伺服器可作為中介者協助UA 看到⾃⼰被轉換過的外部位址,如圖9.10所⽰。 UA 卡通包子
送⼀個messa
ge 給STUN 伺服器,⽽STUN 伺服器可從封包中挖出來該 UA 的外部位址,並將此資訊回傳給UA。此外,STUN 伺服器也可透過⼀系列的測試封包獲知NAT 的型態,並提供相對應的穿越⽅法,圖9.11及9.12顯⽰STUN 伺服器探測NAT型態之架構與流程。可惜的是,STUN無法穿透Symmetric NAT,⽽偏偏這種
NAT已經成為NAT市場上的主流。
以下是公眾STUN 伺服器的位址。
(no DNS SRV record)
(no DNS SRV record)
(no DNS SRV record)
(no DNS SRV record)
(no DNS SRV record)
< (DNS SRV record on not )
圖 9.11 STUN 伺服器探測NAT型態之架構
圖 9.12 STUN 伺服器探測NAT型態之流程
9.4.3 TURN
TURN 提供⽐ STUN更為強⼤的中介功能,⾜以穿透Symmetric NAT 防⽕牆。⼀個VoIP ssion 中的兩個端點所送出的封包全部先送給TURN rver,再由 TURN rver 轉送給對⽅。其運作如圖9.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之後就作為在兩個位址之間的轉接者。從第⼀個位址收到的任何資料會被提供給第⼆位址,並且從第⼆位址收到的任何資料也检讨书200字
會被提供給第⼀個。這種⽅式雖然可以穿越防⽕牆,但喪
失了 P2P通訊的特⾊,變成Client-Server 模式,使得負載集中於 TURN Server上, Server 更須承擔所有頻寬,以致沒有任何VoIP業者敢於採⽤。因此,這個解決辦法應該是在萬不得已下才能考慮使⽤的。
圖 9.13 TURN
9.4.4 ALG (Application Layer gateway)
Application Layer Gateways (ALGs)是⼀具有SIP能⼒(SIP-aware)的防⽕牆穿透技術。這項技術必須汰換現有的NAT,因此在推廣上有嚴重的限制。為了克服此項限制,Middlebox communication(MIDCOM) protocol被提出, MIDCOM允許應⽤程式,例如VoIP的UA和伺服器,控制NAT。但基於安全理由,網管⼈員將不會接受⽤⼾的應⽤程式控制他們的NAT。因此在推廣上也是困難重重。
圖 9.14 ALG
9.4.5 ICE (Interactive Connectivity Establishment)
IETF提出Interactive Connectivity Establishment (ICE)技術,結合STUN和TURN, 2005年微軟及Cisco宣佈將採⽤ICE。其詳細的運作⽅式請⾒圖9.15。
圖 9.15 ICE
9.4.6 Proprietary solution
⽬前極受歡迎的P2P VoIP,Skype,有⼀個重要的專利,VoIP 穿越NAT/Fs解決辦法。筆者把它視為分散式的TURN。連結Skype的 Client 彼此之間會互相合作,某些資源較充⾜的Client 會被選作為超級節點(SN),執⾏⼀些伺服器的功能,以分散伺服器的負載。每個 Client 會保存⼀分隨時更新的SN⽬錄。在登⼊時,它就努⼒與這些節點(SN)之⼀打開⼀個TCP連接並且保持這個連接在開啟狀態,如此, SN 與Skype Client 間維持⼀個可穿透防⽕牆的通道。每⼀個Client會藉由SN探測管制它們進出的NAT防⽕牆的存在和其類型。 Skype Client 使⽤TCP協定傳送控制信號。在最簡單的情況下,當呼叫與被呼叫兩個 Client 都有公共的IP位址時,呼叫者與被呼叫者之間會建⽴⼀個直接的TCP連接傳送控制信號。然後多媒體的封包會直接使⽤UDP來傳送。如果呼叫者或被呼叫者是在NAT防⽕牆後⾯,則無法直接傳送呼叫信號和多媒體的封包,他們就以SN 作為中介者請SN 協助轉送封包。如果因為防⽕牆作祟⽽無法利⽤UDP傳送語⾳封包時, Skype會改⽤TCP傳送。如果TCP也失敗,它會嘗試⽤TCP 傳送封包到常⽤的兩個port,HTTP(80)和HTTPS(443)。⼀般的防⽕牆不會封殺這兩個port,⽽Skype client在⼀開始就開啟著這兩個port以備使⽤。如此,Skype 穿越防⽕心态平和
牆的能⼒相當的⾼明,難怪如此⾵⾏。
參考⽂獻
1. Solving the Firewall and NAT Traversal Issues for Multimedia over IP Service, wport-大溪地旅游价格
/
2.
3. Newport netowrks, NAT Traversal for Multimedia over IP
4. NGN技術在企業網路的應⽤分析, 通信世界, 胡琳
5. IETF RFC 3489
6. Network Address Translation (NAT),Advanced Internet Services, Henning Schulzrinne