NAT詳解

NAT英文全稱是“Network Address Translation”,中文意思是“網絡地址轉換”,它是一個IETF(Internet Engineering Task Force, Internet工程任務組)標準,允許一個整體機構以一個公用IP(Internet Protocol)地址出現在Internet上。顧名思義,它是一種把內部私有網絡地址(IP地址)翻譯成合法網絡IP地址的技術。如圖


    簡單的說,NAT就是在局域網內部網絡中使用內部地址,而當內部節點要與外部網絡進行通訊時,就在網關(可以理解爲出口,打個比方就像院子的門一樣)處,將內部地址替換成公用地址,從而在外部公網(internet)上正常使用,NAT可以使多臺計算機共享Internet連接,這一功能很好地解決了公共IP地址緊缺的問題。通過這種方法,您可以只申請一個合法IP地址,就把整個局域網中的計算機接入Internet中。這時,NAT屏蔽了內部網絡,所有內部網計算機對於公共網絡來說是不可見的,而內部網計算機用戶通常不會意識到NAT的存在。如圖2所示。這裏提到的內部地址,是指在內部網絡中分配給節點的私有IP地址,這個地址只能在內部網絡中使用,不能被路由(一種網絡技術,可以實現不同路徑轉發)。雖然內部地址可以隨機挑選,但是通常使用的是下面的地址:10.0.0.0~10.255.255.255,172.16.0.0~172.16.255.255,192.168.0.0~192.168.255.255。NAT將這些無法在互聯網上使用的保留IP地址翻譯成可以在互聯網上使用的合法IP地址。而全局地址,是指合法的IP地址,它是由NIC(網絡信息中心)或者ISP(網絡服務提供商)分配的地址,對外代表一個或多個內部局部地址,是全球統一的可尋址的地址。


    NAT功能通常被集成到路由器防火牆、ISDN路由器或者單獨的NAT設備中。比如Cisco路由器中已經加入這一功能,網絡管理員只需在路由器的IOS中設置NAT功能,就可以實現對內部網絡的屏蔽。再比如防火牆將WEB Server的內部地址192.168.1.1映射爲外部地址202.96.23.11,外部訪問202.96.23.11地址實際上就是訪問訪問192.168.1.1。另外資金有限的小型企業來說,現在通過軟件也可以實現這一功能。Windows 98 SE、Windows 2000 都包含了這一功能。
 
    NAT有三種類型:靜態NAT(Static NAT)、動態地址NAT(Pooled NAT)、網絡地址端口轉換NAPT(Port-Level NAT)。
    其中靜態NAT設置起來最爲簡單和最容易實現的一種,內部網絡中的每個主機都被永久映射成外部網絡中的某個合法的地址。而動態地址NAT則是在外部網絡中定義了一系列的合法地址,採用動態分配的方法映射到內部網絡。NAPT則是把內部地址映射到外部網絡的一個IP地址的不同端口上。根據不同的需要,三種NAT方案各有利弊。
    動態地址NAT只是轉換IP地址,它爲每一個內部的IP地址分配一個臨時的外部IP地址,主要應用於撥號,對於頻繁的遠程聯接也可以採用動態NAT。當遠程用戶聯接上之後,動態地址NAT就會分配給他一個IP地址,用戶斷開時,這個IP地址就會被釋放而留待以後使用。
    網絡地址端口轉換NAPT(Network Address Port Translation)是人們比較熟悉的一種轉換方式。NAPT普遍應用於接入設備中,它可以將中小型的網絡隱藏在一個合法的IP地址後面。NAPT與動態地址NAT不同,它將內部連接映射到外部網絡中的一個單獨的IP地址上,同時在該地址上加上一個由NAT設備選定的TCP端口號。
    在Internet中使用NAPT時,所有不同的信息流看起來好像來源於同一個IP地址。這個優點在小型辦公室內非常實用,通過從ISP處申請的一個IP地址,將多個連接通過NAPT接入Internet。實際上,許多SOHO遠程訪問設備支持基於PPP的動態IP地址。這樣,ISP甚至不需要支持NAPT,就可以做到多個內部IP地址共用一個外部IP地址上Internet,雖然這樣會導致信道的一定擁塞,但考慮到節省的ISP上網費用和易管理的特點,用NAPT還是很值得的。

在Internet中使用NAT技術

NAT技術可以讓你區域網路中的所有機器經由一臺通往Internet的server 線出去,而且只需要註冊該server的一個IP就夠了。 在以往沒有NAT技術以前,我們必須在server上安裝sockd,並且所有的clients都必須要支援sockd,才能夠經過server的sockd連線出去。這種方式最大的問題是,通常只有telnet/ftp/www-browser支援sockd,其它的程式都不能使用;而且使用sockd的速度稍慢。因此我們使用網絡地址轉換NAT技術,這樣client不需要做任何的更動,只需要把gateway設到該server上就可以了,而且所有的程式(例如kali/kahn等等) 都可以使用。最簡單的NAT設備有兩條網絡連接:一條連接到Internet,一條連接到專用網絡。專用網絡中使用私有IP地址(有時也被稱做Network 10地址,地址使用留做專用的從10.0.0.0開始的地址)的主機,通過直接向NAT設備發送數據包連接到Internet上。與普通路由器不同NAT設備實際上對包頭進行修改,將專用網絡的源地址變爲NAT設備自己的Internet地址,而普通路由器僅在將數據包轉發到目的地前讀取源地址和目的地址。

應用NAT技術的安全策略

1、應用NAT技術的安全問題

在使用NAT時,Internet上的主機表面上看起來直接與NAT設備通信,而非與專用網絡中實際的主機通信。輸入的數據包被髮送到NAT設備的IP地址上,並且NAT設備將目的包頭地址由自己的Internet地址變爲真正的目的主機的專用網絡地址。而結果是,理論上一個全球唯一IP地址後面可以連接幾百臺、幾千臺乃至幾百萬臺擁有專用地址的主機。但是,這實際上存在着缺陷。例如,許多Internet協議和應用依賴於真正的端到端網絡,在這種網絡上,數據包完全不加修改地從源地址發送到目的地址。比如,IP安全架構不能跨NAT設備使用,因爲包含原始IP 源地址的原始包頭採用了數字簽名。如果改變源地址的話,數字簽名將不再有效。 NAT還向我們提出了管理上的挑戰。儘管NAT 對於一個缺少足夠的全球唯一Internet地址的組織、分支機構或者部門來說是一種不錯的解決方案,但是當重組、 合併或收購需要對兩個或更多的專用網絡進行整合時,它就變成了一種嚴重的問題。甚至在組織結構穩定的情況下,NAT系統不能多層嵌套,從而造成路由噩夢。

2、應用NAT技術的安全策略

當我們改變網絡的IP地址時,都要仔細考慮這樣做會給網絡中已有的安全機制帶來什麼樣的影響。如,防火牆根據IP報頭中包含的TCP端口號、信宿地址、信源地址以及其它一些信息來決定是否讓該數據包通過。可以依NAT設備所處位置來改變防火牆過濾規則,這是因爲NAT改變了信源或信宿地址。如果一個NAT設備,如一臺內部路由器,被置於受防火牆保護的一側,將不得不改變負責控制NAT設備身後網絡流量的所有安全規則。在許多網絡中,NAT機制都是在防火牆上實現的。它的目的是使防火牆能夠提供對網絡訪問與地址轉換的雙重控制功能。除非可以嚴格地限定哪一種網絡連接可以被進行NAT轉換,否則不要將NAT設備置於防火牆之外。任何一個淘氣的黑客,只要他能夠使NAT誤以爲他的連接請求是被允許的,都可以以一個授權用戶的身份對你的網絡進行訪問。如果企業正在邁向網絡技術的前沿,並正在使用IP安全協議(IPSec)來構造一個虛擬專用網(VPN)時,錯誤地放置NAT設備會毀了計劃。原則上,NAT設備應該被置於VPN受保護的一側,因爲NAT需要改動IP報頭中的地址域,而在IPSec報頭中該域是無法被改變的,這使可以準確地獲知原始報文是發自哪一臺工作站的。如果IP地址被改變了,那麼IPSec的安全機制也就失效了,因爲既然信源地址都可以被改動,那麼報文內容就更不用說了。那麼NAT技術在系統中我們應採用以下幾個策略:

①網絡地址轉換模塊

NAT技術模塊是本系統核心部分,而且只有本模塊與網絡層有關,因此,這一部分應和Unix系統本身的網絡層處理部分緊密結合在一起,或對其直接進行修改。本模塊進一步可細分爲包交換子模塊、數據包頭替換子模塊、規則處理子模塊、連接記錄子模塊與真實地址分配子模塊及傳輸層過濾子模塊。

②集中訪問控制模塊

集中訪問控制模塊可進一步細分爲請求認證子模塊和連接中繼子模塊。請求認證子模塊主要負責和認證與訪問控制系統通過一種可信的安全機制交換各種身份鑑別信息,識別出合法的用戶,並根據用戶預先被賦予的權限決定後續的連接形式。連接中繼子模塊的主要功能是爲用戶建立起一條最終的無中繼的連接通道,並在需要的情況下向內部服務器傳送鑑別過的用戶身份信息,以完成相關服務協議中所需的鑑別流程。

③臨時訪問端口表

爲了區分數據包的服務對象和防止攻擊者對內部主機發起的連接進行非授權的利用,網關把內部主機使用的臨時端口、協議類型和內部主機地址登記在臨時端口使用表中。由於網關不知道內部主機可能要使用的臨時端口,故臨時端口使用表是由網關根據接收的數據包動態生成的。對於入向的數據包,防火牆只讓那些訪問控制表許可的或者臨時端口使用表登記的數據包通過。

④認證與訪問控制系統

認證與訪問控制系統包括用戶鑑別模塊和訪問控制模塊,實現用戶的身份鑑別和安全策略的控制。其中用戶鑑別模塊採用一次性口令(One-Time Password)認證技術中Challenge/Response機制實現遠程和當地用戶的身份鑑別,保護合法用戶的有效訪問和限制非法用戶的訪問。它採用Telnet和WEB兩種實現方式,滿足不同系統環境下用戶的應用需求。訪問控制模塊是基於自主型訪問控制策略(DAC),採用ACL的方式,按照用戶(組)、地址(組)、服務類型、服務時間等訪問控制因素決定對用戶是否授權訪問。

⑤網絡安全監控系統

監控與入侵檢測系統作爲系統端的監控進程,負責接受進入系統的所有信息,並對信息包進行分析和歸類,對可能出現的入侵及時發出報警信息;同時如發現有合法用戶的非法訪問和非法用戶的訪問,監控系統將及時斷開訪問連接,並進行追蹤檢查。

⑥基於WEB的防火牆管理系統

管理系統主要負責網絡地址轉換模塊、集中訪問控制模塊、認證與訪問控制系統、監控系統等模塊的系統配置和監控。它採用基於WEB的管理模式,由於管理系統所涉及到的信息大部分是關於用戶帳號等敏感數據信息,故應充分保證信息的安全性,我們採用JAVA APPLET技術代替CGI技術,在信息傳遞過程中採用加密等安全技術保證用戶信息的安全性。

總結

儘管NAT技術可以給我們帶來各種好處,例如無需爲網絡重分IP地址、減少ISP帳號花費以及提供更完善的負載平衡功能等,NAT技術對一些管理和安全機制的潛在威脅仍在,看你如何正確應用好網絡地址轉換NAT技術。

協議結構

NAT 是一個過程,而不是一個結構化協議。相關協議:IPIPv6TCPUDP、NATP組織來源:NAT 由 IETF(http://www.ietf.org/)定義在 RFC 3022中。

網絡地址轉換(NAT)的工作原理
   當一臺小型商務企業的內部網計算機用戶連接到 Internet 資源時,該用戶的 TCP/IP 協議產生一個 IP 數據包,該數據包包含以下值,這些值位於 IP 和 TCP 或 UDP 標頭中:(粗體內容表示受 NAT 影響的項目):
  
  • 目標 IP 地址:Internet 資源 IP 地址
  • 源 IP 地址:私有 IP 地址
  • 目標端口:Internet 資源 TCP 或 UDP 端口
  • 源端口: 源應用程序 TCP
或 UDP 端口
  
  請求源主機或者其它路由器將此 IP 數據包發送給 NAT, 然後由 NAT 將向外發送的數據包的地址解析如下:
  
  • 目標IP地址:Internet 資源 IP 地址
  • 源IP 地址:ISP 分配的公用地址
  • 目標端口:Internet 資源 TCP 或 UDP 端口
  • 源端口:重新映射的源應用程序TCP 或 UDP 端口
  
  NAT 將重新映射的 IP 數據包發送到 Internet 。響應計算機將向 NAT 返回一個響應。當 NAT 接收到此響應時,該數據包將包含以下地址信息:
  
  • 目標IP 地址:ISP 分配的公用地址
  • 源IP地址:Internet 資源 IP 地址
  • 目標端口:重新映射的源應用程序 TCP 或 UDP 端口
  • 源端口:Internet 資源的 TCP 或者 UDP 端口
  
  當 NAT 完成映射和解析地址後,將向 Internet 客戶端發送數據包,此數據包包含以下地址信息:
  
  • 目標 IP 地址:私有 IP 地址
  • 源 IP 地址:Internet 資源 IP 地址
  • 目標端口:源應用程序 TCP 或者 UDP 端口
  • 源端口:Internet 資源 TCP 或 UDP 端口
  
  對於向外發送的數據包,源 IP 地址和 TCP/UDP 端口號將被映射到一個公用源 IP 地址和一個可能變化的 TCP/UDP 端口號。對於接收的數據包,目標 IP 地址和 TCP/UDP 端口號將被映射到私有 IP 地址和初始 TCP/UDP 端口號。
  
  例如,一個小型辦公網絡使用 192.168.0.0/24 作爲企業內部網絡私有 ID 並且其 Internet 網絡服務提供商分配的單一公用IP地址爲131.107.0.1。當此小型內部網中一臺內部私有地址爲 192.168.0.99 的客戶訪問 IP 地址爲 157.60.0.1的網站服務器時,此用戶機的 TCP/IP 協議產生一個包含以下在 IP 和 TCP 或者 UDP 標頭中的數值的 IP 數據包:
  
  • 目標IP地址:157.60.0.1
  • 源IP地址: 192.168.0.99
  • 目標端口:80
  • 源端口:1025
  
  
  請求源主機將此 IP 數據包發送給 NAT 設備,然後由 NAT 設備解析向外發送數據包的地址如下:
  
  • 目標 IP 地址:157.60.0.1
  • 源 IP 地址:131.107.0.1
  • 目標端口:80
  • 源端口:5000
  
  NAT 將重新映射後的 IP 數據包發送到 Internet。網站服務器向 NAT 返回一個響應。當 NAT 接受到此響應時,數據包包含以下地址信息:
  
  • 目標IP地址:131.107.0.1
  • 源IP地址:157.50.0.1
  • 目標端口:5000
  • 源端口:80
  
  當 NAT 完成地址的映射和解析後,它將此數據包發送給 Internet 客戶端,數據包包含以下地址信息:
  
  • 目標IP地址:192.168.0.99
  • 源IP地址:157.60.0.1
  • 目標端口:1025
  • 源端口:80
  
NAT 的類型

  •完全(Cone) NAT
  完全 NAT 是指在 NAT 轉換表中存儲了內部地址和端口號與外部地址和端口號之間映射關係的一類 NAT。一旦 NAT 轉換表開始工作,來自任何源地址和端口通往外部地址和端口的入站數據包都將被轉換。
  
  • 受限 NAT
  受限 NAT是指在 NAT 轉換表中存儲了內部地址和端口號與外部地址和端口號之間的映射,無論是特定的源地址或者特定源地址與端口號。如果從某個未知外部地址或者端口到外部目標地址和端口的入站數據包與 NAT 轉換表吻合,那麼此數據流將被自動放棄。
  
  • 對稱 NAT
  對稱 NAT 是指根據外部目標地址(適用於出站數據包)將相同的內部地址和端口號映射到不同的外部地址和端口號的 NAT。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章