NAT(PAT)與埠對映(轉)

leon830216發表於2015-03-02
今天早上在看資料的時候,突然對NAT(實際上應該是PAT,埠轉換)與埠對映的區別模糊了,一時分不清雙方的區別。覺得都是一樣的東西,後來經過實際案例的分析及自己的理解,終於有了一個比較清晰的概念。
先從原理上面來說,我們通常所說的nat實際上已經不是傳統的1對1(1個外網地址對應1個內網地址)及多對多(多個外網地址動態對應多個內網地址)的模式了,通常來說是1對多(1個外網地址的多個埠對應多個內網地址),例如外網地址200.201.30.41這個外網地址的1025~65535的埠對應192.168.0.0/16的地址塊,即多個內網ip服用一個ip地址進行internet的連線,也就是pat技術。
通常所說的nat是對網路層的ip地址進行的操作,也就是三層的技術。
而埠對映與pat有一定類似的地方,他是將內網ip的固定的埠對映到防火牆的外網ip地址的固定埠上,並由防火牆代理釋出出去。這是四層的技術。
埠對映與pat的相似的地方在於,它們都是基於傳輸層的埠進行的轉換,而不同的地方在於,pat對於埠的使用是空閒隨機的,而埠對映的埠對映則是固定的。
從配置的角度來看,對於nat,只需要定義一個公網ip地址,再定義一個內部的地址池,則轉換的過程是自動進行了(當然也可以根據需求定義更多的細節,如源地址、目的地址、雙向地址轉換等等)。對於埠對映,則要制定內部的ip地址,埠號,對映的外網的ip地址,埠號。
舉例來說,在某個網路的防火牆上有兩個公網地址,200.201.30.41,200.201.70.71(舉例),定義了兩個nat,分別是
200.201.30.41——>192.168.0.0/16
200.201.70.71——>172.168.0.0/16
則內網中,所有192.168.0.0網段的使用者上網時顯示的公網ip都是200.201.30.41,同理,172.168.0.0/16的公網ip是200.201.70.71,因為內網使用者複用了外網ip的隨機埠來進行internet的訪問,這個埠的使用是隨機的。
對於nat,每一個訪問的建立,都會在防火牆上留下記錄,比如192.168.1.50的12345埠複用了200.201.30.41的54321埠進行對新浪的訪問,則防火牆會有一個對應的表:200.201.30.41:54321192.168.1.50:12345,當資料返回時,仍然會按照這個連線,將資料返回給內網主機192.168.1.50;當連線結束時,會釋放200.201.30.41:54321的埠,這時,54321號埠又可以給其他的連線請求使用。這是對於nat的情況。
而對於埠對映的情況則不同,例如內網的web伺服器的ip地址為172.168.1.10,web服務需要向外網釋出,這時,就需要進行埠對映,在防火牆上建立固定的埠對映表172.168.1.10:80200.201.70.71:80,這個對映是固定的。這樣,在外網的使用者訪問該web伺服器的時候,訪問的就是外網200.201.70.71這ip地址。訪問時使用即可訪問到172.168.1.10:80的web伺服器(實際上是:80,由於http協議預設使用80埠,所以可以省略)。這時,200.201.70.71的80埠就被佔用了,也就是不能再被其他的內部地址使用,雖然這裡的80埠是保留埠,但是原理是一樣的。
在做埠對映的時候,可以將內部地址埠對映為外部地址相同的埠,也可以對映為不同的埠,如內網有另外一臺web伺服器172.168.1.20需要向外網釋出,但是200.201.70.71的80埠已經被172.168.1.10的80埠占用了,這時,可以使用其他的任何未被佔用的埠(非保留埠),如建立以下的對映:172.168.1.20:80200.201.70.71:8080,這時,訪問:8080即可訪問到172.168.1.20釋出的web服務,只是這個時候必須指定訪問8080埠,否則會訪問到172.168.1.10釋出的web服務。而由於8080埠已經被埠對映的服務佔用了,所以nat時,是不會使用該埠了(埠對映的優先順序較高)。
注意,對映的外網ip地址的埠可以隨意指定,但是內部的要使用的服務埠必須固定,如要釋出web服務的172.168.1.10伺服器必須使用80地址,如果使用3389埠,就變成了遠端連線。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22558114/viewspace-1445039/,如需轉載,請註明出處,否則將追究法律責任。

相關文章