NAT技術白皮書

NAT技術白皮書

關鍵詞:NATNAPTALGEASY IPDNS 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

用戶數據報協議

 



概述

1.1  產生背景

隨著Internet的發展和網絡應用的增多,IPv4地址枯竭已成為製約網絡發展的瓶頸。盡管IPv6可以從根本上解決IPv4地址空間不足問題,但目前眾多網絡設備和網絡應用大多是基於IPv4的,因此在IPv6廣泛應用之前,一些過渡技術(如CIDR、私網地址等)的使用是解決這個問題最主要的技術手段。

其中,使用私網地址之所以能夠節省IPv4地址,主要是利用了這樣一個事實:一個局域網中在一定時間內隻有很少的主機需訪問外部網絡,而80%左右的流量隻局限於局域網內部。由於局域網內部的互訪可通過私網地址實現,且私網地址在不同局域網內可被重複利用,因此私網地址的使用有效緩解了IPv4地址不足的問題。當局域網內的主機要訪問外部網絡時,隻需通過NAT技術將其私網地址轉換為公網地址即可,這樣既可保證網絡互通,又節省了公網地址。

&  說明:

l      IANA保留以下三個網段中的地址作為私網地址:10.0.0.0/8172.16.0.0/12192.168.0.0/16

l      使用私網地址的主機不能直接訪問Internet,而在Internet上也不能直接訪問使用私網地址的主機。

 

1.2  技術優點

作為一種過渡方案,NAT通過地址重用的方法來滿足IP地址的需要,可以在一定程度上緩解IP地址空間枯竭的壓力。它具備以下優點:

l              對於內部通訊可以利用私網地址,如果需要與外部通訊或訪問外部資源,則可通過將私網地址轉換成公網地址來實現。

l              通過公網地址與端口的結合,可使多個私網用戶共用一個公網地址。

l              通過靜態映射,不同的內部服務器可以映射到同一個公網地址。外部用戶可通過公網地址和端口訪問不同的內部服務器,同時還隱藏了內部服務器的真實IP地址,從而防止外部對內部服務器乃至內部網絡的攻擊行為。

l              方便網絡管理,如通過改變映射表就可實現私網服務器的遷移,內部網絡的改變也很容易。

NAT技術實現

NAT的基本原理是僅在私網主機需要訪問Internet時才會分配到合法的公網地址,而在內部互聯時則使用私網地址。當訪問Internet的報文經過NAT網關時,NAT網關會用一個合法的公網地址替換原報文中的源IP地址,並對這種轉換進行記錄;之後,當報文從Internet側返回時,NAT網關查找原有的記錄,將報文的目的地址再替換回原來的私網地址,並送回發出請求的主機。這樣,在私網側或公網側設備看來,這個過程與普通的網絡訪問並沒有任何的區別。

2.1  NAT實現方式

2.1.1  Basic NAT方式

Basic NAT方式屬於一對一的地址轉換,在這種方式下隻轉換IP地址,而對TCP/UDP協議的端口號不處理,一個公網IP地址不能同時被多個用戶使用。

圖1 Basic NAT方式原理圖

1所示,Basic NAT方式的處理過程如下:

(1)          NAT設備收到私網側主機發送的訪問公網側服務器的報文。
(2)          NAT設備從地址池中選取一個空閑的公網IP地址,建立與私網側報文源IP地址間的NAT轉換表項(正反向),並依據查找正向NAT表項的結果將報文轉換後向公網側發送。
(3)          NAT設備收到公網側的回應報文後,根據其目的IP地址查找反向NAT表項,並依據查表結果將報文轉換後向私網側發送。

&  說明:

由於Basic NAT這種一對一的轉換方式並未實現公網地址的複用,不能有效解決IP地址短缺的問題,因此在實際應用中並不常用。

 

2.1.2  NAPT方式

由於Basic NAT方式並未實現地址複用,因此並不能解決公網地址短缺的問題,而NAPT方式則可以解決這個問題。

NAPT方式屬於多對一的地址轉換,它通過使用“IP地址+端口號”的形式進行轉換,使多個私網用戶可共用一個公網IP地址訪問外網,因此是地址轉換實現的主要形式。

圖2 NAPT方式原理圖

2所示,NAPT方式的處理過程如下:

(1)          NAT設備收到私網側主機發送的訪問公網側服務器的報文。
(2)          NAT設備從地址池中選取一對空閑的“公網IP地址+端口號”,建立與私網側報文“源IP地址+源端口號”間的NAPT轉換表項(正反向),並依據查找正向NAPT表項的結果將報文轉換後向公網側發送。
(3)          NAT設備收到公網側的回應報文後,根據其“目的IP地址+目的端口號”查找反向NAPT表項,並依據查表結果將報文轉換後向私網側發送。

2.1.3  NAT Server方式

出於安全考慮,大部分私網主機通常並不希望被公網用戶訪問。但在某些實際應用中,需要給公網用戶提供一個訪問私網服務器的機會。而在Basic NATNAPT方式下,由於由公網用戶發起的訪問無法動態建立NAT表項,因此公網用戶無法訪問私網主機。NAT ServerNAT內部服務器)方式就可以解決這個問題——通過靜態配置“公網IP地址+端口號”與“私網IP地址+端口號”間的映射關係,NAT設備可以將公網地址“反向”轉換成私網地址。

圖3 NAT Server方式原理圖

3所示,NAT Server方式的處理過程如下:

(1)          NAT設備上手工配置靜態NAT轉換表項(正反向)。
(2)          NAT設備收到公網側主機發送的訪問私網側服務器的報文。
(3)          NAT設備根據公網側報文的“目的IP地址+目的端口號”查找反向靜態NAT表項,並依據查表結果將報文轉換後向私網側發送。
(4)          NAT設備收到私網側的回應報文後,根據其“源IP地址+源端口號”查找正向靜態NAT表項,並依據查表結果將報文轉換後向公網側發送。

2.1.4  EASY IP方式

EASY IP方式是指直接使用接口的公網IP地址作為轉換後的源地址進行地址轉換,它可以動態獲取出接口地址,從而有效支持出接口通過撥號或DHCP方式獲取公網IP地址的應用場景。同時,EASY IP方式也可以利用訪問控製列表來控製哪些內部地址可以進行地址轉換。

EASY IP方式特別適合小型局域網訪問Internet的情況。這裏的小型局域網主要指中小型網吧、小型辦公室等環境,一般具有以下特點:內部主機較少、出接口通過撥號方式獲得臨時公網IP地址以供內部主機訪問Internet。對於這種情況,可以使用EASY IP方式使局域網用戶都通過這個IP地址接入Internet

圖4 EASY IP方式原理圖

4所示,EASY IP方式的處理過程如下:

(1)          NAT設備收到私網側主機發送的訪問公網側服務器的報文。
(2)          NAT設備利用公網側接口的“公網IP地址+端口號”,建立與私網側報文“源IP地址+源端口號”間的EASY IP轉換表項(正反向),並依據查找正向EASY IP表項的結果將報文轉換後向公網側發送。
(3)          NAT設備收到公網側的回應報文後,根據其“目的IP地址+目的端口號”查找反向EASY IP表項,並依據查表結果將報文轉換後向私網側發送。

1.1.2  DNS Mapping方式

在某些應用中,私網用戶希望通過域名訪問位於同一私網的內部服務器,而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服務器。

2.2  ALG機製

2.2.1  ALG機製簡介

通常情況下,NAT隻改變IP報文頭部地址信息,而不對報文載荷進行分析,這對於普通的應用層協議(如Telnet)來說,並不會影響其業務的開展;然而有一些應用層協議,其報文載荷中可能也攜帶有地址或端口信息,若這些信息不能被有效轉換,就可能導致問題。譬如,某些應用層協議會在客戶端與服務器之間協商端口號,然後服務器使用協商出的端口號向客戶端發起連接。如果NAT設備對二者的協商過程一無所知,那麼當服務器向客戶端發起連接時,就會因為在NAT設備上找不到內部與外部的IP地址/端口號對應關係而造成連接失敗。

這個問題可以通過應用級網關(ALG)機製來解決。ALG是特定應用協議的轉換代理,它通過對IP報文的載荷進行解析,改變封裝在其中的地址和端口信息,並完成其它必要的工作以使應用協議可以穿越NATALG機製可處理的應用層協議包括DNSFTPH.323ILSSIP等,下麵以FTP協議為例介紹ALG處理的過程。

2.2.2  FTP協議的ALG處理

FTP工作過程中,客戶端與服務器之間將建立兩條TCP連接:一條為控製連接,負責傳輸諸如用戶指令和參數等控製信息,其中包括發起數據連接時要用到的端口信息;另一條為數據連接,負責在服務器與客戶端之間建立數據通道以傳送文件。FTP可分為主動和被動兩種模式,根據所采用的模式以及服務器/客戶端的位置來決定是否需要進行ALG處理:

1. 主動模式

在主動模式下,在由客戶端發起控製連接中,客戶端將指定的端口通過PORT指令發送給服務器,然後由服務器向該端口發起數據連接,因此:

l              當客戶端位於公網而服務器位於私網時,由於客戶端向服務器通告的是公網地址和端口,服務器可直接向其發起數據連接,因此無需在控製連接中進行ALG處理;

l              當客戶端位於私網而服務器位於公網時,由於客戶端向服務器通告的是私網地址和端口,因此需在控製連接中通過ALG處理將其轉換為公網地址和端口,以供服務器發起數據連接所用,其過程如6所示。

圖6 主動模式下的ALG處理

(1)          首先,由客戶端向服務器發送PORT指令,以向服務器通知發起數據連接所應使用的地址和端口(IP 1Port 1);
(2)          NAT設備收到該指令後,將其中所攜帶的私網地址和端口(IP 1Port 1)替換為公網地址和端口(IP 2Port 2),並據此創建相應的NAPT表項——此過程即為ALG處理;
(3)          服務器收到該指令後,主動向公網地址和端口(IP 2Port 2)發起數據連接,並在通過NAT設備時被轉化為私網地址和端口(IP 1Port 1)。

2. 被動模式

在被動模式下,在由客戶端發起控製連接中,客戶端向服務器發送PASV請求來通知服務器它將發起被動模式,服務器再將指定的端口通過PASV響應發送給客戶端,然後由客戶端向該端口發起數據連接,因此:

l              當服務器位於公網而客戶端位於私網時,由於服務器向客戶端通告的是公網地址和端口,客戶端可直接向其發起數據連接,因此無需在控製連接中進行ALG處理;

l              當服務器位於私網而客戶端位於公網時,由於服務器向客戶端通告的是私網地址和端口,因此需在控製連接中通過ALG處理將其轉換為公網地址和端口,以供客戶端發起數據連接所用,其過程如7所示。

圖7 被動模式下的ALG處理

(1)          首先,由客戶端向服務器發送PASV請求;
(2)          服務器收到該請求後,選擇並打開服務器端數據通道的地址和端口(IP 1Port 1),並通過PASV響應向客戶端返回該地址和端口;
(3)          NAT設備收到該響應後,將其中所攜帶的私網地址和端口(IP 1Port 1)替換為公網地址和端口(IP 2Port 2),並據此創建相應的NAPT表項——此過程即為ALG處理;
(4)          客戶端收到該響應後,向公網地址和端口(IP 2Port 2)發起數據連接,並在通過NAT設備時被轉換為私網地址和端口(IP 1Port 1)。

2.3  NAT多實例的實現

NAT多實例主要針對MPLS L3VPN用戶訪問公網或為公網提供服務而提出,可實現不同VPN內、使用相同私網地址的用戶同時訪問外部網絡。NAT多實例在轉換過程中增加了對VPN的識別和處理,把VPN作為區分會話的參數之一,以此實現了多實例同時訪問公網的功能。

1. 多實例Basic NAT

與單實例一樣,多實例的Basic NAT隻對私網的IP地址進行轉換,但不同的是多實例Basic NAT在原有私網IP地址轉換的基礎上增加了對VPN的識別和處理,即在NAT轉換表項中增加了VPN信息,並將其作為轉換依據之一,以確保將不同VPN內相同的私網IP地址轉換成不同的公網IP地址。

2. 多實例NAPT

與單實例相比,多實例的NAPT在原有私網IP地址和端口號轉換的基礎上,增加了對VPN的識別和處理,即在NAPT轉換表項中增加了VPN信息,並將其作為轉換依據之一,以確保將不同VPN內相同的“私網IP地址+端口號”轉換成不同的“公網IP地址+端口號”。

3. 多實例NAT Server

與單實例相比,多實例的NAT Server增加了私網側對VPN的支持,即在所配置的靜態NAT轉換表項中增加了VPN信息,並將其作為轉換依據之一,以確保將訪問不同VPN的報文送達正確的VPN,其處理流程與單實例相同。

4. 多實例EASY IP

與單實例相比,多實例的EASY IP在原有私網IP地址和端口號轉換的基礎上,增加了對VPN的識別和處理,即在EASY IP轉換表項中增加了VPN信息,並將其作為轉換依據之一,以確保將不同VPN內相同的“私網IP地址+端口號”轉換成不同的“公網IP地址+端口號”。

5. 多實例DNS Mapping

與單實例相比,多實例的DNS Mapping增加了私網側對VPN的支持,即在所配置的DNS Mapping映射表項中增加了VPN信息,並將其作為轉換依據之一,以確保將訪問不同VPN的報文送達正確的VPN,其處理流程與單實例相同。

6. 多實例ALG處理

多實例的ALG處理流程與單實例基本相同,不同的是NAT設備在創建公網與私網的地址端口映射表項時,NAT多實例在私網側地址和端口基礎上增加了對VPN的識別與處理,即在映射表項中增加了VPN信息,譬如將私網側的(VPN AIP 1Port 1)與公網側的(IP 2Port 2)進行映射。

典型組網應用

3.1  私網主機訪問公網服務器

在許多小區、學校和企業網的內網規劃中,由於公網地址資源有限,內部用戶實際使用的都是私網地址,在這種情況下,可以使用NAT技術來實現內部用戶對公網的訪問。如8所示,通過在NAT網關上配置NAT轉換規則,可以實現私網主機訪問公網服務器。

圖8 私網主機訪問公網服務器組網圖

3.2  公網主機訪問私網服務器

在某些場合,私網內部有一些服務器需要向公網提供服務,比如一些位於私網內的Web服務器、FTP服務器等,NAT可以支持這樣的應用。如9所示,通過配置NAT Server,即定義“公網IP地址+端口號”與“私網IP地址+端口號”間的映射關係,使位於公網的主機能夠通過該映射關係訪問到位於私網的服務器。

圖9 公網主機訪問私網服務器組網圖

3.3  私網主機通過域名訪問私網服務器

在某些場合,私網用戶希望通過域名訪問位於同一私網的內部服務器,而DNS服務器卻位於公網,此時可通過DNS Mapping方式來實現。如10所示,通過配置DNS Mapping映射表,即定義“域名—公網IP地址—公網端口—協議類型”間的映射關係,將DNS響應報文中攜帶的公網IP地址替換成內部服務器的私網IP地址,從而使私網用戶可以通過域名來訪問該服務器。

圖10 私網主機通過域名訪問私網服務器組網圖

3.4  NAT多實例

當分屬不同MPLS VPN的主機使用相同的私網地址,並通過同一個出口設備訪問Internet時,NAT多實例可實現這些地址重疊的主機同時訪問公網服務器。如11所示,盡管Host AHost B具有相同的私網地址,但由於其分屬不同的VPN,於是NAT能夠區分屬於不同VPN的主機,允許二者同時訪問公網服務器。

圖11 NAT多實例組網圖

參考文獻

l              RFC 1631The IP Network Address Translator (NAT)

l              RFC 2663IP Network Address Translator (NAT) Terminology and Considerations

l              RFC 3022Traditional IP Network Address Translator (Traditional NAT)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright ©2008 杭州華三通信技術有限公司 版權所有,保留一切權利。

非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部,並不得以任何形式傳播。

本文檔中的信息可能變動,恕不另行通知。

附件下載

聯係我們