第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)完成本章內(nèi)容以后,您將能夠: ①了解地址轉(zhuǎn)換(NAT)的作用和工作原理②了解各種NAT 術(shù)語③理解NAT 的各種應(yīng)用:負(fù)載均衡和處理地址交叉 ④掌握NAT 的配置和排
第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
完成本章內(nèi)容以后,您將能夠: ①了解地址轉(zhuǎn)換(NAT)的作用和工作原理
②了解各種NAT 術(shù)語
③理解NAT 的各種應(yīng)用:負(fù)載均衡和處理地址交叉 ④掌握NAT 的配置和排錯(cuò)
441
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
隨著接入因特網(wǎng)的計(jì)算機(jī)數(shù)量的不斷猛增,IP 地址資源也就愈加顯得捉襟見肘。事實(shí)上,一般用戶幾乎申請(qǐng)不到整段的公網(wǎng)C 類地址。在ISP 那里,即使是擁有幾百臺(tái)計(jì)算機(jī)的大型局域網(wǎng)用戶,也不過只有幾個(gè)或十幾個(gè)公網(wǎng)IP 地址。顯然,當(dāng)他們申請(qǐng)公網(wǎng)IP 地址 時(shí),所分配的地址數(shù)量遠(yuǎn)遠(yuǎn)不能滿足網(wǎng)絡(luò)用戶的需求,為了解決這個(gè)問題,就產(chǎn)生了網(wǎng)絡(luò)地址轉(zhuǎn)換NAT(Network Address Translation)技術(shù)。
NAT技術(shù)允許使用私有IP 地址的企業(yè)局域網(wǎng)可以透明地連接到像因特網(wǎng)這樣的公用網(wǎng)絡(luò)上,無需內(nèi)部主機(jī)擁有注冊(cè)的并且是越來越缺乏的公網(wǎng)IP 地址,從而節(jié)約公網(wǎng)IP 地址資 源,增加了企業(yè)局域網(wǎng)內(nèi)部IP 地址劃分的靈活性。
之前學(xué)習(xí)的交換和路由技術(shù)使我們能夠組建企業(yè)網(wǎng)絡(luò),在本章,我們就將學(xué)習(xí)有關(guān)NAT 的概念和配置方法。學(xué)習(xí)完本章之后,將能夠理解NAT 的工作原理和對(duì)NAT 進(jìn)行配置,使企業(yè)網(wǎng)絡(luò)能夠在申請(qǐng)不到足夠的合法公網(wǎng)IP 地址的情況下,也依然能夠連接到因特網(wǎng)上,并對(duì)一般的NAT 故障進(jìn)行檢查與排除。
17.1 NAT 概念和術(shù)語
17.1.1 NA T 概述
1.NA T 的應(yīng)用
網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT) 通過將內(nèi)部網(wǎng)絡(luò)的私有IP 地址翻譯成全球唯一的公網(wǎng)IP 地址,使內(nèi)部網(wǎng)絡(luò)可以連接到互聯(lián)網(wǎng)等外部網(wǎng)絡(luò)上,廣泛應(yīng)用于各種類型因特網(wǎng)接入方式和各種類型的網(wǎng)絡(luò)中。原因很簡單,NAT 不僅解決了IP 地址不足的問題,而且還能夠隱藏內(nèi)部網(wǎng)絡(luò)的細(xì)節(jié),避免來自網(wǎng)絡(luò)外部的攻擊,起到一定的安全作用。
雖然NAT 可以借助于某些代理服務(wù)器來實(shí)現(xiàn),但考慮到運(yùn)算成本和網(wǎng)絡(luò)性能,很多時(shí) 候都是在路由器上實(shí)現(xiàn)的。
借助于NAT ,私有保留地址的內(nèi)部網(wǎng)絡(luò)通過路由器發(fā)送數(shù)據(jù)包時(shí),私有地址被轉(zhuǎn)換成合法的IP 地址,一個(gè)局域網(wǎng)只需要少量地址(甚至是1個(gè)) ,即可實(shí)現(xiàn)使用了私有地址的網(wǎng)絡(luò)內(nèi)所有計(jì)算機(jī)與因特網(wǎng)的通信需求。
NAT將自動(dòng)修改IP 包頭中的源IP 地址和目的IP 地址,IP 地址校驗(yàn)則在NAT 處理過程中自動(dòng)完成。有一些應(yīng)用程序?qū)⒃碔P 地址嵌入到IP 數(shù)據(jù)包的數(shù)據(jù)部分中,所以還需要同時(shí)對(duì)數(shù)據(jù)部分進(jìn)行修改,以匹配IP 頭中已經(jīng)修改過的源IP 地址。否則,在包的數(shù)據(jù)部分嵌入了IP 地址的應(yīng)用程序不能正常工作。令人遺憾的是,Cisco 的NAT 雖然可以處理很多應(yīng)用,但它還是有一些應(yīng)用無法支持。
2.NA T 的實(shí)現(xiàn)方式
NAT 的實(shí)現(xiàn)方式有3種:
◇靜態(tài)轉(zhuǎn)換(Static Translation)
◇動(dòng)態(tài)轉(zhuǎn)換(Dynamic Translation)
◇端口多路復(fù)用(Port Address Translation,PAT)
442
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
靜態(tài)轉(zhuǎn)換就是將內(nèi)部網(wǎng)絡(luò)的私有IP 地址轉(zhuǎn)換為公有合法的IP 地址時(shí),IP 地址的對(duì)應(yīng)關(guān)系是一對(duì)一的,是不變的,即某個(gè)私有IP 地址只轉(zhuǎn)換為某個(gè)固定的公有IP 地址。借助于靜態(tài)轉(zhuǎn)換,能實(shí)現(xiàn)外部網(wǎng)絡(luò)對(duì)內(nèi)部網(wǎng)絡(luò)中某些特定設(shè)備(如服務(wù)器) 的訪問。
動(dòng)態(tài)轉(zhuǎn)換是指將內(nèi)部網(wǎng)絡(luò)的私有地址轉(zhuǎn)換為公有地址時(shí),IP 地址對(duì)應(yīng)關(guān)系是不確定的、隨機(jī)的,所有被授權(quán)訪問因特網(wǎng)的私有地址可隨機(jī)轉(zhuǎn)換為任何指定的合法地址。也就是說,只要指定哪些內(nèi)部地址可以進(jìn)行NAT 轉(zhuǎn)換,以及哪些可用的合法IP 地址可以作為外部地址時(shí),就可以進(jìn)行動(dòng)態(tài)轉(zhuǎn)換了。動(dòng)態(tài)轉(zhuǎn)換也可以使用多個(gè)合法地址集。當(dāng)ISP 提供的合法地址少于網(wǎng)絡(luò)內(nèi)部的計(jì)算機(jī)數(shù)量時(shí),可以采用動(dòng)態(tài)轉(zhuǎn)換的方式。
端口多路復(fù)用是改變外出數(shù)據(jù)包的源IP 地址和源端口并進(jìn)行端口轉(zhuǎn)換,即端口地址轉(zhuǎn)換采用端口多路復(fù)用方式。內(nèi)部網(wǎng)絡(luò)的所有主機(jī)均可共享一個(gè)合法外部IP 地址實(shí)現(xiàn)因特網(wǎng)的訪問,從而可以最大限度地節(jié)約IP 地址資源。同時(shí),又可以隱藏網(wǎng)絡(luò)內(nèi)部的所有主機(jī),以有效地避免來自因特網(wǎng)的攻擊。因此,目前網(wǎng)絡(luò)中使用最多的就是端口多路復(fù)用方式。
17.1.2 NA T 的術(shù)語
前面曾經(jīng)說明,目前IP 地址缺乏是公用網(wǎng)絡(luò)所面臨的一個(gè)關(guān)鍵問題,為能最大限度地利用用戶的合法IP 地址,產(chǎn)生了NAT 技術(shù)。
NAT 功能可以讓使用私有(保留) 地址的網(wǎng)絡(luò)與公用網(wǎng)絡(luò)(如因特網(wǎng)) 進(jìn)行連接。使用私有地址的“內(nèi)部”網(wǎng)絡(luò)通過NAT 路由器發(fā)送數(shù)據(jù)包時(shí),私有地址被轉(zhuǎn)換成合法的IP 地址,因此,這些數(shù)據(jù)包可以發(fā)送到諸如因特網(wǎng)這樣的公用網(wǎng)絡(luò)上。以前只有防火墻擁有這些功能,現(xiàn)在,路由器基本都擁有該功能。
圖17.1展示了一個(gè)用NAT 處理地址交叉的實(shí)例,從這個(gè)例子可以很好地說明NAT 的工作過程和所使用的各種地址術(shù)語。在這個(gè)實(shí)例中,原來兩個(gè)獨(dú)立的網(wǎng)絡(luò)要合并,如圖17.2所示,A 公司和B 公司進(jìn)行合并,組成了AB 公司。遺憾的是,當(dāng)初建設(shè)A 公司和B 公司的網(wǎng)絡(luò)時(shí),網(wǎng)絡(luò)設(shè)計(jì)者都使用了10.1.1.0這個(gè)地址空間。因此,會(huì)存在很多A 公司的網(wǎng)絡(luò)設(shè)備與B 公司網(wǎng)絡(luò)設(shè)備配置有相同IP 地址的情況,即發(fā)生了地址的交叉。
圖17.1 NA T 示例
443
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
圖17.2 公司合并導(dǎo)致IP 地址沖突
對(duì)于這些情況,最好的解決辦法就是重新規(guī)劃這個(gè)合并的網(wǎng)絡(luò)。不過,這個(gè)重新分配地址的過程相當(dāng)麻煩。NAT 可以作為連接兩個(gè)網(wǎng)絡(luò)的過渡方案,對(duì)地址交叉的情況進(jìn)行轉(zhuǎn)換處理,直到IP 地址完成重新分配計(jì)劃。
------------------------------------------------------------------------------- 提示:在上面這種應(yīng)用中,NAT 被當(dāng)作過渡方案。在一個(gè)網(wǎng)絡(luò)中允許地址沖突是不得已的選擇。這將給維護(hù)和配置帶來很多麻煩。
-------------------------------------------------------------------------------
主機(jī)A 所在的內(nèi)部子網(wǎng)和外部子網(wǎng)使用相同的IP 地址段,因此內(nèi)部子網(wǎng)和外部子網(wǎng)通信時(shí)必須進(jìn)行地址的轉(zhuǎn)換。主機(jī)A 的內(nèi)部局部地址10.1.1.1必須轉(zhuǎn)換成內(nèi)部全局地址192.2.2.1才能訪問外部子網(wǎng),而外部子網(wǎng)的主機(jī)B 的外部全局地址10.1.1.1也只有轉(zhuǎn)換成外部局部地址193.3.3.1,才能夠被主機(jī)A 所識(shí)別,兩者之間的通信才能建立起來。
對(duì)于在內(nèi)部主機(jī)A 和外部主機(jī)B 之間傳輸?shù)拿總€(gè)數(shù)據(jù)包,邊界路由器都會(huì)進(jìn)行檢查:
◇對(duì)于到內(nèi)部區(qū)域的數(shù)據(jù)包,會(huì)用內(nèi)部局部地址替換目的地址,外部局部地址替換源地址。
◇對(duì)于到外部區(qū)域的數(shù)據(jù)包,會(huì)用內(nèi)部全局地址替換源地址,外部全局地址替換目的地址。
也就是說,邊界路由器為了避免地址的重疊,在這里做了兩個(gè)方向的地址轉(zhuǎn)換。
結(jié)合這個(gè)實(shí)例,來介紹NA T 的一些相關(guān)術(shù)語:
◇內(nèi)部局部IP 地址(inside local IP address):在內(nèi)部網(wǎng)絡(luò)中分配給主機(jī)的私有IP 地址。該地址是從RFC 1918(私有因特網(wǎng)空間地址分配) 所定義的私有地址空間中分配的,或者隨機(jī)挑選的。
◇內(nèi)部全局IP 地址(inside global IP address):一個(gè)合法的IP 地址(由NIC 或者網(wǎng)絡(luò)服務(wù)提供商所分配) 。它對(duì)外代表一個(gè)或多個(gè)內(nèi)部局部IP 地址。該地址通常是從全球統(tǒng)一可尋址的地址空間中分配的,一般由因特網(wǎng)服務(wù)提供商(ISP)提供。
◇外部全局IP 地址(outside global IP address) :由其所有者給外部網(wǎng)絡(luò)上的主機(jī)分配的IP 地址。該地址通常也是從全球統(tǒng)一可尋址的地址空間中分配的。
444
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
◇外部局部IP 地址(outside local IP address):外部主機(jī)表現(xiàn)在內(nèi)部網(wǎng)絡(luò)的IP 地址。這一地址是從內(nèi)部可尋址的地址空間中分配的,很可能是從諸如RFCl918中所定義的保留地址空間中分配的。
◇簡單轉(zhuǎn)換條目(simple translation entry) :將一個(gè)IP 地址映射到另一個(gè)IP 地址的轉(zhuǎn)換條目。
◇擴(kuò)展轉(zhuǎn)換條目(extended translation entry) :映射IP 地址和端口到另一對(duì)IP 地址和端口的條目。
可以考慮這樣一個(gè)例子,我們出門的時(shí)候穿皮鞋,回到家里就要換上拖鞋,而且家里還要專門為來訪的客人準(zhǔn)備一雙拖鞋,客人來了也需要脫下皮鞋換上拖鞋。
其實(shí),NAT 地址轉(zhuǎn)換就好像這個(gè)過程,這些地址就是我們穿的鞋子。內(nèi)部局部地址就是我們回家之后在家里穿的拖鞋,只能在家里穿不能穿出門,而內(nèi)部全局地址則是我們出門要穿的皮鞋,出門換上進(jìn)家脫下來;外部地址就是來家里拜訪的客人所穿的鞋子,外部全局地址是客人穿來的皮鞋,到了我們家里要換上我們專門為他準(zhǔn)備的拖鞋——外部局部地址,而客人離開的時(shí)候,就得換回他自己的皮鞋才能出門。其中,我們自己的皮鞋和客人的皮鞋不能混穿,我們自己的拖鞋和客人的拖鞋不能混穿。這就是4種類型的地址之間的關(guān)系。
17.1.3 NA T 的優(yōu)勢(shì)和缺點(diǎn)
NA T 的典型優(yōu)勢(shì)如下:
◇NAT 允許企業(yè)內(nèi)部網(wǎng)使用私有地址,并通過設(shè)置合法地址集,使內(nèi)部網(wǎng)可以與因特網(wǎng)進(jìn)行通信,從而達(dá)到節(jié)省合法注冊(cè)地址的目的。
◇NAT 可以減少規(guī)劃地址集時(shí)地址重疊情況的發(fā)生。如果地址方案最初是在私有網(wǎng)絡(luò)中建立的,因?yàn)樗慌c外部網(wǎng)絡(luò)通信,所以有可能使用了保留地址以外的地址,而后來,該網(wǎng)絡(luò)又想要連接到公用網(wǎng)絡(luò)。在這種情況下,如果不做地址轉(zhuǎn)換,就會(huì)產(chǎn)生地址沖突。
◇NAT 增強(qiáng)了內(nèi)部網(wǎng)絡(luò)與公用網(wǎng)絡(luò)連接時(shí)的靈活性。它可以通過使用多地址集、備份地址集和負(fù)載分擔(dān)/均衡地址集,來確??煽康墓镁W(wǎng)絡(luò)連接。對(duì)于網(wǎng)絡(luò)設(shè)計(jì)者來說,內(nèi)部網(wǎng)絡(luò)的設(shè)計(jì)也會(huì)變得比較容易,因?yàn)樽龅刂芬?guī)劃時(shí)可以有更多的靈活性。
◇NAT 支持地址重疊。將私有網(wǎng)絡(luò)地址轉(zhuǎn)換為公用網(wǎng)絡(luò)地址,一般需要對(duì)原地址重新設(shè)置地址,所需的工作量與需要設(shè)置新地址的主機(jī)數(shù)有關(guān)。如果使用NAT 技術(shù),就可以不對(duì)原私有網(wǎng)絡(luò)內(nèi)部的地址進(jìn)行改動(dòng),同時(shí),還可以對(duì)外部網(wǎng)絡(luò)支持新的公用地址方案。
當(dāng)然,NAT 也不是沒有缺點(diǎn)。用于地址轉(zhuǎn)換的處理過程會(huì)帶來功能和性能上的一些損失,特別在IP 包頭外包含著發(fā)送IP 地址信息的任何協(xié)議或者應(yīng)用的情況下。
NA T 典型缺點(diǎn)如下:
◇NAT 會(huì)使延遲增大。因?yàn)橐D(zhuǎn)換每個(gè)數(shù)據(jù)包報(bào)頭中的IP 地址,自然就會(huì)增加包轉(zhuǎn)發(fā)時(shí)延。又因?yàn)楝F(xiàn)在應(yīng)用NAT 技術(shù)時(shí),路由器只能用處理器交換方式進(jìn)行包轉(zhuǎn)發(fā),所以,運(yùn)
445
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
行性能也是要考慮的一個(gè)方面。CPU 必須查看每一個(gè)數(shù)據(jù)包,以決定是否要進(jìn)行地址轉(zhuǎn)換,然后改變IP 包頭,甚至TCP 頭,這一過程不太可能輕易地利用高速緩存。
◇NAT 增加了配置和排錯(cuò)的復(fù)雜性。使用和實(shí)施NAT 時(shí),無法實(shí)現(xiàn)對(duì)IP 包端對(duì)端的路徑跟蹤。在經(jīng)過了使用NAT 地址轉(zhuǎn)換的多跳之后,對(duì)數(shù)據(jù)包的路徑跟蹤將變得十分困難。然而,這樣卻可以提供更安全的網(wǎng)絡(luò)鏈路,因?yàn)楹诳拖胍櫥颢@得數(shù)據(jù)包的初始來源或目的地址也將變得非常困難,甚至無法獲得。
◇NAT 也可能會(huì)使某些需要使用內(nèi)嵌IP 地址的應(yīng)用不能正常工作,因?yàn)樗[藏了端到端的IP 地址。某些直接使用IP 地址而不通過合法域名進(jìn)行尋址的應(yīng)用,可能也無法與外部網(wǎng)絡(luò)資源進(jìn)行通信,這個(gè)問題有時(shí)可以通過實(shí)施靜態(tài)NAT 映射來避免。
17.2 NAT 的應(yīng)用
17.2.1 NA T 支持的數(shù)據(jù)流
對(duì)于通過NAT 發(fā)送數(shù)據(jù)包的終端系統(tǒng)來說,NAT 應(yīng)該是半透明的。但很多應(yīng)用(商業(yè)應(yīng)用,或者作為TCP/IP協(xié)議集一部分的應(yīng)用) 都使用IP 地址,數(shù)據(jù)字段的信息可能與IP 地址有關(guān),或者數(shù)據(jù)字段中內(nèi)嵌IP 地址。如果NAT 轉(zhuǎn)換了IP 包數(shù)據(jù)部分中的地址,但不知道對(duì)數(shù)據(jù)將要造成的影響,該應(yīng)用就有可能被破壞。
表17-1列出了Cisco NAT 設(shè)備所支持的應(yīng)用。對(duì)應(yīng)列出了在應(yīng)用數(shù)據(jù)中攜帶IP 地址信息的應(yīng)用,NAT 知道這些應(yīng)用,并且會(huì)對(duì)這些應(yīng)用的數(shù)據(jù)給予適當(dāng)修改。
表17-1 NAT支持的數(shù)據(jù)流
17.2.2 轉(zhuǎn)換內(nèi)部LAN 的地址
使用NAT 轉(zhuǎn)換內(nèi)部局部地址,就是在內(nèi)部局部地址和內(nèi)部全局地址之間建立一個(gè)映射關(guān)系。在下面的例子中,內(nèi)部局域網(wǎng)網(wǎng)段的地址10.1.1.0/24經(jīng)過NAT ,轉(zhuǎn)換成192.168.2.0/24的內(nèi)部全局地址。
446
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
在圖17.3中,NAT 用于將內(nèi)部私有地址轉(zhuǎn)換為外部合法地址,從中可以看到NAT 的 操作運(yùn)行過程。
圖17.3 內(nèi)部地址轉(zhuǎn)換過程
下面的步驟編號(hào)與圖17.3中標(biāo)出的NAT 操作步驟編號(hào)是一致的:
(1)網(wǎng)絡(luò)內(nèi)部主機(jī)10.1.1.1上的用戶建立到外部主機(jī)B 的一條連接。
(2)邊界路由器從主機(jī)10.1.1.1接收到第一個(gè)數(shù)據(jù)包時(shí),將檢查NAT 轉(zhuǎn)換表。
(3)如果已為該地址配置了靜態(tài)地址轉(zhuǎn)換,或者,該地址的動(dòng)態(tài)地址轉(zhuǎn)換已經(jīng)建立,那么,路由器將繼續(xù)進(jìn)行步驟4。否則,路由器會(huì)決定對(duì)該地址10.1.1.1進(jìn)行轉(zhuǎn)換;路由器將為其從動(dòng)態(tài)地址集中分配一個(gè)合法地址,并建立從內(nèi)部局部地址10.1.1.1到內(nèi)部全局地址(例如192.168.2.2) 的映射。這種類型的轉(zhuǎn)換條目稱為一個(gè)簡單條目。
(4)邊界路由器用所選的內(nèi)部全局地址192.168.2.2來替換內(nèi)部局部IP 地址10.1.1.1, 并轉(zhuǎn)發(fā)該數(shù)據(jù)包。
(5)主機(jī)B 收到該數(shù)據(jù)包,并且用目的地址192.168.2.2對(duì)內(nèi)部主機(jī)10.1.1.1進(jìn)行應(yīng)答。
(6)當(dāng)邊界路由器接收到目的地址為內(nèi)部全局地址的數(shù)據(jù)包時(shí),路由器將用該內(nèi)部全局地址通過NAT 轉(zhuǎn)換表查找出內(nèi)部局部地址。然后,路由器將數(shù)據(jù)包中的目的地址替換成10.1.1.1的內(nèi)部局部地址,并將數(shù)據(jù)包轉(zhuǎn)發(fā)到內(nèi)部主機(jī)10.1.1.1。主機(jī)10.1.1.1接收該數(shù)據(jù)包,并繼續(xù)該會(huì)話。對(duì)于每個(gè)數(shù)據(jù)包,路由器都將執(zhí)行步驟2到步驟5的操作。
17.2.3 復(fù)用內(nèi)部LAN 的地址(PAT)
復(fù)用內(nèi)部的全局地址,就是通過準(zhǔn)許對(duì)TCP 連接或UDP 會(huì)話的端口進(jìn)行轉(zhuǎn)換,從而節(jié)省內(nèi)部全局地址集中的合法地址。前面已經(jīng)介紹,當(dāng)多個(gè)不同的內(nèi)部局部地址映射到同一個(gè)內(nèi)部全局地址時(shí),使用各個(gè)內(nèi)部主機(jī)的TCP 或UDP 端口號(hào)來區(qū)分它們。
447
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
在圖17.4中,將一個(gè)內(nèi)部全局地址用于同時(shí)代表多個(gè)內(nèi)部局部地址,這里示意了NAT 的操作運(yùn)行過程。圖中,將內(nèi)部局部地址1O.1.1.0/24復(fù)用到192.168.2.2這個(gè)地址上。在這種情況下,NAT 將采用擴(kuò)展的轉(zhuǎn)換條目表。在該表中,IP 地址和端口號(hào)的組合可以唯一地 區(qū)分各個(gè)內(nèi)部主機(jī)。用端口來區(qū)分內(nèi)部主機(jī),實(shí)際上就是端口地址轉(zhuǎn)換(PAT),PAT 是NAT 的一個(gè)子集。
圖17.4 地址復(fù)用
下面所列的步驟與圖17.3中的NAT 操作步驟編號(hào)是一致的:
(1)網(wǎng)絡(luò)內(nèi)部主機(jī)10.1.1.1上的用戶建立到外部主機(jī)B 的一條連接。
(2)邊界路由器從內(nèi)部主機(jī)10.1.1.1接收到第一個(gè)數(shù)據(jù)包時(shí),會(huì)檢查其NAT 轉(zhuǎn)換表。
(3)如果還沒有為該內(nèi)部地址建立地址轉(zhuǎn)換映射,路由器會(huì)決定對(duì)該地址進(jìn)行轉(zhuǎn)換;路由器為該內(nèi)部局部地址10.1.1.1建立到內(nèi)部全局合法地址(如192.168.2.2) 的映射。
(4)如果啟用了地址復(fù)用功能,而且已經(jīng)有其他地址轉(zhuǎn)換映射存在,那么,路由器將再次啟用內(nèi)部全局地址192.168.2.2,為該內(nèi)部局部地址建立映射。同時(shí)會(huì)為該映射與其他轉(zhuǎn)換條目進(jìn)行區(qū)分而保留足夠的信息。這種類型的轉(zhuǎn)換條目(包含IP 地址和端口號(hào)) 稱為擴(kuò)展條目。
(5)邊界路由器用所選的內(nèi)部全局地址192.168.2.2來替換內(nèi)部局部IP 地址1O .1.1.1, 并轉(zhuǎn)發(fā)該數(shù)據(jù)包。
(6)主機(jī)B 收到該數(shù)據(jù)包,并用目的地址192.168.2.2來對(duì)內(nèi)部主機(jī)1O.1.1.1進(jìn)行應(yīng)答。
(7)當(dāng)邊界路由器接收到目的地址為內(nèi)部全局IP 地址的數(shù)據(jù)包時(shí),路由器將用內(nèi)部全局地址及協(xié)議端口號(hào)和外部地址及端口號(hào),從NAT 轉(zhuǎn)換表中查找出對(duì)應(yīng)的內(nèi)部局部地址和端口號(hào)。然后將目的地址轉(zhuǎn)換成內(nèi)部局部地址1O.1.1.1,并將數(shù)據(jù)包轉(zhuǎn)發(fā)到該內(nèi)部主機(jī)。主機(jī)1O.1.1.1接收數(shù)據(jù)包并繼續(xù)該會(huì)話。對(duì)于每個(gè)數(shù)據(jù)包,路由器都將執(zhí)行步驟2和5的操作。
448
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
17.2.4 TCP 負(fù)載均衡
TCP 負(fù)載均衡是指利用NAT 技術(shù),用對(duì)外的IP 地址來代表多個(gè)同樣的服務(wù)器,就如同它們是一個(gè)服務(wù)器一樣。在圖17.5中,外部設(shè)備需要連接一個(gè)地址為10.1.1.127的服務(wù)器,TCP 的數(shù)據(jù)包發(fā)送給一個(gè)服務(wù)器組,該服務(wù)器組由同一個(gè)IP 地址10.1.1.127所代表,NAT 通過循環(huán)方式輪流轉(zhuǎn)換為3個(gè)相同服務(wù)器的實(shí)際地址。實(shí)際上,在內(nèi)部有3個(gè)與之相對(duì)應(yīng)的服務(wù)器,NAT 以循環(huán)方式輪流在它們之間分配會(huì)話。
在圖17.5中,NAT 用來將一臺(tái)虛擬主機(jī)映射到幾臺(tái)真實(shí)的主機(jī)上,利用NAT 實(shí)現(xiàn)TCP 負(fù)載均衡的操作運(yùn)行過程。
下列步驟詳細(xì)說明了如何利用NAT 來實(shí)現(xiàn)TCP 負(fù)載均衡。
(1)外部主機(jī)B(172.20.7.3)上的用戶建立一條到虛擬主機(jī)10.1.1.127的連接。
圖17.5 基于NA T 的TCP 負(fù)載均衡
(2)邊界路由器接到這個(gè)連接請(qǐng)求,為其建立一個(gè)新的地址映射:為該內(nèi)部全局IP 地址10.1.1.127分配下一個(gè)真實(shí)內(nèi)部主機(jī)地址(如10.1.1.1) 。
(3)邊界路由器用所選的真實(shí)內(nèi)部主機(jī)地址替換原目的地址,并轉(zhuǎn)發(fā)該數(shù)據(jù)包。
(4)內(nèi)部主機(jī)10.1.1.1接收到該數(shù)據(jù)包,并做出應(yīng)答。
(5)邊界路由器接收到應(yīng)答數(shù)據(jù)包,用內(nèi)部局部地址及端口號(hào)和外部地址及端口號(hào),從NAT 轉(zhuǎn)換表查找出對(duì)應(yīng)的內(nèi)部全局地址(虛擬主機(jī)地址) 和端口號(hào),然后將源地址轉(zhuǎn)換成虛擬主機(jī)地址,并轉(zhuǎn)發(fā)數(shù)據(jù)包。
(6)對(duì)于下一個(gè)連接請(qǐng)求,邊界路由器將為其分配另一個(gè)內(nèi)部局部地址,如10.1.1.2。
449
,第17章 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
------------------------------------------------------------------------------- 提示:基于NAT 的負(fù)載均衡是不健壯的。NAT 沒有辦法知道一個(gè)服務(wù)器什么時(shí)候會(huì)停機(jī)。即使某臺(tái)服務(wù)器已經(jīng)停機(jī),NAT 也是繼續(xù)將數(shù)據(jù)包發(fā)送給那個(gè)地址。因此,當(dāng)服務(wù)器出現(xiàn)故障或者離線時(shí),就會(huì)導(dǎo)致發(fā)送給這個(gè)服務(wù)器的數(shù)據(jù)包出現(xiàn)黑洞效應(yīng)。
-------------------------------------------------------------------------------
17.3 NAT 的配置
在配置網(wǎng)絡(luò)地址轉(zhuǎn)換過程之前,首先必須弄清楚內(nèi)部接口和外部接口,以及在哪個(gè)外部接口上啟用NAT 。通常情況下,連接到用戶內(nèi)部網(wǎng)絡(luò)的接口是NAT 內(nèi)部接口,而連接到外部網(wǎng)絡(luò)(如因特網(wǎng)) 的接口是NAT 外部接口。
17.3.1 靜態(tài)NA T 的配置
下面通過示例說明靜態(tài)NAT 的配置。假設(shè)內(nèi)部局域網(wǎng)使用的IP 地址為192.168.100.1~192.168.100.254,路由器局域網(wǎng)端口(默認(rèn)網(wǎng)關(guān)) 的IP 地址是192.168.100.1,子網(wǎng)掩碼為255.255.255.0。
網(wǎng)絡(luò)分配的合法IP 地址范圍是61.159.62.128--61.159.62.135,路由器在廣域網(wǎng)的地址是61.159.62.129,子網(wǎng)掩碼是255.255.255.248。
可用于地址轉(zhuǎn)換的地址是61.159.62.130~61.159.62.134,如圖17.6和圖17.7所示。
圖17.6 NA T 靜態(tài)轉(zhuǎn)換網(wǎng)絡(luò)結(jié)構(gòu)示意
450