NAT類型及轉換原理深入剖析

大家都知道。NAT是位於內、外網之間,用來進行內、外網地址轉換的,在當前仍是IPv4爲主流協議的IP網絡,NAT技術的應用非常廣,因爲它可以節約緊缺的公網IP地址。但是千萬別以爲NAT技術很簡單,認爲只是把內部(或者外部)地址轉換成外部(或者內部)地址。在具體的應用中,NAT的應用方式,或者說NAT類型非常多,本文以Cisco設備中的NAT技術從專業角度進行一些基礎知識和應用配置方面的介紹,全面的NAT配置與應用到時大家參見本人於編寫的《金牌網管師——大中型企業網絡組建、配置與管理》一書,或者明年將出版的《Cisco/H3C路由器配置與管理完全手冊》一書。

一、NAT類型

NAT路由器是被配置爲轉換內部網絡(inside network)中的非註冊內部本地IP地址(inside local addresses)爲註冊IP地址(registered IP addresses)。當內部網絡中使用非註冊IP地址的設備要與外部公用網絡(public network)進行通信時,就會使用NAT。在Cisco設備(包括防火牆、路由器,或者包含相關Cisco軟件的計算機)中,NAT有多種形式和工作方式。這是在Cisco設備上配置NAT應用之前必須要掌握的。

** 靜態NAT(Static NAT)

靜態NAT是把非註冊IP地址(如本地局域網IP地址)一對一地映射到註冊IP地址(如公網IP地址)。這在網絡設備需要以公網IP地址訪問外網時特別有用。但一定要注意,這裏僅例舉了單一的正方向的IP地址轉換,實際上是可以反方向,或者雙方向進行IP地址轉換的,下面動態NAT和複用NAT也一樣可以有正向、反向、或者雙向轉換方式。

如圖1顯示的是一個靜態NAT應用示例(注意箭頭方向)。內部網絡中的192.168.32.10、192.168.32.12和192.168.32.15這三個專網IP地址設備在通過路由器訪問公網時,對應轉換成213.18.123.110、213.18.123.11和213.18.123.12這三個公網IP地址,讓對方看到的也是這三個公網IP地址。

clip_image002

圖1 靜態NAT應用示例

** 動態NAT(Dynamic NAT)

動態NAT是把非註冊IP地址映射到一組註冊IP地址,具體映射是哪兩組IP地址之間的映射關係,還要看所配置的具體公用IP地址池和通信時間。但最終非註冊IP地址與註冊IP地址還是一對一地進行映射

圖2是一個動態NAT應用的示例。內網中的三個IP地址與一個範圍爲213.18.123.100 到213.18.123.150的公網IP地址池進行映射。最終的結果是,192.168.32.10映射爲213.18.123.116,192.168.32.12映射爲213.18.123.112,而192.168.32.15映射爲213.18.123.125,……。

clip_image004

圖2 動態NAT應用示例

** 複用轉換(Overloading)NAT

複用NAT是動態NAT的一種形式。它是通過與IP地址的不同端口組合(普通路由器的端口映射類似於此),把多個非註冊IP地址映射到一個註冊IP地址。圖3是一個複用轉換NAT的應用示例。示例中本地網絡中的所有用戶通過路由器訪問公用網絡時,都將映射成同一個公網IP地址——213.18.123.100,只是所使用的端口不同而已(分別爲101、102、103號端口)。這對於公網IP地址比較緊張,而內網中又部署了多種應用服務器時特別有用,可以通過一個公網IP地址配置多個應用服務器。

clip_image006

圖3 複用轉換NAT應用示例

*交迭轉換NAT(Overlapping NAT)

交換轉換NAT是內、外部網絡IP地址的相互轉換方式。這種NAT方式出現在內、外網都是使用公網註冊IP地址時。當你的內部網絡主機使用的是註冊IP地址時,路由器必須維護一張映射表,以便路由器能夠對內、外網的兩個註冊IP地址進行交迭轉換。這兩方面的作用:一是可以避免內部主機真實的公網IP地址暴露在外網用戶,另一方面又可以在內網使用非專網絡IP地址與外網相同IP地址的用戶造成衝突。這種NAT既可以通過靜態NAT,又可以通過使用DNS和執行動態NAT來實現。

圖4顯示了一個交迭轉換NAT的應用示例。在私有網絡中,某主機分配了一個公網註冊的IP地址237.16.32.16,連接公網時通過路由器轉換成爲另一個公網註冊IP地址213.18.123.103。同時來自外網IP地址服務器上返回的消息又會通過路由器轉換成內網中分配的固定公網註冊IP地址237.16.32.10。

clip_image008

圖4 交迭轉換NAT應用示例

二、NAT術語

下面是與Cisco NAT技術密切相關的幾個術語描述,這對理解NAT技術工作原理非常重要。

n 內部網絡(Internal Network)

通常是指一個局域網,也稱殘餘域(stub domain)。殘餘域使用的是內部網絡IP地址,但可以是註冊的IP地址,也可以是非註冊的IP地址。使用非註冊IP地址的所有計算機都必須使用NAT轉換後再與其他網絡進行通信。

n 外部網絡(External Network)

將本地私有網絡以外的所有網絡都可看成是外部網絡。當然,外部網絡也可以是其他私有網絡,也可以是公用網絡,如互聯網。所以外部網絡上的用戶使用IP地址同樣既可以是註冊的,也可以是非註冊的。

n 本地地址(Local address)

在IP地址中,可以根據IP地址的作用範圍分爲本地地址和全局地址兩大類。本地地址就是隻有本地網絡用戶纔可以訪問,並僅作用於本地網絡的IP地址。這屬於非註冊類型的IP,不能在互聯網等公網中使用。

n 全局地址(Global address)

與本地地址相對應的IP地址。它是可以供全球用戶訪問的IP地址,當然是在公網中註冊了的IP合法地址。

n 內部本地地址(Inside local address)

這是本地地址的一種,是指分配給內部網絡主機的IP地址。這個IP地址是計算機操作系統或諸如DHCP之類的服務進行分配的,不是由NIC(Network Information Center,網絡信息中心)或者服務提供商統一分配的註冊IP地址。

n 外部本地地址(Outside local address)

這也是本地地址的另一種,是與內部本地地址性質一樣的外部網絡主機IP地址,也不是合法的互聯網IP地址。它是由外部網絡計算機操作系統或諸如DHCP之類的服務進行分配的。

n 內部全局地址(Inside global address)

這是全局地址的一種,是由NIC或服務提供商分配的註冊IP地址。對於外界網絡來說,它們扮演的是一個或多個內部本地址IP地址。

n 外部全局地址(Outside global address)

這也是全局地址的另一種,是與內部全局地址址性質一樣的外部網絡主機全局地址。對於外界網絡來說,它們扮演的也是一個或多個本地址IP地址。

三、NAT地址轉換原理

在殘餘域中的多數計算機是使用內部本地地址(Inside local addresses)進行通信的。在殘餘域中有些計算機需要與外部網絡進行頻繁通信時,就需要爲他們配置內部全局地址(Inside global addresses),這樣無需轉換就可以直接與外部網絡通信。

總體來說,NAT進行地址轉換的過程就是把本地地址轉換成全局地址的過程,無論數據包是從內部網絡發往外部網絡,還是從外部網絡發往內部網絡。不同的只是本地地址和全局地址所對應的網絡不同。具體如圖5所示。

clip_image010

圖5 NAT基本地址轉換原理

在以上轉換過程中,當數據包還在內部網絡位置時有一個作爲源地址的內部本地地址和一個作爲目的地址的外部本地地址;而當數據包被交換到外部網絡時,數據包的源地址就會轉變爲內部全局地址,而目的地址被轉變爲外部全局地址。

相反,當數據包是從外部網絡位置發來,並且仍位於外部網絡中時,則它的源地址就是外部全局地址,目的地址就是內部本局地址;而當數據包被交換到本地網絡時,源地址被轉變爲外部本地地址,目的地址被轉變爲內部本地地址。

如圖6所示的是以上詳細的地址轉換方式。

clip_image012

圖6 NAT的詳細地址轉換原理

數據包由內部網絡發往外部網絡時的基本轉換原理如下:

(1)當配置了內部本地地地址的殘餘域計算機要與外部網絡通信時,數據包到達NAT路由器後,經過普通的路由到達網關。數據包採用內部本地地址爲源地址,外部本地地址爲目的地址進行封裝。

(2)NAT路由器先檢查在路由表中是否有包含數據包目的地址的路由表項。如果沒有與目的地址相匹配的路由表頂,則該數據包被丟棄。如果有與目的地址相匹配的路由表項,則路由器檢驗數據包是否是從內部網絡發往外部網絡的,並且檢驗數據包是否與已配置的NAT匹配。然後,路由器檢查地址轉換表,看是否有包含內部本地地址和內部全局地址的NAT表項。如果找到了,則把數據包的源地址用內部本地全局地址替換;如果僅配置了靜態NAT,而沒有與數據包匹配的靜態NAT表項,則數據包不被轉換,而直接被路由轉發。

(3)路由器使用內部全局地址,把數據包發往目的地址。

當數據包是從公用網絡發往內部網絡時,NAT的基本轉換原理如下:

(1)公用網絡上的計算機發送數據包到私用網絡時,採用源地址是外部全局地址,目的地址爲內部全局地址進行封裝。

(2)當數據包到達內部網絡中,NAT路由器查找地址轉換表和目的地址,映射到殘餘域(私有內部網絡)中的計算機。

(2)如果存在匹配的NAT表項,則路由器把內部全局地址轉換成內部本地地址,然後在發往目的計算機前檢查路由表。如果沒有發現與之匹配的NAT表項,數據包不被轉換而直接檢查與目的地址匹配的路由表。如果沒有發現與目的地址路由表項,則數據包將被丟棄。


轉自:http://winda.blog.51cto.com/55153/241596

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章