之前介紹過的STUN技術,事實上就是一種NAT穿透技術,不過現在有非常多不同的NAT穿透技術,沒有一種技術可以運用於所有的NAT環境,因為NAT並不是一種標準。這篇文章將針對多種常見的NAT穿透技術做一個簡介,讓讀者先瞭解有哪些技術可供選擇。
Link-local Address比私有IP位址擁有較多的限制,而這些限制都被定義在RFC 1918文件內。另外必須注意的是,Link-local Address所發送出來的網路封包,以及要送往Link-local Address的網路封包都不能經過路由器,這個限制被定義在RFC 3927中,有興趣的話可以參考RFC 3927和RFC 1918文件。
NAT運作原理
介紹完私有IP位址和Link-local位址之後,應該就慢慢能夠瞭解NAT的用途了。接著,先來看看什麼叫做NAT。NAT是用來讓私有的IP位址能夠存取外面的網際網路,而不需要經過任何的註冊IP位址的動作。
剛剛介紹過,私有IP位址是沒有辦法直接存取到外面的網際網路,所以若要連到網際網路,勢必一定要使用已經註冊的公有IP位址(Public IP Address),而NAT技術就是幫忙做公有IP位址和私有IP位址之間的轉換動作,讓使用私有IP位址的電腦也能夠方便地存取外面的網際網路。
在Cisco設備中,NAT會被應用在Cisco路由器上。一般的作法會把Cisco路由器設備同時連接兩段網路,一段是內部網路,另一段則是外部網際網路。一旦內部網路中有任何電腦想發送網路封包到外部的網際網路,當封包流過Cisco路由器設備時,Cisco路由器設備就會做NAT位址轉換的動作,然後再傳送封包到外部網際網路之中。
當然,如果想省一點的話,也可以透過適當的設定,讓外部網際網路只使用一個公有IP位址,但是卻給整個內部網路所有的電腦使用。這樣的作法也可以同時隱藏內部網路各電腦的IP位址,而達到一定程度的安全性。
NAT技術用語
在NAT的敘述中,所謂的「內部網路」(Inside Network)指的是需要經過位址轉換的網路區域,一般而言,內部網路都是像公司內部的網路,或是某組織架構中的網路,是沒有直接暴露在網際網路上的網路環境。
而所謂的「外部網路」(Outside Network)指的是其他的網路區段,而在外部網路中是不需要做位址轉換的,也就是說,外部網路上的IP位址都會是公有IP位址,外部網路通常都是指網際網路或是直接暴露於網際網路的網路區域。
接著,介紹以下四種不同的位址種類稱呼:
1. Inside Global位址
2. Inside Local位址
3. Outside Global位址
4. Outside Local位址
Inside Global位址是指經由Network Information Center或Server Provider所分派的邏輯IP位址,是給內部網路的電腦所使用。而Inside Local位址是內部網路中所取得的IP位址,但不是透過Network Information Center或Service Provider所提供的IP位址。
Outside Global位址是網際網路中實際有效,而且能被繞送的IP位址,是給外部網際網路電腦所使用的。而Outside Local位址則是外部網際網路中的電腦在內部網路中所運行的IP位址。
簡單來說,就是Inside與Outside是用來反映出電腦實際所在的位置,若是內部網路就是Inside,如果位於網際網路則是Outside。而Local和Global則是指所使用的IP位址是公有IP位址還是私有IP位址,若是公有IP位址,則是Global,若是使用私有IP位址則屬於Local。經過這樣解釋之後,應該就比較容易理解了。
NAT運行種類
常用的NAT運行方式有三種,分別是靜態(Static)NAT、動態(Dynamic)NAT以及Overlapping。
靜態NAT是指將私有IP位址對應到公有IP位址,並允許內部網路的電腦使用公有IP位址連線到網際網路,而這裡所使用的對應方式是採用一對一的方式,也是最基本的NAT。動態NAT方式則是將一個私有IP位址與一群公有IP位址做對應。而Overlapping與動態NAT剛好相反,是將多個私有IP位址與單一一個公有IP位址做對應。以下先來看看圖1所示的範例:
|
▲圖1 靜態NAT應用範例。 |
假設有一台Cisco路由器同時連接網際網路和內部網路,在圖1這個網路示意圖內,右邊是網際網路,亦即Global,左邊是內部網路,也就是Local,而NAT對應表如表2所示。
表2 NAT對應表
上面就是一個簡單的NAT應用範例,因為這裡將外部公有IP位址和內部私有IP位址做一對一的對應,所以這種NAT是屬於靜態NAT方式。
NAT的好處
到目前為止,已經可以簡單地整理出NAT技術的好處有哪些,歸納成以下幾點:
1. NAT技術可以事先把公有IP位址與私有IP位址做好
對應,這樣一來,當內部網路的電腦想存取網際網路時,就可以直接從對應表中取出對應的公有IP位址並拿來使用,這樣的作法可以節省一些時間。
2. 也因為可以做出對應表,並加上剛剛介紹過的
Overlapping方式,就可以節省公有IP位址的使用量,只要申請少數個公有IP位址,就可以讓大量的內部網路電腦上網。
3. 因為私有IP位址是不會流傳到外部網際網路,而會
使用公有IP位址,此外,外部網際網路的電腦也比較難知道內部網路各台電腦的IP位址,因此NAT技術可以提供一定程度的安全性。