簡介
在
計算機科學中,
nat穿透(NAT traversal)涉及
TCP/IP網路中的一個常見問題,即在處於使用了
NAT設備的私有TCP/IP網路中的主機之間建立連線的問題。
儘管有許多穿越NAT的技術,但沒有一項是完美的,這是因為NAT的行為是非標準化的。這些技術中的大多數都要求有一個公共伺服器,而且這個伺服器使用的是一個眾所周知的、從全球任何地方都能訪問得到的IP位址。一些方法僅在建立連線時需要使用這個伺服器,而其它的方法則通過這個伺服器中繼所有的數據——這就引入了頻寬開銷的問題。
NAT穿透與IPsec
為了於NAT之上實現
IPsec,下列的協定必須在防火牆中實作:
或者是NAT-T之例:
在家庭路由器上,這通常通過啟用“IPsec穿透”來實現。
IETF文獻
RFC 1579- Firewall Friendly FTP
RFC 2663- IP Network Address Translator (NAT) Terminology and Considerations
RFC 2709- Security Model with Tunnel-mode IPsec for NAT Domains
RFC 2993- Architectural Implications of NAT
RFC 3022- Traditional IP Network Address Translator (Traditional NAT)
RFC 3027- Protocol Complications with the IP Network Address Translator (NAT)
RFC 3235- Network Address Translator (NAT)-Friendly Application Design Guidelines
RFC 3715- IPsec-Network Address Translation (NAT) Compatibility
RFC 3947- Negotiation of NAT-Traversal in the IKE
RFC 5128- State of Peer-to-Peer (P2P) Communication across Network Address Translators (NATs)
相關技術
NAT穿透技術與NAT行為
Session Traversal Utilities for NAT(STUN)
Traversal Using Relay NAT(TURN)
NAT-TNegotiation of NAT-Traversal in the IKE
Teredo tunnelinguses NAT traversal to provide
IPv6connectivity.
Session Border Controller(SBC)
TCP打洞(TCP hole punching)
ICMP打洞(ICMP hole punching)
NAT穿透基於NAT控制
Realm-Specific IP(RSIP)
MiddleboxCommunications(MIDCOM)
NAT Port Mapping Protocol(NAT PMP)
Internet Gateway Device(IGD)協定,由通用即插即用(UPnP)論壇所定義。
Application Layer Gateway(ALG)
NAT穿透整合技術
University research papers
Cornell University - Characterization and Measurement of TCP Traversal through NATs and Firewalls
Columbia University - An Analysis of the Skype Peer-to-Peer Internet Telephony
Peer to peer communication across Network Address Translators (UDP Hole Punching)
Internet By All Means - An article on how to maximize your chances to get around firewalls
用途
當前的Internet面臨兩大問題,即可用IP位址的短缺和路由表的不斷增大,這使得眾多用戶的接入出現困難。
使用NAT技術可以使一個機構內的所有用戶通過有限的數個(或1個)合法IP位址訪問Internet,從而節省了Internet上的合法IP位址;另一方面,通過地址轉換,可以隱藏區域網路上
主機的真實IP位址,從而提高網路的安全性。
NAT術語
在NAT中,有4個地址術語是必須正確理解的,它們是Inside Local、Inside Global、Outside Local和Outside Global。
在這些術語中,Inside(內部)是指那些由機構或企業所擁有的內部網路,這些網路上的主機通常分配了
私有地址。這些地址不能直接在Internet上進行
路由,從而也就不能直接用於對Internet的訪問,必須通過
網路地址的轉換,以合法IP的身份來訪問Internet。前者即InsideLocal地址。後者則為Inside Global地址。Local(本地)的地址是不能在Internet上通信的IP位址;Global(全局)的地址是能在Internet上通信的地址。Outside(外部)是指除了我們考察的內部網路之外的所有網路。有了對Inside、Outsider Local和Global4個詞的解釋,讓我們來看一看4個地址的定義。
●Inside Local Address(內部本地地址)
指一個網路內部分配給網上
主機的IP位址,此地址通常不是Internet上的合法地址,即不是網路信息中心 (NIC)或Internet服務提供商(ISP:internet service provider)所分配的IP位址。
●Inside Global Address(內部全局地址)
用來代替一個或者多個內部本地IP位址的、對外的、Internet上合法的IP位址。
●Outside Local Address(外部本地地址)
一個外部主機相對於
內部網所用的IP位址。此地址需要是Internet上合法的地址,但是從內部網可以進行
路由的
地址空間中進行分配的。
●Outside Global Address(外部全局地址)
由
主機擁有者分配給在外部網上主機的IP位址。此地址是從一個從全局可路由的地址或網路空間中分配的。
相關術語
所謂靜態內部源地址轉換是指將一個內部本地的IP位址轉換成為惟一的內部全局地址,即
私有地址和合法地址之間的靜態一一映射。這種轉換通常用在內部網上的主機需要對外提供服務(如Web、E-mail服務等)的情況下。
動態內部源地址轉換
在動態內部源地址轉換的方式下,一組內部本地地址與一個內部全局
地址池之間建立起一種動態的一一映射關係。這種地址轉換形式下,內部
主機可以訪問外部網路,外部主機也能對內部網路進行訪問,但必須是在區域網路IP位址與內部全局地址之間存在映射關係時才能成功,並且這種映射關係是動態的。
復用內部全局地址
Cisco
路由器可以把內部全局地址進行復用性的轉換,從而實現內部本地地址對內部全局地址的多對一的映射。地址復用被啟用時,路由器在高層協定(如TCP或UDP
連線埠號)維持有關的信息,將全局地址轉換為本地地址。當多個內部本地
地址映射到同一個全局地址時,連線埠號將用來區別不同的本地地址。復用內部全局地址的技術也被稱為PAT(Port AddressTranslation。連線埠地址轉換)。