關(guān)于NAT的一些總結(jié)

標(biāo)簽: tcp/ip


網(wǎng)絡(luò)地址轉(zhuǎn)換又稱網(wǎng)絡(luò)掩蔽、IP掩蔽(英語(yǔ):Network Address Translation,縮寫(xiě):NAT),在計(jì)算機(jī)網(wǎng)絡(luò)中是一種在IP數(shù)據(jù)包通過(guò)路由器或防火墻時(shí)重寫(xiě)來(lái)源IP地址或目的IP地址的技術(shù)。這種技術(shù)被普遍使用在有多臺(tái)主機(jī)但只通過(guò)一個(gè)公有IP地址訪問(wèn)因特網(wǎng)的私有網(wǎng)絡(luò)中。它是一個(gè)方便且得到了廣泛應(yīng)用的技術(shù)。當(dāng)然,NAT也讓主機(jī)之間的通信變得復(fù)雜,導(dǎo)致了通信效率的降低。

NAT是作為一種解決IPv4地址短缺以避免保留IP地址困難的方案而流行起來(lái)的。
在一個(gè)典型的配置中,一個(gè)本地網(wǎng)絡(luò)使用一個(gè)專有網(wǎng)絡(luò)的指定子網(wǎng)(比如192.168.x.x或10.x.x.x)和連在這個(gè)網(wǎng)絡(luò)上的一個(gè)路由器。這個(gè)路由器有這個(gè)網(wǎng)絡(luò)地址空間的一個(gè)專有地址(比如192.168.0.1),同時(shí)它還通過(guò)一個(gè)或多個(gè)因特網(wǎng)服務(wù)提供商提供的公有的IP地址(叫做“過(guò)載”NAT)連接到因特網(wǎng)上。當(dāng)信息由本地網(wǎng)絡(luò)向因特網(wǎng)傳遞時(shí),源地址從專有地址轉(zhuǎn)換為公用地址。由路由器跟蹤每個(gè)連接上的基本數(shù)據(jù),主要是目的地址和端口。當(dāng)有回復(fù)返回路由器時(shí),它通過(guò)輸出階段記錄的連接跟蹤數(shù)據(jù)來(lái)決定該轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)的哪個(gè)主機(jī);如果有多個(gè)公用地址可用,當(dāng)數(shù)據(jù)包返回時(shí),TCP或UDP客戶機(jī)的端口號(hào)可以用來(lái)分解數(shù)據(jù)包。對(duì)于因特網(wǎng)上的通信,路由器本身充當(dāng)源和目的。

流行在網(wǎng)絡(luò)上的一種看法認(rèn)為,IPv6的廣泛采用將使得NAT不再需要,因?yàn)镹AT只是一個(gè)處理IPv4的地址空間不足的方法。


無(wú)NAT網(wǎng)絡(luò),假設(shè)每個(gè)接入子網(wǎng)都需要一組/24的IP,而且還能對(duì)外連接,對(duì)外的路由至少要保留或申請(qǐng)1000個(gè)對(duì)外IP
我們一般使用私網(wǎng)ip作為局域網(wǎng)內(nèi)部的主機(jī)標(biāo)識(shí),使用公網(wǎng)ip作為互聯(lián)網(wǎng)上通信的標(biāo)識(shí)
在整個(gè)NAT的轉(zhuǎn)換中,最關(guān)鍵的流程有以下幾點(diǎn):

  • 網(wǎng)絡(luò)被分為私網(wǎng)和公網(wǎng)兩個(gè)部分,NAT網(wǎng)關(guān)設(shè)置在私網(wǎng)到公網(wǎng)的路由出口位置,雙向流量必須都要經(jīng)過(guò)NAT網(wǎng)關(guān)
  • 網(wǎng)絡(luò)訪問(wèn)只能先由私網(wǎng)側(cè)發(fā)起,公網(wǎng)無(wú)法主動(dòng)訪問(wèn)私網(wǎng)主機(jī);
  • NAT網(wǎng)關(guān)在兩個(gè)訪問(wèn)方向上完成兩次地址的轉(zhuǎn)換或翻譯,出方向做源信息替換,入方向做目的信息替換;
  • NAT網(wǎng)關(guān)的存在對(duì)通信雙方是保持透明的;
  • NAT網(wǎng)關(guān)為了實(shí)現(xiàn)雙向翻譯的功能,需要維護(hù)一張關(guān)聯(lián)表,把會(huì)話的信息保存下來(lái)。

原文:https://blog.csdn.net/gui951753/article/details/79593307

缺點(diǎn)

在一個(gè)具有NAT功能的路由器下的主機(jī)并沒(méi)有創(chuàng)建真正的IP地址,并且不能參與一些因特網(wǎng)協(xié)議。一些需要初始化從外部網(wǎng)絡(luò)創(chuàng)建的TCP連接和無(wú)狀態(tài)協(xié)議(比如UDP)無(wú)法實(shí)現(xiàn)。除非NAT路由器管理者預(yù)先設(shè)置了規(guī)則,否則送來(lái)的數(shù)據(jù)包將不能到達(dá)正確的目的地址。一些協(xié)議有時(shí)可以在應(yīng)用層網(wǎng)關(guān)(見(jiàn)下)的輔助下,在參與NAT的主機(jī)之間容納一個(gè)NAT的實(shí)例,比如FTP。NAT也會(huì)使安全協(xié)議變的復(fù)雜,比如IPsec。

端對(duì)端連接是被IAB委員會(huì)(Internet Architecture Board)支持的核心因特網(wǎng)協(xié)議之一,因此有些人據(jù)此認(rèn)為NAT是對(duì)公用因特網(wǎng)的一個(gè)破壞。一些因特網(wǎng)服務(wù)提供商(ISP)只向他們的客戶提供本地IP地址,所以他們必須通過(guò)NAT來(lái)訪問(wèn)ISP網(wǎng)絡(luò)以外的服務(wù),并且這些公司能不能算的上真正的提供了因特網(wǎng)服務(wù)的話題也被談起。

NAT除了帶來(lái)方便和代價(jià)之外,對(duì)全雙工連接支持的缺少在一些情況下可以看作是一個(gè)有好處的特征而不是一個(gè)限制。在一定程度上,NAT依賴于本地網(wǎng)絡(luò)上的一臺(tái)機(jī)器來(lái)初始化和路由器另一邊的主機(jī)的任何連接,它可以阻止外部網(wǎng)絡(luò)上的主機(jī)的惡意活動(dòng)。這樣就可以阻止網(wǎng)絡(luò)蠕蟲(chóng)病毒來(lái)提高本地系統(tǒng)的可靠性,阻擋惡意瀏覽來(lái)提高本地系統(tǒng)的私密性。很多具有NAT功能的防火墻都是使用這種功能來(lái)提供核心保護(hù)的。另外,它也為UDP的跨局域網(wǎng)的傳輸提供了方便。

基本NAT和端口號(hào)轉(zhuǎn)換
基本網(wǎng)絡(luò)地址轉(zhuǎn)換(Basic NAT)
這一種也可稱作NAT或“靜態(tài)NAT”,在RFC 2663中提供了信息。它在技術(shù)上比較簡(jiǎn)單,僅支持地址轉(zhuǎn)換,不支持端口映射。Basic NAT要求對(duì)每一個(gè)當(dāng)前連接都要對(duì)應(yīng)一個(gè)公網(wǎng)IP地址,因此要維護(hù)一個(gè)公網(wǎng)的地址池。寬帶(broadband)路由器通常使用這種方式來(lái)允許一臺(tái)指定的設(shè)備去管理所有的外部鏈接,甚至當(dāng)路由器本身只有一個(gè)可用外部IP時(shí)也如此,這臺(tái)路由器有時(shí)也被標(biāo)記為DMZ主機(jī)。由于改變了IP源地址,在重新封裝數(shù)據(jù)包時(shí)候必須重新計(jì)算校驗(yàn)和,網(wǎng)絡(luò)層以上的只要涉及到IP地址的頭部校驗(yàn)和都要重新計(jì)算。

網(wǎng)絡(luò)地址端口轉(zhuǎn)換(NAPT)
這種方式支持端口的映射,并允許多臺(tái)主機(jī)共享一個(gè)公網(wǎng)IP地址。
支持端口轉(zhuǎn)換的NAT又可以分為兩類:源地址轉(zhuǎn)換和目的地址轉(zhuǎn)換。前一種情形下發(fā)起連接的計(jì)算機(jī)的IP地址將會(huì)被重寫(xiě),使得內(nèi)網(wǎng)主機(jī)發(fā)出的數(shù)據(jù)包能夠到達(dá)外網(wǎng)主機(jī)。后一種情況下被連接計(jì)算機(jī)的IP地址將被重寫(xiě),使得外網(wǎng)主機(jī)發(fā)出的數(shù)據(jù)包能夠到達(dá)內(nèi)網(wǎng)主機(jī)。實(shí)際上,以上兩種方式通常會(huì)一起被使用以支持雙向通信。

利用端口號(hào)的唯一性實(shí)現(xiàn)了公網(wǎng)ip轉(zhuǎn)換為私網(wǎng)ip的這一步。PAT(NAT重載)能夠使用傳輸層端口號(hào)來(lái)標(biāo)識(shí)主機(jī),因此,從理論上說(shuō),最多可讓大約65000臺(tái)主機(jī)共用一個(gè)公有IP地址

NAPT維護(hù)一個(gè)帶有IP以及端口號(hào)的NAT表,結(jié)構(gòu)如下。
內(nèi)網(wǎng)IP 外網(wǎng)IP
192.168.1.55:5566 219.152.168.222:9200
192.168.1.59:80 219.152.168.222:9201
192.168.1.59:4465 219.152.168.222:9202

不同類型的NAT:

完全圓錐型NAT(Full cone NAT),即一對(duì)一(one-to-one)NAT
一旦一個(gè)內(nèi)部地址(iAddr:port)映射到外部地址(eAddr:port),所有發(fā)自iAddr:port的包都經(jīng)由eAddr:port向外發(fā)送。任意外部主機(jī)都能通過(guò)給eAddr:port發(fā)包到達(dá)iAddr:port(注:port不需要一樣)


受限圓錐型NAT(Address-Restricted cone NAT)
內(nèi)部客戶端必須首先發(fā)送數(shù)據(jù)包到對(duì)方(IP=X.X.X.X),然后才能接收來(lái)自X.X.X.X的數(shù)據(jù)包。在限制方面,唯一的要求是數(shù)據(jù)包是來(lái)自X.X.X.X。內(nèi)部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有發(fā)自iAddr:port1的包都經(jīng)由eAddr:port2向外發(fā)送。外部主機(jī)(hostAddr:any)能通過(guò)給eAddr:port2發(fā)包到達(dá)iAddr:port1。(注:any指外部主機(jī)源端口不受限制,但是目的端口必須是port2。只有外部主機(jī)數(shù)據(jù)包的目的IP 為 內(nèi)部客戶端的ip,且目的端口為port2時(shí)數(shù)據(jù)包才被放行。)

端口受限圓錐型NAT(Port-Restricted cone NAT)
類似受限制錐形NAT(Restricted cone NAT),但是還有端口限制。
一旦一個(gè)內(nèi)部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有發(fā)自iAddr:port1的包都經(jīng)由eAddr:port2向外發(fā)送。
在受限圓錐型NAT基礎(chǔ)上增加了外部主機(jī)源端口必須是固定的。

對(duì)稱NAT(Symmetric NAT)
每一個(gè)來(lái)自相同內(nèi)部IP與端口,到一個(gè)特定目的地地址和端口的請(qǐng)求,都映射到一個(gè)獨(dú)特的外部IP地址和端口。
同一內(nèi)部IP與端口發(fā)到不同的目的地和端口的信息包,都使用不同的映射只有曾經(jīng)收到過(guò)內(nèi)部主機(jī)數(shù)據(jù)的外部主機(jī),才能夠把數(shù)據(jù)包發(fā)回


對(duì)稱/非對(duì)稱的區(qū)別主要在于:網(wǎng)關(guān)設(shè)備在實(shí)現(xiàn)NAT時(shí),對(duì)于內(nèi)網(wǎng)某主機(jī)的若干個(gè)UDP連接請(qǐng)求,網(wǎng)關(guān)設(shè)備對(duì)應(yīng)地在外網(wǎng)上所建立的UDP端口數(shù)量。對(duì)稱NAT是一個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)端口,非對(duì)稱NAT是多個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)端口(象錐形,所以叫Cone NAT)。
對(duì)稱型與圓錐型的區(qū)別:https://blog.csdn.net/Rookie_Manito/article/details/85260943

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容