NAT穿透技術 從外部直接溝通私有IP - daniel-qa/Network GitHub Wiki

下面是最基本的 NAT 穿透


NAT穿透技術 從外部直接溝通私有IP #

IP位址的轉換過程

  • 內部與外部的IP位址對應

一開始由內部主機發起,再經由中間的 Router,透過上面的 "NAT translation table" 或 "NAT Table,

轉為規劃好的外部 IP,再將封包傳給外部主機

外部主機收到封包後,會照封包上的來源位置(也就是轉換過的外部 IP),再回傳到這個 IP 位置

Router 接到回傳後的封包,會參考 NAT table,取得內部IP,再將封包的目的位置改為取得的內部IP。

NAT技術會去更改網路封包中的內容,不過只會更改"來源端IP位址"和"目的端IP位址",但網路封包中原本就會被修改的東西還是會被修改,如"TTL"(Time To Live)值。

NAT穿透技術

NAT穿透技術,英文稱為 NAT Traversal,也可以簡稱為 NAT-T

有許多不同的NAT穿透技術,但很難說有任何一種NAT穿透技術可以用於所有的NAT網路環境,主要原因是NAT並沒有被標準化

大部分的NAT穿透技術需要有一個有外部IP的伺服器。至於這個伺服器需要做什麼,各種NAT穿透技術並不太相同,有些NAT技術非常仰賴這樣的伺服器,可能會讓它協助所有的資料通訊,有些則只是需要讓這些伺服器協助建立一開始的連線即可。

NAT穿透技術與網路安全環境

大部分可能是中大型的企業環境比較會採用NAT,這也代表有極大的可能性還會有其他安全性的網路環境需要一起考慮。

但大部分的NAT穿透技術並沒有將這些環節考慮進來,主要也是因為很難針對這些安全性的設計做特殊處理,所以大多會在防火牆上做設定,好讓NAT穿透技術成為例外情況來處理

主要的NAT穿透技術 ( NAT traversal)

STURN(Session Traversal Utilities),是其中一種NAT穿透技術。

STUN協定需要遠端在外部網路架設一個STUN伺服器,詳細地說,STUN協定是運作在伺服器與用戶端之間。

STUN協定最初的設計初衷是讓上層的應用程式得知目前的機器是否運作在NAT環境之中,大致上運作步驟如下:

  1. 用戶端先發送一個Binding Request封包給STUN伺 服器。

  2. STUN伺服器把從伺服器端看到的用戶端IP位址與 埠(Port)的號碼傳回給用戶端,當作是一個success的封包。

  3. 最後結果以XOR運算方式來取得。

NAT穿透技術相關RFC文件