NAT技術白皮書
關鍵詞:NAT,NAPT,ALG,EASY IP,DNS mapping
摘 要:本文對NAT技術產生的背景、原理以及實現方式等進行了整體介紹,其中包括各種NAT轉換方式的使用方法、適用範圍和組網方案等。
縮略語:
縮略語 | 英文全名 | 中文解釋 |
ALG | Application Layer Gateway | 應用級網關 |
CIDR | Classless InterDomain Routing | 無類域間路由選擇 |
DNS | Domain Name System | 域名係統 |
DHCP | Dynamic Host Configuration Protocol | 動態主機配置協議 |
FTP | File Transfer Protocol | 文件傳輸協議 |
HTTP | Hyper Text Transport Protocol | 超級文本傳輸協議 |
ILS | Internet Locator Server | 互聯網定位服務 |
NAT | Network Address Translation | 網絡地址轉換 |
NAPT | Network Address Port Translation | 網絡地址端口轉換 |
SIP | Session Initiation Protocol | 會話發起協議 |
TCP | Transmission Control Protocol | 傳輸控製協議 |
UDP | User Datagram Protocol | 用戶數據報協議 |
目 錄
隨著Internet的發展和網絡應用的增多,IPv4地址枯竭已成為製約網絡發展的瓶頸。盡管IPv6可以從根本上解決IPv4地址空間不足問題,但目前眾多網絡設備和網絡應用大多是基於IPv4的,因此在IPv6廣泛應用之前,一些過渡技術(如CIDR、私網地址等)的使用是解決這個問題最主要的技術手段。
其中,使用私網地址之所以能夠節省IPv4地址,主要是利用了這樣一個事實:一個局域網中在一定時間內隻有很少的主機需訪問外部網絡,而80%左右的流量隻局限於局域網內部。由於局域網內部的互訪可通過私網地址實現,且私網地址在不同局域網內可被重複利用,因此私網地址的使用有效緩解了IPv4地址不足的問題。當局域網內的主機要訪問外部網絡時,隻需通過NAT技術將其私網地址轉換為公網地址即可,這樣既可保證網絡互通,又節省了公網地址。
& 說明:
l IANA保留以下三個網段中的地址作為私網地址:10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。
l 使用私網地址的主機不能直接訪問Internet,而在Internet上也不能直接訪問使用私網地址的主機。
作為一種過渡方案,NAT通過地址重用的方法來滿足IP地址的需要,可以在一定程度上緩解IP地址空間枯竭的壓力。它具備以下優點:
l 對於內部通訊可以利用私網地址,如果需要與外部通訊或訪問外部資源,則可通過將私網地址轉換成公網地址來實現。
l 通過公網地址與端口的結合,可使多個私網用戶共用一個公網地址。
l 通過靜態映射,不同的內部服務器可以映射到同一個公網地址。外部用戶可通過公網地址和端口訪問不同的內部服務器,同時還隱藏了內部服務器的真實IP地址,從而防止外部對內部服務器乃至內部網絡的攻擊行為。
l 方便網絡管理,如通過改變映射表就可實現私網服務器的遷移,內部網絡的改變也很容易。
NAT的基本原理是僅在私網主機需要訪問Internet時才會分配到合法的公網地址,而在內部互聯時則使用私網地址。當訪問Internet的報文經過NAT網關時,NAT網關會用一個合法的公網地址替換原報文中的源IP地址,並對這種轉換進行記錄;之後,當報文從Internet側返回時,NAT網關查找原有的記錄,將報文的目的地址再替換回原來的私網地址,並送回發出請求的主機。這樣,在私網側或公網側設備看來,這個過程與普通的網絡訪問並沒有任何的區別。
Basic NAT方式屬於一對一的地址轉換,在這種方式下隻轉換IP地址,而對TCP/UDP協議的端口號不處理,一個公網IP地址不能同時被多個用戶使用。
圖1 Basic NAT方式原理圖
如圖1所示,Basic NAT方式的處理過程如下:
& 說明:
由於Basic NAT這種一對一的轉換方式並未實現公網地址的複用,不能有效解決IP地址短缺的問題,因此在實際應用中並不常用。
由於Basic NAT方式並未實現地址複用,因此並不能解決公網地址短缺的問題,而NAPT方式則可以解決這個問題。
NAPT方式屬於多對一的地址轉換,它通過使用“IP地址+端口號”的形式進行轉換,使多個私網用戶可共用一個公網IP地址訪問外網,因此是地址轉換實現的主要形式。
圖2 NAPT方式原理圖
如圖2所示,NAPT方式的處理過程如下:
出於安全考慮,大部分私網主機通常並不希望被公網用戶訪問。但在某些實際應用中,需要給公網用戶提供一個訪問私網服務器的機會。而在Basic NAT或NAPT方式下,由於由公網用戶發起的訪問無法動態建立NAT表項,因此公網用戶無法訪問私網主機。NAT Server(NAT內部服務器)方式就可以解決這個問題——通過靜態配置“公網IP地址+端口號”與“私網IP地址+端口號”間的映射關係,NAT設備可以將公網地址“反向”轉換成私網地址。
圖3 NAT Server方式原理圖
如圖3所示,NAT Server方式的處理過程如下:
EASY IP方式是指直接使用接口的公網IP地址作為轉換後的源地址進行地址轉換,它可以動態獲取出接口地址,從而有效支持出接口通過撥號或DHCP方式獲取公網IP地址的應用場景。同時,EASY IP方式也可以利用訪問控製列表來控製哪些內部地址可以進行地址轉換。
EASY IP方式特別適合小型局域網訪問Internet的情況。這裏的小型局域網主要指中小型網吧、小型辦公室等環境,一般具有以下特點:內部主機較少、出接口通過撥號方式獲得臨時公網IP地址以供內部主機訪問Internet。對於這種情況,可以使用EASY IP方式使局域網用戶都通過這個IP地址接入Internet。
圖4 EASY IP方式原理圖
如圖4所示,EASY IP方式的處理過程如下:
在某些應用中,私網用戶希望通過域名訪問位於同一私網的內部服務器,而DNS服務器卻位於公網。由於通常DNS響應報文中攜帶的是內部服務器的公網IP地址,因此若不在NAT設備上進行處理,私網用戶將無法通過域名訪問到內部服務器。
這個問題可以使用DNS Mapping方式來解決,通過配置“域名—公網IP地址—公網端口—協議類型”映射表,建立內部服務器的域名與其公網信息間的對應關係。
圖5 DNS Mapping方式原理圖
如圖5所示,私網用戶Host希望通過域名方式訪問Web服務器。當NAT設備收到DNS響應報文後,先根據其中攜帶的域名查找DNS Mapping映射表,再根據“公網IP地址—公網端口—協議類型”查找Web服務器,然後將DNS響應報文中的公網IP地址替換成Web服務器的私網IP地址。這樣,Host收到的DNS響應報文中就攜帶了Web服務器的私網IP地址,從而可以通過域名來訪問Web服務器。
通常情況下,NAT隻改變IP報文頭部地址信息,而不對報文載荷進行分析,這對於普通的應用層協議(如Telnet)來說,並不會影響其業務的開展;然而有一些應用層協議,其報文載荷中可能也攜帶有地址或端口信息,若這些信息不能被有效轉換,就可能導致問題。譬如,某些應用層協議會在客戶端與服務器之間協商端口號,然後服務器使用協商出的端口號向客戶端發起連接。如果NAT設備對二者的協商過程一無所知,那麼當服務器向客戶端發起連接時,就會因為在NAT設備上找不到內部與外部的IP地址/端口號對應關係而造成連接失敗。
這個問題可以通過應用級網關(ALG)機製來解決。ALG是特定應用協議的轉換代理,它通過對IP報文的載荷進行解析,改變封裝在其中的地址和端口信息,並完成其它必要的工作以使應用協議可以穿越NAT。ALG機製可處理的應用層協議包括DNS、FTP、H.323、ILS和SIP等,下麵以FTP協議為例介紹ALG處理的過程。
在FTP工作過程中,客戶端與服務器之間將建立兩條TCP連接:一條為控製連接,負責傳輸諸如用戶指令和參數等控製信息,其中包括發起數據連接時要用到的端口信息;另一條為數據連接,負責在服務器與客戶端之間建立數據通道以傳送文件。FTP可分為主動和被動兩種模式,根據所采用的模式以及服務器/客戶端的位置來決定是否需要進行ALG處理:
在主動模式下,在由客戶端發起控製連接中,客戶端將指定的端口通過PORT指令發送給服務器,然後由服務器向該端口發起數據連接,因此:
l 當客戶端位於公網而服務器位於私網時,由於客戶端向服務器通告的是公網地址和端口,服務器可直接向其發起數據連接,因此無需在控製連接中進行ALG處理;
l 當客戶端位於私網而服務器位於公網時,由於客戶端向服務器通告的是私網地址和端口,因此需在控製連接中通過ALG處理將其轉換為公網地址和端口,以供服務器發起數據連接所用,其過程如圖6所示。
在被動模式下,在由客戶端發起控製連接中,客戶端向服務器發送PASV請求來通知服務器它將發起被動模式,服務器再將指定的端口通過PASV響應發送給客戶端,然後由客戶端向該端口發起數據連接,因此:
l 當服務器位於公網而客戶端位於私網時,由於服務器向客戶端通告的是公網地址和端口,客戶端可直接向其發起數據連接,因此無需在控製連接中進行ALG處理;
l 當服務器位於私網而客戶端位於公網時,由於服務器向客戶端通告的是私網地址和端口,因此需在控製連接中通過ALG處理將其轉換為公網地址和端口,以供客戶端發起數據連接所用,其過程如圖7所示。
NAT多實例主要針對MPLS L3VPN用戶訪問公網或為公網提供服務而提出,可實現不同VPN內、使用相同私網地址的用戶同時訪問外部網絡。NAT多實例在轉換過程中增加了對VPN的識別和處理,把VPN作為區分會話的參數之一,以此實現了多實例同時訪問公網的功能。
與單實例一樣,多實例的Basic NAT隻對私網的IP地址進行轉換,但不同的是多實例Basic NAT在原有私網IP地址轉換的基礎上增加了對VPN的識別和處理,即在NAT轉換表項中增加了VPN信息,並將其作為轉換依據之一,以確保將不同VPN內相同的私網IP地址轉換成不同的公網IP地址。
與單實例相比,多實例的NAPT在原有私網IP地址和端口號轉換的基礎上,增加了對VPN的識別和處理,即在NAPT轉換表項中增加了VPN信息,並將其作為轉換依據之一,以確保將不同VPN內相同的“私網IP地址+端口號”轉換成不同的“公網IP地址+端口號”。
與單實例相比,多實例的NAT Server增加了私網側對VPN的支持,即在所配置的靜態NAT轉換表項中增加了VPN信息,並將其作為轉換依據之一,以確保將訪問不同VPN的報文送達正確的VPN,其處理流程與單實例相同。
與單實例相比,多實例的EASY IP在原有私網IP地址和端口號轉換的基礎上,增加了對VPN的識別和處理,即在EASY IP轉換表項中增加了VPN信息,並將其作為轉換依據之一,以確保將不同VPN內相同的“私網IP地址+端口號”轉換成不同的“公網IP地址+端口號”。
與單實例相比,多實例的DNS Mapping增加了私網側對VPN的支持,即在所配置的DNS Mapping映射表項中增加了VPN信息,並將其作為轉換依據之一,以確保將訪問不同VPN的報文送達正確的VPN,其處理流程與單實例相同。
多實例的ALG處理流程與單實例基本相同,不同的是NAT設備在創建公網與私網的地址端口映射表項時,NAT多實例在私網側地址和端口基礎上增加了對VPN的識別與處理,即在映射表項中增加了VPN信息,譬如將私網側的(VPN A,IP 1,Port 1)與公網側的(IP 2,Port 2)進行映射。
在許多小區、學校和企業網的內網規劃中,由於公網地址資源有限,內部用戶實際使用的都是私網地址,在這種情況下,可以使用NAT技術來實現內部用戶對公網的訪問。如圖8所示,通過在NAT網關上配置NAT轉換規則,可以實現私網主機訪問公網服務器。
在某些場合,私網內部有一些服務器需要向公網提供服務,比如一些位於私網內的Web服務器、FTP服務器等,NAT可以支持這樣的應用。如圖9所示,通過配置NAT Server,即定義“公網IP地址+端口號”與“私網IP地址+端口號”間的映射關係,使位於公網的主機能夠通過該映射關係訪問到位於私網的服務器。
在某些場合,私網用戶希望通過域名訪問位於同一私網的內部服務器,而DNS服務器卻位於公網,此時可通過DNS Mapping方式來實現。如圖10所示,通過配置DNS Mapping映射表,即定義“域名—公網IP地址—公網端口—協議類型”間的映射關係,將DNS響應報文中攜帶的公網IP地址替換成內部服務器的私網IP地址,從而使私網用戶可以通過域名來訪問該服務器。
當分屬不同MPLS VPN的主機使用相同的私網地址,並通過同一個出口設備訪問Internet時,NAT多實例可實現這些地址重疊的主機同時訪問公網服務器。如圖11所示,盡管Host A和Host B具有相同的私網地址,但由於其分屬不同的VPN,於是NAT能夠區分屬於不同VPN的主機,允許二者同時訪問公網服務器。
圖11 NAT多實例組網圖
l RFC 1631:The IP Network Address Translator (NAT)
l RFC 2663:IP Network Address Translator (NAT) Terminology and Considerations
l RFC 3022:Traditional IP Network Address Translator (Traditional NAT)
Copyright ©2008 杭州華三通信技術有限公司 版權所有,保留一切權利。
非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部,並不得以任何形式傳播。
本文檔中的信息可能變動,恕不另行通知。