2020年11月15日 星期日

NAT(Network Address Translation)網址轉換

NAT有兩大類,基本NAT和NAPT。

1.1、基本NAT
靜態NAT:一個公網IP對應一個內部IP,一對一轉換

動態NAT:N個公網IP對應M個內部IP,不固定的一對一轉換關係

 1.2、NAPT(Network Address/Port Translator)
現在基本使用這種,又分為對稱和錐型NAT。

錐型NAT,有完全錐型、受限制錐型、端口受限制錐型三種:

a)Full Cone NAT(完全圓錐型):從同一私網地址端口192.168.0.8:4000發至公網的所有請求都映射成同一個公網地址端口1.2.3.4:62000 ,192.168.0.8可以收到任意外部主機發到1.2.3.4:62000的數據報。
b)Address Restricted Cone NAT (地址限制圓錐型):從同一私網地址端口192.168.0.8:4000發至公網的所有請求都映射成同一個公網地址端口1.2.3.4:62000,只有當內部主機192.168.0.8先給服務器C 6.7.8.9發送一個數據報後,192.168.0.8才能收到6.7.8.9發送到1.2.3.4:62000的數據報。
c)Port Restricted Cone NAT(端口限制圓錐型):從同一私網地址端口192.168.0.8:4000發至公網的所有請求都映射成同一個公網地址端口1.2.3.4:62000,只有當內部主機192.168.0.8先向外部主機地址端口6.7.8.9:8000發送一個數據報後,192.168.0.8才能收到6.7.8.9:8000發送到1.2.3.4:62000的數據報。

 對稱NAT:

  把所有來自相同內部IP地址和端口號,到特定目的IP地址和端口號的請求映射到相同的外部IP地址和端口。如果同一主機使用不同的源地址和端口對,發送的目的地址不同,則使用不同的映射。只有收到了一個IP包的外部主機才能夠向該內部主機發送回一個UDP包。對稱的NAT不保證所有會話中的(私有地址,私有端口)和(公開IP,公開端口)之間綁定的一致性。相反,它為每個新的會話分配一個新的端口號。

 
對稱NAT是一個請求對應一個端口,非對稱NAT是多個請求對應一個端口(象錐形,所以叫Cone NAT)。

對稱/非對稱的區別主要在於:網關設備在實現NAT時,對於內網某主機的若干個UDP連接請求,網關設備對應地在外網上所建立的UDP端口數量。對稱NAT是一個請求對應一個端口,非對稱NAT是多個請求對應一個端口(象錐形,所以叫Cone NAT)。

1.3、檢測NAT類型:
連接服務器為A,NAT檢測服務器為B。

第一步:當一個接收客戶端(Endpoint-Receiver ,簡稱 EP-R)需要接收文件信息時,在其向連接服務器發送文件請求的同時緊接著向檢測服務器發送NAT檢測請求。此處再次強調是“緊接著”,因為對於對稱型NAT來說,這個操作可以直接算出其地址分配的增量(⊿p)。

第二步:當EP-R收到A或B的反饋信息時發現其外部地址與自身地址不同時就可以確定自己在NAT後面;否則,就是公網IP。

第三步:由服務器A向B發送其獲得的EP-R的外部映射地址(IPa/Porta),服務器B獲得後進行比較,如果端口不同,則說明這是對稱型NAT,同時可以直接計算出其分配增量:

⊿p=Portb-Porta

第四步:如果端口號相同,則由B向EP-R的Porta發送連接請求,如果EP-R有響應,則說明EP-R沒有IP和Port的限制,屬於全ConeNAT類型。

第五步:如果沒有響應,則由服務器B使用其新端口b'向EP-R的Portb端口發送連接請求,如果有響應,則說明EP-R只對IP限制,屬於限制性ConeNAT類型;否則就是對IP和port都限制,屬於端口限制性ConeNAT類型。

通過上述五步基本可以全部檢測出EP-R是否在公網,還是在某種NAT後面。

 

 1.4、NAT映射老化時間
這也是一項可選配置任務,可根據需要為NAT 地址映射表配置老化時間,以控制用戶對NAT 配置的使用,確保內、外網的通信安全。

配置NAT 地址映射表項老化時間的方法也很簡單,只須在系統視圖下使用firewall-nat session { dns | ftp | ftp-data | http | icmp | tcp | tcp-proxy | udp | sip | sip- media | rtsp |rtsp-media }aging-time time-value 命令配置即可。參數 time-value的取值範圍為1~65 535的整數秒。如果要配置多個會話表項的超時時間需要分別用本命令配置。

缺省情況下,各協議的老化時間為:DNS(120 s)、ftp(120 s)、ftp-data(120 s)、HTTP(120 s)、icmp(20 s)、tcp(600 s)、 tcp-proxy(10 s)、udp(120 s)、sip(1 800 s)、sip-media ( 120 s )、rtsp ( 60 s )、rtsp-media ( 120 s ), 可用undo firewall-natsession { all | dns | ftp | ftp-data | http | icmp | tcp | tcp-proxy | udp | sip | sip-media | rtsp |rtsp-media } aging-time 命令恢復對應會話表項的超時時間為預設值。


網址轉換基本上是將一個網路位址轉成另一個不同的位址的機制,最常見的是,利用一個IP位址將多部電腦連接上網際網路。NAT的機制通常是安裝在路由器上,它的一邊連到末端網域(Stub Domain),就像是區域網路或企業網路,在此我們稱之為內部網路;另一邊則連到骨幹網路,被稱為外部網路。

一個送往外部網路的封包(Packet),NAT會將它的送端區域位址轉換為全球單一位址;反之一個送往內部網路之封包,NAT會將它的全球單一位址轉成內部區域位址;這種方式提供了企業網路(Intranet)使用者一種有效且便宜的網際網路擷取服務。不過透過網址轉換後,雖然外部網路使用者無法知道NAT的存在,但對內部而言,每個使用者還是可以連線上網。

下圖顯示了NAT的運作方式,假設內部網路上的工作站A(192.168.100.100)送一封包至外部網路的伺服器B(208.208.111.222),此封包在經過NAT路由器時,NAT機制會將送端位址192.168.100.100改成公共位址140.113.100.200。

因此當伺服器B收到工作站A的封包時,送端的位址將會是140.113.100.200;而伺服器B回應封包的收端位址也會是140.113.100.200,此封包在經過NAT路由器時,收端位址將被轉換成192.168.100.100,然後再送至內部網路上的工作站A。如果內部工作站A與C都同時都連到伺服器B,那麼就必須以不同的TCP埠號(Port Number)來區分,因為對於不同的網路連線,其識別方法就是要利用收端與送端的IP位址與TCP埠號來作區分。

NAT運作架構

由上圖的轉址表可以看出,工作站A與C的外送封包使用同一個公共IP位址,但TCP埠號卻不一樣,因此NAT可以透過TCP埠號來分辨不同的內部區域網址。利用NAT的動機,除了因應日益短缺IPv4位址外,網路與資訊安全的考量以及管理上的方便也是重要的因素之一。

至於內部的網址不同於外部的網址也具有多項的意義,它可用在負載平衡(Load Balancing),例如熱門網站可以利用NAT將大量查詢要求分散到不同的網頁伺服器,以平衡各伺服器的負載,並避免造成塞車。因為NAT轉址的速度遠比伺服器執行網頁查詢的速度為快,因此只要內部區域位址不會太多,便不會造成NAT設備之塞車,同樣的方法也可以用在大型資料庫伺服器上。


NAT的防火牆機制

NAT同時也提供了各式的擷取安全管制,最典型之例子就是防火牆(Firewall)的機制。

由於NAT可以將網路分隔成內部與外部,所有經過NAT設備的IP封包標頭都需要在此重寫,因此外部網路的使用者事實上無法看到內部網路的狀況,如此一來,可防止非法之入侵。NAT為提供網路管理者作業上的方便,面對日漸不足的IP位址,網路管理者可以使用私有IP,例如192.168.x.x或10.x.x.x;這些IP位址若只用於內部網路,可以不用登記註冊。

另外一種日漸重要的網路轉址應用為NAT – PT(Network Address Translation-Protocol Translation,RFC 2766),它是用來做IPv4與IPv6之間的協定轉換。由於將IPv4轉移至IPv6的過程是漸進式,因此預期兩種協定將會同時存在相當長的一段時間,並且互相對話,而NAT – PT將繼續扮演“翻譯者”的角色。NAT – PT通常是路由器,並安裝在網路的分界點(Network Boundary)。


IPv6與NAT的優缺點

從技術觀點而言,IPv4已使用了二十多年,面對日新月異的各種應用,功能難免會有所不足。而IPv6則是針對這些不足之處加以改進,如在IP層的每個節點做錯誤檢查(Checksum)、不用做封包切割(Fragmentation)、沒有標頭選項(Header Options)、以群播(Multicast)取代廣播(Broadcast)、以64位元取代原來之32位元、最小MTU加大至1280字元(Bytes)、延伸標頭(Extended Header)使選項部份不受限制,以及可以將選項的處理交給接收端等。因此整體而言,IPv6的效能將比IPv4更為強化。

此外,從使用者之觀點來看,IPv6可以支援隨插隨用(Plug and Play)的功能,大幅簡化了網管者的作業。用戶可以無接縫式的連上網際網路、可以得到確保品質的服務,及可以提供更方便的多駐地(Multi – homing)功能,簡單說就是同時連上多個ISP。

NAT的最大好處為簡化網路異動的管理程序,例如當內部網路的伺服器或主機的位址改變時,只要更改NAT路由器的設定,往後外部網路的主機想要連線到這些伺服器或主機時,仍可以用原有的位址。

當然NAT也有一些缺點,如實際上它並沒提供更多公用的IPv4位址,和它破壞了端對端的雙向通訊模式;一部電腦可以透過NAT直接連到一部在公共IP網路上的電腦,但反過來看,後者卻無法“看”到前者並直接與其連接。此外,它會造成單點當機,也就是說,如果NAT設備當機,所有經過它的連線都會因而中斷。其餘的缺點則有讓IPsec功能失效,及行動式設備使用NAT將容易造成問題等。


IPv6與 NAT實務上的問題

IETF並非一開始就決定發展IPv6為下一世代網際網路協定,事實上它有好幾個競爭者。1994年初,下一世代IP建議書被制定出來後,一直到了1995年底,才完成第一份IPv6規範(RFC1883)。目前的IPv6規範(RFC 2460)則是在1997年底修正改進後的版本。至於網路位址轉換器(The IP Network Address Translator,RFC 1631),則是在CIDR與 DHCP通過後,於1994年制定。雖然NAT比IPv6早一步制定,不過NAT很快地被普遍的接受與使用,而IPv6的推展則相對地緩慢。


IPv6的瓶頸與解決方案

IPv6發展緩慢的原因是可以理解,因為目前網際網路大多數的應用系統都是在IPv4的架構底下,使用NAT並不會影響這些使用者的日常應用,而且在技術上不受外部網路架構之影響。不過一旦更新為IPv6,那麼所有相關的網際網路連線作業、應用程式與所經過的路由設備都必須能夠支援IPv6;也就是說牽涉到的層面很廣,就算網路管理者改用新的IPv6協定,也只能更新內部網路的部份,並不能保證使用者的各種應用都可以照常順利執行。這些複雜度與不確定性,也間接地造成了許多系統管理者的觀望。

目前漸進式的解決辦法是使用雙堆疊(Dual Stack)的方式,即網路設備商提供同時支援IPv4與IPv6的路由器;如此一來,不論是IPv4或IPv6的應用程式,使用起來都不成問題。不過為了要讓所有網際網路上的路由設備都更新成雙堆疊系統,所有應用程式也應更新為IPv6版本,但這絕非短期間內可以完成。

除了實現過程上的複雜度外,還有IPv6的一些規範可能會造成問題。由於IPv6協定中有延伸標頭的選項,因此如果為了安全考量而啟動封包過濾機制,那麼所有封包上之延伸標頭皆須檢查;如果這些動作由網路節點來處理,那麼將會大大降低路由器的效能。雖然透過硬體設計可以加速封包處理速度,但對於選項的處理並不易由硬體來實現,因此這方面的顧慮是可以理解的。


NAT發展的情況

簡單小型的NAT設備在成本上比IPv6路由器設備便宜許多,其安裝也十分容易,這也是它在發展與實現過程上之優勢。不過NAT不見得適合大規模的系統,一方面是由於效能的考量,另一方面,它的單點當機影響也是個重要因素。目前網路攻擊事件層出不窮,NAT也很容易造成駭客攻擊的目標;假如駭客一旦知道一個NAT的存在,並弄垮它,那麼就等於癱瘓掉一個網路。

假如在NAT – PT的過程中,只是做位址的轉換,那應該沒什麼問題,但若要轉換協定中的其它欄位,例如IPv6中的流量標籤或是延伸標頭,因IPv4中沒有這些項目,其結果是封包仍然可以到達目的地,但一些訊務特性將因NAT – PT而無法顯現。


IPv6的未來趨勢

目前在許多資訊先進的國家,都有IPv6的大型或試用計畫在進行,例如日本的WIDE、德國的JOIN/DFN、加拿大的Viagenie、挪威的UNINETT、瑞士的SWITCH、法國的G6/Renater2、奧地利的ACOnet,以及歐盟的Quantum等知名國際大廠也都相繼投入了IPv6的發展與應用。在美國,微軟(Microsoft)與思科(Cisco)與昇陽(Sun)都宣佈支援IPv6;在歐洲,英國電信(British Telecommunications)也提供了免費的IPv6來作試用;而Nokia則在英國展示了IPv6的模擬生活,並採用IPv6來實現行動網際網路(Mobile Internet)。

日本發展最快,據估計NTT將成為全世界第一個利用IPv6的ISP,至於時間表所預期的狀況是在未來三、五年內,IPv4與IPv6將同時並存一段時間。至於台灣,目前IPv6聯盟已於2002年成立,並計畫在2007年完成全台網路升級。


結語

隨著IPv4的位址越來越難取得,且有越來越多的應用程式轉移到IPv6上,使用者將會慢慢改用IPv6;不過可能要等到網際網路上的IPv4使用者少到廠商不願再提供服務時,IPv6才會全面實現。但要多久的時間,目前並不容易斷定。

至於NAT,因為IPv6的位址充裕,因此不需要NAT再來擴充位址,不過網路轉址的目的不一定是擴充位址,有些是用在負載平衡與安全防護方面,還有前面提到的IPv4/IPv6協定之轉換。因此NAT預期在未來數年內還會持續地發展,就算IPv6全面實施,NAT仍是有一定的角色要扮演。

沒有留言:

張貼留言