1. 程式人生 > >網路穿透與音視訊技術(2)——NAT的概念及工作模式(下)

網路穿透與音視訊技術(2)——NAT的概念及工作模式(下)

3、四種NAT對映實現方式

上文中我們已經提到三種NAT對映模式,它們是靜態對映(Static NAT)、動態對映(Pooled NAT)和網路地址埠對映(NAPT/PAT),又由於NAPT/PAT對映模式的靈活性和複用性最好,所以它又是目前應用最廣泛的一種對映模式。這種埠複用的對映模式目前又有四種實現方式,本文我們將逐個進行介紹,以便為我們後文介紹網路穿透方式打下理論基礎。

3.1、Full Cone NAT——全圓錐NAT

全圓錐NAT實現方式是指:一個NAT裝置內部的IP地址和埠(記為 IP1 + PORT1),通過NAT建立對映表時,都會對映到NAT裝置上相同的外網IP地址和埠(記為IP100 + PORT100)。且外網的任何IP地址和埠(記為IPX + PORTX),都可以通過NAT裝置上已建立的對映地址和埠(這裡就是IP100 + PORT100)訪問內網終端。如下圖所示:

這裡寫圖片描述

上圖中,一旦內網地址(192:168.0.100:41000)在NAT裝置上建立了對映關係(61.88.19.144:31444),那麼外部網路的任何地址(示例中是177.12.134.140:61001 和 177.12.134.140:52233 和 177.17.16.199:45333)都可以通過NAT裝置上的對映地址(61.88.19.144:31444)訪問內部終端(192:168.0.100:41000所代表的應用服務)

Full Cone NAT實現簡單,基本沒有限制約束(也可以理解成約束非常寬鬆),這種NAT實現方式的也非常容易實現網路穿透。但Full Cone NAT使整個內網終端完全暴露在外部網路下,所以也基本上沒有任何安全性可言。

3.2、Address Restricted Cone NAT——地址限制圓錐NAT

地址限制圓錐NAT在全圓錐NAT實現方式下,增加了一定的訪問限制,這種訪問限制基於IP地址。它的定義是:一個NAT裝置內部的IP地址和埠(記為 IP1 + PORT1),通過NAT建立對映表時,都會對映到NAT裝置上相同的外網IP地址和埠(記為IP100 + PORT100)進行外網地址(記為IPX + PORTX)。但是隻有已經由對映地址和埠(這裡就是IP100 + PORT100)訪問過的外網地址(這裡就是IPX),才能通過對映地址和埠(這裡就是IP100 + PORT100)訪問內網終端,如下圖所示:

這裡寫圖片描述

上圖中,內網地址(192:168.0.100:41000)在NAT裝置上建立了對映關係(61.88.19.144:31444),並訪問外部終端(177.12.134.140:52233),這時外部終端(177.17.16.199:45333)是無法通過NAT裝置上的對映地址和埠(61.88.19.144:31444)訪問內網終端的。而只有177.12.134.140:61001、177.12.134.140:52233 以及177.12.134.140:XXXXX 這樣的外部地址和埠,可以通過NAT裝置上的對映地址和埠(61.88.19.144:31444)訪問內網終端——因為它們的IP才能突破NAT裝置的訪問限制。

Address Restricted Cone NAT對映實現方式增加了對網路IP地址限制,保證了只有特定的外網IP才能訪通過對映關係訪問到內網資源。這種方式顯然在防止內網資源完全暴露在內網的情況下,保證了一定的訪問靈活性。

3.3、Port Restricted Cone NAT——埠限制圓錐NAT

Port Restricted Cone NAT的對映訪問限更加嚴格,它的描述是:一個NAT裝置內部的IP地址和埠(記為 IP1 + PORT1),通過NAT建立對映表時,都會對映到NAT裝置上相同的外網IP地址和埠(記為IP100 + PORT100)進行外網地址(記為IPX + PORTX)。但是隻有已經由對映地址和埠(這裡就是IP100 + PORT100)訪問過的外網地址和埠(這裡就是IPX + PORTX),才能通過NAT裝置上的對映地址和埠(這裡就是IP100 + PORT100)訪問內網終端,如下圖所示:

這裡寫圖片描述

上圖中,內網地址(192:168.0.100:41000)在NAT裝置上建立了對映關係(61.88.19.144:31444),並訪問外部終端(177.12.134.140:52233),這時外部終端(177.17.16.199:45333 和 177.12.134.140:61001)是無法通過NAT裝置上的對映地址和埠(61.88.19.144:31444)訪問內網終端的。而只有177.12.134.140:52233 這個之前已經被請求的外部地址和埠,可以通過NAT裝置上的對映地址和埠(61.88.19.144:31444)訪問內網終端——因為只有它的IP和埠同時符合NAT裝置的安全性要求。

3.4、Symmetric NAT——對稱NAT

可以看出圓錐NAT裝置的對映實現方式,其前提條件都是:“一個NAT裝置內部的IP地址和埠(記為 IP1 + PORT1),通過NAT建立對映表時,都會對映到NAT裝置上相同的外網IP地址和埠”,這個對映關係的形成和內網終端所訪問的外網目標沒有任何關係,也就是說A終端無論訪問www.XXX.com還是訪問www.YYY.com,它在NAT裝置上建立的對映地址都是相同的。

但是對稱型NAT裝置的對映實現方式卻不一樣,它的定義是:一個NAT裝置內部的IP地址和埠(記為 IP1 + PORT1),通過NAT建立對映表時,會根據要訪問的目標地址和埠,在NAT裝置上建立不同的對映關係,如下圖所示:

這裡寫圖片描述

對於對等NAT裝置的討論,我們是基於NAT裝置內部網路的同一IP地址和同一網路埠,因為如果內網的IP地址和埠都不一致,就沒有討論的必要了。上圖中,內網地址和埠192:168.0.100:41000在訪問第一個外部地址(177.12.134.140:61001)時,在NAT裝置上建立的對映資訊是61.88.19.144:61554;而同樣的的內部網路上的地址,在訪問第二個外部網路地址(177.12.134.140:52233)時,在NAT裝置上建立的對映資訊是61.88.19.144:31444。

這個時候,各個已經首先被內部終端通過NAT裝置請求過的,且NAT裝置上對映關係還沒有消除的外部網路終端,就可以使用對應的對映地址 + 埠,訪問到內部終端。而其它未建立對映關係的任何外部終端都無法訪問內部網路上的源終端。如上圖的示例中:地址和埠為177.12.134.140:52233的外部終端,可以通過對映地址61.88.19.144:31444訪問到內部終端;地址和埠為177.12.134.140:61001的外部終端,可以通過對映地址61.88.19.144:61554訪問到內部終端。

3.5、實際上NAT對映為多層

從以上的幾個小節的介紹中,我們可以發現四種對映模式的實現方式中,按照限制的寬鬆性分別為:
Full Cone NAT > Restricted Cone NAT > Port Restricted Cone NAT > Symmetric NAT;但是這幾種NAT裝置對映實現方式的穿越難度正好相反,Full Cone NAT < Restricted Cone NAT < Port Restricted Cone NAT < Symmetric NAT。後文中我們將介紹到。

除了瞭解到NAPT/PAT對映模式的四種實現方式外,我們還需要了解到當內部網路某個終端(記為A)訪問網際網路上的某一個終端地址(記為B)時,實際上A終端和B終端之間隔了多個NAT裝置。如下圖所示:

這裡寫圖片描述

上圖中可見一個網路終端(終端A)到另一個網路終端(終端B)一共經歷了三層NAT裝置,每一層NAT裝置的對映實現方式可能都是不同的,例如上圖所示的X方式可能為Full Cone NAT,所示Y方式可能為Restricted Cone NAT,所示Z方式可能為Symmetric NAT。那麼我們只需要解決整個網路中Symmetric NAT對映實現方式下的網路穿越問題,則整個網路的穿越問題就可以解決。

(下文我們將介紹如何判定所在網路的NAT裝置型別,以及目前常見的幾種網路穿越模式)