采用網(wǎng)絡(luò)地址翻譯(NAT,etwork Address Translation)可以減少對(duì)合法注冊(cè)地址的需求。簡(jiǎn)單地說(shuō),NAT就是在內(nèi)部專用網(wǎng)絡(luò)中使用內(nèi)部地址(不可路由),而當(dāng)內(nèi)部節(jié)點(diǎn)要與外界網(wǎng)絡(luò)發(fā)生聯(lián)系時(shí),就在邊緣路由器或者防火墻處,將內(nèi)部地址替換成全局地址,即可路由的合法注冊(cè)地址,從而在外部公共網(wǎng)上正常使用,其具體的做法是把IP包內(nèi)的地址域用合法的IP地址來(lái)替換。
在任一時(shí)刻,如果內(nèi)部網(wǎng)絡(luò)中只有少數(shù)節(jié)點(diǎn)與外界建立連接,那么就只有少數(shù)的內(nèi)部地址需要被轉(zhuǎn)化成合法地址,從而減少對(duì)合法地址的需求。同時(shí)還可以使多個(gè)內(nèi)部節(jié)點(diǎn)共享一個(gè)外部地址,使用端口進(jìn)行區(qū)分(NAPT),這樣就能更有效地節(jié)約合法地址。
利用雙向NAT轉(zhuǎn)換技術(shù),還可隱藏內(nèi)部真實(shí)的網(wǎng)絡(luò)地址,降低黑客入侵的成功率。在內(nèi)部網(wǎng)絡(luò)通過內(nèi)部網(wǎng)卡訪問外部網(wǎng)絡(luò)時(shí)將產(chǎn)生一個(gè)映射記錄。系統(tǒng)將外出的源地址和源端口映射為一個(gè)偽裝的地址和端口,讓這個(gè)偽裝的地址和端口通過外部網(wǎng)卡與外部網(wǎng)絡(luò)連接,這樣對(duì)外就隱藏了真實(shí)的內(nèi)部網(wǎng)絡(luò)地址。在外部網(wǎng)絡(luò)通過外部網(wǎng)卡訪問內(nèi)部網(wǎng)絡(luò)時(shí),它并不知道內(nèi)部網(wǎng)絡(luò)的連接情況,而只是通過一個(gè)開放的IP地址和端口來(lái)請(qǐng)求訪問。
NAT功能通常被集成到路由器、防火墻、ISDN路由器或者單獨(dú)的NAT設(shè)備中。NAT設(shè)備維護(hù)一個(gè)狀態(tài)表,用來(lái)把內(nèi)部的口地址映射到合法的IP地址上去。每個(gè)包在NAT設(shè)備中都被翻譯成正確的IP地址發(fā)往下一級(jí),這雖然會(huì)給處理器帶來(lái)了一定的負(fù)擔(dān),但對(duì)于一般的網(wǎng)絡(luò)來(lái)說(shuō)是微不足道的。
需要注意的是,NAT并不是一種有安全保證的方案,它不能提供類似防火墻、包過濾、隧道等技術(shù)的安全性,僅僅在包的最外層改變IP地址。
NAT有靜態(tài)轉(zhuǎn)換NAT(Static NAT)、動(dòng)態(tài)轉(zhuǎn)換(Pooled NAT)和端口地址轉(zhuǎn)換三種類型。
靜態(tài)轉(zhuǎn)換NAT是最簡(jiǎn)單的一種轉(zhuǎn)換方式,它在NAT表中為每一個(gè)需要轉(zhuǎn)換的內(nèi)部地址創(chuàng)建了固定的轉(zhuǎn)換條目,映射了惟一的全局地址。內(nèi)部地址與全局地址一一對(duì)應(yīng)。每當(dāng)內(nèi)部節(jié)點(diǎn)與外界通信時(shí),內(nèi)部地址就會(huì)轉(zhuǎn)化為對(duì)應(yīng)的全局地址
動(dòng)態(tài)轉(zhuǎn)換(亦稱NAT池)增加了網(wǎng)絡(luò)管理的復(fù)雜性,但也提供了很大的靈活性。它將可用的全局地址地址集定義成NAT池(NAT Poo1)。對(duì)于要與外界進(jìn)行通信的內(nèi)部節(jié)點(diǎn),如果還沒有建立轉(zhuǎn)換映射,邊緣路由器或者防火墻將會(huì)動(dòng)態(tài)地從NAT池中選擇全局地址對(duì)內(nèi)部地址進(jìn)行轉(zhuǎn)化。每個(gè)轉(zhuǎn)換條目在連接建立時(shí)動(dòng)態(tài)建立,而在連接終止時(shí)會(huì)被回收。這樣,網(wǎng)絡(luò)的靈活性大大增強(qiáng)了,所需要的全局地址進(jìn)一步減少。值得注意的是,當(dāng)NAT池中的全局地址被全部占用以后,以后的地址轉(zhuǎn)換申請(qǐng)會(huì)被拒絕。這樣會(huì)造成網(wǎng)絡(luò)連通性的問題。為了解決這個(gè)問題,許多有NAT功能的路由器有超時(shí)配置功能。在配置成開始的指定時(shí)間后刪除當(dāng)前的NAT進(jìn)程,為后續(xù)的NAT申請(qǐng)預(yù)留出外部IP地址。通過試驗(yàn)表明,一般的外部連接不會(huì)很長(zhǎng),所以短的時(shí)間閾值也可以接受。當(dāng)然用戶可以自行調(diào)節(jié)時(shí)間閾值,以滿足各自的需求。
采用NAT池意味著可以在內(nèi)部網(wǎng)中定義很多的內(nèi)部用戶,通過動(dòng)態(tài)分配的辦法,共享很少的幾個(gè)外部IP地址。而靜態(tài)NAT則只能形成一一對(duì)應(yīng)的固定映射方式。NAT池在提供很大靈活性的同時(shí),也影響到網(wǎng)絡(luò)原有的一些管理功能。例如,SNMP管理站利用IP地址來(lái)跟蹤設(shè)備的運(yùn)行情況。但使用NAT之后,意味著那些被翻譯的地址對(duì)應(yīng)的內(nèi)部地址是變化的,同一地址今天可能對(duì)應(yīng)一臺(tái)工作站,明天就可能對(duì)應(yīng)一臺(tái)服務(wù)器,這給SNMP管理帶來(lái)了麻煩。一個(gè)可行的解決方案是把劃分給NAT池的那部分地址在SNMP管理平臺(tái)上標(biāo)記出來(lái),對(duì)于這些不響應(yīng)管理信號(hào)的地址不予報(bào)警,如同它們被關(guān)掉了一樣。
端口地址轉(zhuǎn)換(NAPT,Network Address Port Translation)是動(dòng)態(tài)轉(zhuǎn)換的一種變形。它可以使多個(gè)內(nèi)部節(jié)點(diǎn)共享一個(gè)全局IP地址,而使用源和目的節(jié)點(diǎn)的TCP/UDP的端口號(hào)來(lái)區(qū)分NAT表中的轉(zhuǎn)換條目及內(nèi)部地址。這樣,就更節(jié)省了地址空間。假設(shè)內(nèi)部節(jié)點(diǎn)10.1.1.3,10.1.1.2都用源端口1723向外發(fā)送數(shù)據(jù)包。NAPT路由器把這兩個(gè)內(nèi)部地址都轉(zhuǎn)換成全局地址192.168.2.2,而使用不同的源端口號(hào):1492,1723。當(dāng)接收方收到的源端口號(hào)為1492,則返回的數(shù)據(jù)包在邊緣網(wǎng)關(guān)處,目的地址和端口被轉(zhuǎn)換為10.1.1.3:1723;而接收到的源端口號(hào)為1723,目的地址被映射到10.1.1.2:1723。在以上的映射轉(zhuǎn)換中,只使用了IP地址的轉(zhuǎn)換條目被稱為簡(jiǎn)單條目,而包含IP地址和TCP/UDP端口號(hào)的轉(zhuǎn)換條目被稱為擴(kuò)展條目。
以上所有的地址轉(zhuǎn)換功能,都是由防火墻或者邊緣路由器(即連接內(nèi)部網(wǎng)絡(luò)和公用網(wǎng)絡(luò)的路由器)完成的,而對(duì)于通信的各節(jié)點(diǎn),無(wú)論是內(nèi)部還是外部的,都是透明的。通常情況下,NAT用于共享一個(gè)IP地址發(fā)出流向外部網(wǎng)絡(luò)的數(shù)據(jù)流,而不接受外部網(wǎng)絡(luò)向內(nèi)部網(wǎng)絡(luò)發(fā)出的連接請(qǐng)求的地方,比如多節(jié)點(diǎn)用戶、遠(yuǎn)程的工作點(diǎn)、小型商業(yè)用戶等。具體地說(shuō),就是通過ISDN、DSL(Digital Subscriber Line)、cable modem連接的小型局域網(wǎng)。雙向的靜態(tài)NAT/NAPT常被安裝在有防火墻的大型企業(yè)使用。另外,當(dāng)ISP的地址發(fā)生變化時(shí),如果企業(yè)不想改變自己的地址規(guī)劃,也會(huì)用到NAT技術(shù)。
NAT技術(shù)可以節(jié)約地址空間,簡(jiǎn)化配置,使網(wǎng)絡(luò)規(guī)劃更靈活。但是,它對(duì)網(wǎng)絡(luò)應(yīng)用帶來(lái)了一定的影響,也給網(wǎng)絡(luò)管理帶來(lái)了一定的復(fù)雜性。