1. 程式人生 > >NAT(網路地址轉換)技術與代理伺服器原理

NAT(網路地址轉換)技術與代理伺服器原理

一、    Nat技術:

NAT英文全稱是“Network Address Translation”,中文意思是“網路地址轉換”,它是一個IETF(Internet Engineering Task Force,Internet工程任務組)標準,允許一個整體機構以一個公用IP(Internet Protocol)地址出現在Internet上。顧名思義,它是一種把內部私有網路地址(IP地址)翻譯成合法網路IP地址的技術,如下圖所示。因此我們可以認為,NAT在一定程度上,能夠有效的解決公網地址不足的問題。


簡單地說,NAT就是在區域網內部網路中使用內部地址,而當內部節點要與外部網路進行通訊時,就在閘道器(可以理解為出口,打個比方就像院子的門一樣)處,將內部地址替換成公用地址,從而在外部公網(internet)上正常使用,NAT可以使多臺計算機共享Internet連線,這一功能很好地解決了公共 IP地址緊缺的問題。通過這種方法,可以只申請一個合法IP地址,就把整個區域網中的計算機接入Internet中。這時,NAT遮蔽了內部網路,所有內部網計算機對於公共網路來說是不可見的,而內部網計算機使用者通常不會意識到NAT的存在。如下圖所示。這裡提到的內部地址,是指在內部網路中分配給節點的私有IP地址,這個地址只能在內部網路中使用,不能被路由轉發。


NAT 功能通常被整合到路由器、防火牆、ISDN路由器或者單獨的NAT裝置中。

二、 分類:

  NAT有三種類型:靜態NAT(Static NAT)、動態地址NAT(Pooled NAT)、網路地址埠轉換NAPT(Port-Level NAT)。


1、靜態NAT

通過手動設定,使 Internet 客戶進行的通訊能夠對映到某個特定的私有網路地址和埠。如果想讓連線在 Internet 上的計算機能夠使用某個私有網路上的伺服器(如網站伺服器)以及應用程式(如遊戲),那麼靜態對映是必需的。靜態對映不會從 NAT 轉換表中刪除。
  如果在 NAT 轉換表中存在某個對映,那麼 NAT 只是單向地從 Internet 向私有

網路傳送資料。這樣,NAT 就為連線到私有網路部分的計算機提供了某種程度的保護。但是,如果考慮到 Internet 的安全性,NAT 就要配合全功能的防火牆一起使用。

對於以上網路拓撲圖,當內網主機 10.1.1.1如果要與外網的主機201.0.0.11通訊時,主機(IP:10.1.1.1)的資料包經過路由器時,路由器通過查詢NAT table 將IP資料包的源IP地址(10.1.1.1)改成與之對應的全域性IP地址(201.0.0.1),而目標IP地址201.0.0.11保持不變,這樣,資料包就能到達201.0.0.11。而當主機HostB(IP:201.0.0.11) 響應的資料包到達與內網相連線的路由器時,路由器同樣查詢NAT table,將IP資料包的目的IP地址改成10.1.1.1,這樣內網主機就能接收到外網主機發過來的資料包。在靜態NAT方式中,內部的IP地址與公有IP地址是一種一一對應的對映關係

,所以,採用這種方式的前提是,機構能夠申請到足夠多的全域性IP地址。

2、 動態NAT

動態地址NAT只是轉換IP地址,它為每一個內部的IP地址分配一個臨時的外部IP地址,主要應用於撥號,對於頻繁的遠端聯接也可以採用動態NAT。當遠端使用者聯接上之後,動態地址NAT就會分配給他一個IP地址,使用者斷開時,這個IP地址就會被釋放而留待以後使用。

動態NAT方式適合於 當機構申請到的全域性IP地址較少,而內部網路主機較多的情況。內網主機IP與全域性IP地址是多對一的關係。當資料包進出內網時,具有NAT功能的裝置對IP資料包的處理與靜態NAT的一樣,只是NAT table表中的記錄是動態的,若內網主機在一定時間內沒有和外部網路通訊,有關它的IP地址對映關係將會被刪除,並且會把該全域性IP地址分配給新的IP資料包使用,形成新的NAT table對映記錄。

3埠多路複用 
埠多路複用是指改變外出資料包的源埠並進行埠轉換,即埠地址轉換(PAT,Port Address Translation).採用埠多路複用方式。內部網路的所有主機均可共享一個合法外部IP地址實現對Internet的訪問,從而可以最大限度地節約IP地址資源。同時,又可隱藏網路內部的所有主機,有效避免來自internet的攻擊。因此,目前網路中應用最多的就是埠多路複用方式。

1)當內網主機需要與Internet建立連線時,首先將請求傳送到埠NAT伺服器。NAT伺服器接收到請求後,根據接收到的資料包,檢查埠NAT對映表;如果還沒有為該內網主機建立地址轉換對映項,則NAT伺服器會建立一個會話,並給該會話分配一個埠。之後將源地址及埠改為企業公網IP地址及相應的埠,傳送資料包到Internet主機上;

2)Internet主機接收到資訊後,將應答資訊返回給埠NAT伺服器;

3)當埠NAT伺服器接收到應答資訊後,檢查埠NAT對映表。如果埠NAT表存在匹配的對映項,則將目標地址及埠轉換為對應的內網IP及埠,將資料包轉發給內網主機。如果不存在匹配對映項,就將資料包丟棄;

三、nat原理

1、地址轉換

NAT的基本工作原理是,當私有網主機和公共網主機通訊的IP包經過NAT閘道器時,將IP包中的源IP或目的IP在私有IP和NAT的公共IP之間進行轉換。

如下圖所示,NAT閘道器有2個網路埠,其中公共網路埠的IP地址是統一分配的公共 IP,為202.20.65.5;私有網路埠的IP地址是保留地址為192.168.1.1。私有網中的主機192.168.1.2向公共網中的主機202.20.65.4傳送了1個IP包(Dst=202.20.65.4,Src=192.168.1.2)。


 當IP包經過NAT閘道器時,NAT Gateway會將IP包的源IP轉換為NAT Gateway的公共IP並轉發到公共網,此時IP包(Dst=202.20.65.4,Src=202.20.65.5)中已經不含任何私有網IP的資訊。由於IP包的源IP已經被轉換成NAT Gateway的公共IP,Web Server發出的響應IP包(Dst= 202.20.65.5,Src=202.20.65.4)將被髮送到NAT Gateway。

這時,NAT Gateway會將IP包的目的IP轉換成私有網中主機的IP,然後將IP包(Des=192.168.1.2,Src=202.20.65.4)轉發到私有網。對於通訊雙方而言,這種地址的轉換過程是完全透明的。轉換示意圖如下。


如果內網主機發出的請求包未經過NAT,那麼當Web Server收到請求包,回覆的響應包中的目的地址就是私有網路IP地址,在Internet上無法正確送達,導致連線失敗。

2、連線跟蹤

在上述過程中,NAT Gateway在收到響應包後,就需要判斷將資料包轉發給誰。此時如果子網內僅有少量客戶機,可以用靜態NAT手工指定;但如果內網有多臺客戶機,並且各自訪問不同網站,這時候就需要連線跟蹤(connection track)。如下圖所示:


在NAT Gateway收到客戶機發來的請求包後,做源地址轉換,並且將該連線記錄儲存下來,當NAT Gateway收到伺服器來的響應包後,查詢Track Table,確定轉發目標,做目的地址轉換,轉發給客戶機。

3、埠轉換

以上述客戶機訪問伺服器為例,當僅有一臺客戶機訪問伺服器時,NAT Gateway只須更改資料包的源IP或目的IP即可正常通訊。但是如果Client A和Client B同時訪問Web Server,那麼當NAT Gateway收到響應包的時候,就無法判斷將資料包轉發給哪臺客戶機,如下圖所示。


 此時,NAT Gateway會在Connection Track中加入埠資訊加以區分。如果兩客戶機訪問同一伺服器的源埠不同,那麼在Track Table里加入埠資訊即可區分,如果源埠正好相同,那麼在實行SNAT和DNAT的同時對源埠也要做相應的轉換,如下圖所示。


四、nat應用及產品

     NAT主要可以實現以下幾個功能:資料包偽裝、平衡負載、埠轉發和透明代理。

資料偽裝: 可以將內網資料包中的地址資訊更改成統一的對外地址資訊,不讓內網主機直接暴露在因特網上,保證內網主機的安全。同時,該功能也常用來實現共享上網。例如,內網主機訪問外網時,為了隱藏內網拓撲結構,使用全域性地址替換私有地址。

埠轉發: 當內網主機對外提供服務時,由於使用的是內部私有IP地址,外網無法直接訪問。因此,需要在閘道器上進行埠轉發,將特定服務的資料包轉發給內網主機。例如公司小王在自己的伺服器上架設了一個Web網站,他的IP地址為192.168.0.5,使用預設埠80,現在他想讓區域網外的使用者也能直接訪問他的Web站點。利用NAT即可很輕鬆的解決這個問題,伺服器的IP地址為210.59.120.89,那麼為小王分配一個埠,例如81,即所有訪問210.59.120.89:81的請求都自動轉向192.168.0.5:80,而且這個過程對使用者來說是透明的。

負載平衡:目的地址轉換NAT可以重定向一些伺服器的連線到其他隨機選定的伺服器。例如1.2.3所講的目的NAT的例子。

失效終結:目的地址轉換NAT可以用來提供高可靠性的服務。如果一個系統有一臺通過路由器訪問的關鍵伺服器,一旦路由器檢測到該伺服器當機,它可以使用目的地址轉換NAT透明的把連線轉移到一個備份伺服器上,提高系統的可靠性。

透明代理:例如自己架設的伺服器空間不足,需要將某些連結指向存在另外一臺伺服器的空間;或者某臺計算機上沒有安裝IIS服務,但是卻想讓網友訪問該臺計算機上的內容,這個時候利用IIS的Web站點重定向即可輕鬆的幫助我們搞定。

五、代理伺服器

  所謂代理,就是代而勞之的意思。代理伺服器就是代理網路使用者去取得網路資訊,形象的說:它是網路資訊的中轉站,使得一個網路終端和另一個網路終端不直接進行相連,代理網路使用者去取得資訊。主要工作在OSI的會話層中。

  一個完整的代理請求過程為:客戶端首先與代理伺服器建立連線,接著根據代理伺服器所使用的代理協議,請求對目標伺服器建立連線或者獲得目標伺服器的指定資源(如檔案)。在後一種情況中,代理伺服器可能對目標伺服器的資源下載至快取,如果客戶端索要獲取的資源在代理伺服器的快取之中,則代理伺服器並不會向目標伺服器傳送請求,而是直接返回了快取的資源。一些代理協議允許代理伺服器改變客戶端的原始請求、目標伺服器的原始響應,以滿足代理協議的需要。代理伺服器的選項和設定在計算機程式中,通常只包括一個防火牆,允許使用者輸入代理地址,他會這該他們的網路活動,可以允許繞過網際網路過濾實現網路訪問。

  代理伺服器(Proxy Server)是Internet鏈路級閘道器所提供的一種重要的安全功能,主要的功能有:

1.突破自身IP訪問限制,訪問國外站點。教育網,過去的169網等。

2.提高訪問速度:通常代理伺服器都設定了一個較大的硬碟緩衝區,當有外界的資訊通過的時候,同時也將其儲存在緩衝區中,當其他使用者在訪問相同的資訊時,則直接有緩衝區取出資訊,傳給使用者,以提高訪問速度

3.連結內網與Internet,充當防火牆:因為所有的內部網使用者通過代理伺服器訪問外界時,只對映一個IP地址,所以外界不能直接訪問到內部網;同時可以設定IP地址過濾,限制內部網對外部的訪問許可權

4.節省IP開銷:代理伺服器允許使用大量的偽IP地址,節約上網資源,即代理伺服器可以減少對IP地址的需求,對於使用區域網方式接入Internet,如果為區域網(LAN)內的每一個使用者都申請一個IP地址,其費用可想而知。但使用代理伺服器之後,只需代理伺服器上有一個合法的IP地址,LAN內其他使用者可以使用10.*.*.*這樣的私有IP地址,這樣可以節約大量的IP,降低網路的維護成本。

5.隱藏真實IP:上網者可以通過這種方式隱藏自己的IP,以免受到攻擊;

6.設定使用者驗證和記賬功能,沒有登記的使用者無權通過代理伺服器訪問Internet網。並對使用者的訪問時間、訪問地點、資訊流量進行統計。

六、二者之間的聯絡:

    常見的區域網接入Internet的技術有三種:

  1. 直接路由
  2. 代理伺服器(proxy)
  3. 網路地址轉換(NAT)