網路位址轉換(network address translation,nat)誕生於2023年,它的提出是在ipv4位址資源面臨枯竭的背景下。nat的設計初衷之一是為了作為ipv6全面部署之前的過渡策略(雖然現在已成為ipv6部署推進滯後的原因之一),採用nat滯後,網際網路位址就不再需要時全球唯一的,因此可以在網際網路的不同部分(稱為位址範圍(address realm))被重複使用。允許在多個範圍中的位址重複使用,大大緩解了位址耗盡的問題。此外,nat可以與防火牆相結合形成復合裝置,這種裝置已成為用於連線終端使用者最為常見的路由器型別。
nat本質上是一種允許在網際網路的不同地方重複使用相同的ip位址集的機制(如上圖所示)。建立nat的主要動機是正在急劇減少的有限ip位址空間。使用nat最常見的情況是,唯一與internet連線的站點僅被分配了很少的幾個ip位址(甚至只有乙個ip位址),但是內部卻有多台主機需要同時上網。當所有進出的流量均通過乙個單獨的nat裝置時,該裝置將內部系統的位址空間和全球網際網路位址空間分割開,因此所有的內部系統可以使用本地分配的私有ip位址訪問網際網路。
nat的引入用以解決兩個問題:ip位址枯竭和關於路由可擴充套件性的擔憂。nat剛推出的時候僅作為權宜之計,知道一些具有更大位址空間的協議(ipv6)被廣泛部署為止。無類別域間路由(cidr)的發展解決了路由可擴充套件性的問題。nat則減少了對具備全域性路由的網際網路位址的需求,同時提供了一些防火牆的功能,並且僅需要很少的配置。但具有諷刺意味的是,快速發展和廣泛使用的nat卻嚴重影響了ipv6的推進程式(在ipv6的諸多益處中,其中一項就是不再需要nat)。
nat存在幾個缺點,最明顯的是,需要做特殊配置才能使處於nat內部的主機能夠提供可供網際網路訪問的服務,因為網際網路上的使用者無法直接訪問具備私有位址的主機。此外,為了使nat正常工作,每乙個隸屬於同乙個連線或關聯的雙向資料報都必須通過相同的nat。這是因為nat必須重寫每個資料報的定址資訊,以便私有位址空間的系統和internet主機之間能夠正常通訊。在許多方面,nat和網際網路協議的基本宗旨是背道而馳的。
nat的工作原理就是重寫通過路由器的資料報的識別資訊。這種情況常發生在資料傳輸的兩個方向上。在這種最基本的形式中,nat需要重寫往乙個方向傳輸的資料報的源ip位址,重寫往另乙個方向的資料報的目的ip位址。這允許傳出的資料報的源ip位址變為nat路由器中面向internet的網路介面位址(全域性位址)而不是原始主機的介面位址。通俗來說,nat路由器將其管理的內部主機傳送的資料報的源ip位址由區域性位址變為全域性位址,從外部傳輸過來的資料報則做相反轉換以分配到合適的內部主機。因此,在網際網路上的主機看來,資料報是來自於具備全域性路由ip的nat路由器,而不是位於nat內部的私有位址的主機。大多數的nat同時執行轉換(translation)和包過濾(packet filtering)。
傳統的nat包括基本nat(basic nat)和網路位址埠轉換(network address port translation,napt)。基本nat只執行ip位址的重寫,本質上就是將私有位址改寫為乙個公共位址——往往取決於乙個由isp提供的位址池或公有位址範圍。basic nat也分為靜態和動態兩種,主要區別是其維護的nat位址對映表的一對一對映關係是靜態不變的還是動態可變的。basic nat無助於減少需要使用的ip位址數量,因為這要求全域性可路由的位址數量必須大於或等於希望同時訪問internet的內部主機數量。
napt也稱為ip偽裝,它使用傳輸層識別符號(即tcp和udp埠,icmp查詢識別符號)來確定乙個特定的資料報到底和nat內部的哪台主機關聯。即改變外出資料報的源埠並進行埠轉換,採用埠多路復用(port address translation,pat)的方式。內部網路的所有主機均可共享乙個合法外部ip位址實現對internet的訪問,可以最大限度地節約ip位址資源。這使得大量的內部主機能夠同時訪問網際網路,而使用的公有位址數量卻很少,通常只需乙個。同時,也可以隱藏網路內部的所有主機,有效避免來自internet的攻擊。
在nat內部使用的位址範圍不受除了本地網路管理員之外的任何人的限制。因此,有可能在私有位址範圍內採用全域性位址空間。然而,當這樣的全域性位址也被網際網路上的另乙個實體所使用時,在私有範圍內的本地系統極有可能無法達到使用相同位址的公共系統,這是因為採用相同位址的本地系統會遮蔽掉使用相同位址的遠端系統。為了避免這種不良情況的發生,保留了三個ipv4位址範圍作為私有位址範圍使用:10.0.0.0/8,172.16.0.0/12,192.168.0.0/16。這些位址範圍經常被用來作為嵌入式dhcp伺服器(dhcp傳送門)的位址池的預設值。
實際上,所謂的私有位址,是rfc1918規定的前述三塊位址範圍。這三塊私有位址本身是可路由的,只是公網上的路由器不會**這三塊私有位址的流量;當乙個公司內部配置了這些私有位址後,內部的計算機在和外網通訊時,邊界路由會通過nat或者napt技術,將內部的私有位址轉換成外網ip,外部看到的源位址是邊界路由轉換過的公網ip位址,這在某種意義上也增加了內部網路的安全性。
在如圖所示的nat網路模型中,內部位址為(x:x)的主機要與外部主機通訊,需要使用乙個外部位址(x':x'),nat負責建立乙個由(x:x)到(x':x')的位址對映。假設內部主機先連線到(y1:y1),再連線到(y2:y2),nat需先建立(x:x)到(x1':x1')的對映,再建立(x:x)到(x2':x2')的對映。在大多數情況下,x1'等於x2',因為大多數**只使用乙個全域性路由的ip位址。如果x1'等於x2',對映被認為是重複使用的。如果x1'和x2'均與x相等,nat實現的是稱為埠保留的動作。在某些情況下,埠保留是不可能的,所以nat必須處理埠衝突問題。
關於網路位址轉換
一直被乙個問題困擾 在租屋裡使用天威的寬頻上網,被告知是共享乙個公網ip,也就是說不管區域網裡有幾台電腦在上網,對外來說他們的ip是相同的。這就比較奇怪了,路由怎麼能正確的把公網上的ip包準確的投遞給正確的電腦呢?有同事提示說路由把不同的電腦對映到了不同的埠上。但還是有問題,tcp包頭的埠號 ip的...
網路位址轉換 NAT
nat概述 網路位址轉換 nat 通過將內部網路的私有ip位址翻譯成全球唯一的公網ip位址,使內部網路可以連線到網際網路等外部網路上,廣泛應用於各型別的網際網路接入方式和各種型別的網路中。nat的實現方式有一下三種 靜態位址轉換 將內部網路的私有ip位址轉換為公有的合法的ip位址,ip位址的對應關係...
網路位址轉換NAT
一般來說每台主機都有乙個固定的ip位址用於表示自己在internet中的身份,但乙個單位只能分配到少量的公開ip位址,同時也為了安全而不向internet公開單位內部的位址,所以企業內部的主機通常都使用私有位址,當內部主機要訪問internet時,必須進行 網路位址轉換 即把私有ip位址轉換成公開i...