天天看點

NAT(位址轉換技術)詳解NAT産生背景ip位址基礎知識NAT技術的工作原理和特點NAT技術的優缺點NAT穿越技術NAT技術的未來參考文獻

目錄

  • NAT産生背景
  • ip位址基礎知識
  • NAT技術的工作原理和特點
    • 靜态NAT
    • 動态NAT
    • NAT重載(經常應用到實際中)
  • NAT技術的優缺點
    • 優點
    • 缺點
  • NAT穿越技術
    • 應用層網關(ALG)
    • ALG的實際應用
  • NAT技術的未來
  • 參考文獻

NAT産生背景

今天,無數快樂的網際網路使用者在盡情享受Internet帶來的樂趣。他們浏覽新聞,搜尋資料,下載下傳軟體,廣交新朋,分享資訊,甚至于足不出戶擷取一切日用所需。企業利用網際網路釋出資訊,傳遞資料和訂單,提供技術支援,完成日常辦公。然而,Internet在給億萬使用者帶來便利的同時,自身卻面臨一個緻命的問題:建構這個無所不能的Internet的基礎IPv4協定已經不能再提供新的網絡位址了。

2011年2月3日中國農曆新年, IANA對外宣布:IPv4位址空間最後5個位址塊已經被配置設定給下屬的5個地區委員會。2011年4月15日,亞太區委員會APNIC對外宣布,除了個别保留位址外,本區域所有的IPv4位址基本耗盡。一時之間,IPv4位址作為一種瀕危資源身價陡增,各大網絡公司出巨資收購剩餘的空閑位址。其實,IPv4位址不足問題已不是新問題,早在20年以前,IPv4位址即将耗盡的問題就已經擺在Internet先驅們面前。這不禁讓我們想去了解,是什麼技術使這一危機延緩了盡20年。

要找到問題的答案,讓我們先來簡略回顧一下IPv4協定。

IPv4即網際網協定第4版——Internet Protocol Version 4的縮寫。IPv4定義一個跨越異種網絡互連的超級網,它為每個網際網的節點配置設定全球唯一IP位址。如果我們把Internet比作一個郵政系統,那麼IP位址的作用就等同于包含城市、街區、門牌編号在内的完整位址。IPv4使用32bits整數表達一個位址,位址最大範圍就是232 約為43億。以IP創始時期可被聯網的裝置來看,這樣的一個空間已經很大,很難被短時間用完。然而,事實遠遠超出人們的設想,計算機網絡在此後的幾十年裡迅速壯大,網絡終端數量呈爆炸性增長。

更為糟糕的是,為了路由和管理友善,43億的位址空間被按照不同字首長度劃分為A,B,C,D類位址網絡和保留位址。其中,A類網絡位址127段,每段包括主機位址約1678萬個。B類網絡位址16384段,每段包括65536個主機位址。

ANA向超大型企業/組織配置設定A類網絡位址,一次一段。向中型企業或教育機構配置設定B類網絡位址,一次一段。這樣一種配置設定政策使得IP位址浪費很嚴重,很多被配置設定出去的位址沒有真實被利用,位址消耗很快。以至于二十世紀90年代初,網絡專家們意識到,這樣大手大腳下去,IPv4位址很快就要耗光了。于是,人們開始考慮IPv4的替代方案,同時采取一系列的措施來減緩IPv4位址的消耗。正是在這樣一個背景之下,本期的主角閃亮登場,它就是網絡位址轉換——NAT。

NAT是一項神奇的技術,說它神奇在于它的出現幾乎使IPv4起死回生。在IPv4已經被認為行将結束曆史使命之後近20年時間裡,人們幾乎忘了IPv4的位址空間即将耗盡這樣一個事實——在新技術日新月異的時代,20年可算一段漫長的曆史。更不用說,在NAT産生以後,網絡終端的數量呈加速上升趨勢,對IP位址的需求劇烈增加。此足見NAT技術之成功,影響之深遠。

說它神奇,更因為NAT給IP網絡模型帶來了深遠影響,其身影遍布網絡每個角落。根據一份最近的研究報告,70%的P2P使用者位于NAT網關以内。因為P2P主要運作在終端使用者的個人電腦之上,這個數字意味着大多數PC通過NAT網關連接配接到Internet。如果加上2G和3G方式聯網的智能手機等移動終端,在NAT網關之後的使用者遠遠超過這個比例。

ip位址基礎知識

同學你現在做兩個操作

  • 打開你的指令行輸入ipconfig查詢你的Ip位址
  • 打開百度,輸入Ip查詢,查詢你的ip位址

你是不是發現了一件很神奇的事情,這兩個位址是不一樣的。但是我們又經常說每個主機隻有一個ip,這個ip是他的身份辨別。這完全沖突啊。這就引出了我們今天要講的NAT技術

其實并不沖突。這裡我們要引入公網ip和私網ip這兩個概念,關于這個問題的解讀。大家可以參看我的博文。為什麼百度查到的ip和ipconfig查到的不一樣

NAT技術的工作原理和特點

NAT名字很準确,網絡位址轉換,就是替換IP封包頭部的位址資訊。NAT通常部署在一個組織的網絡出口位置,通過将内部網絡IP位址替換為出口的IP位址提供公網可達性和上層協定的連接配接能力。那麼,什麼是内部網絡IP位址?

RFC1918規定了三個保留位址段落:10.0.0.0-10.255.255.255;172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255。這三個範圍分别處于A,B,C類的位址段,不向特定的使用者配置設定,被IANA作為私有位址保留。這些位址可以在任何組織或企業内部使用,和其他Internet位址的差別就是,僅能在内部使用,不能作為全球路由位址。這就是說,出了組織的管理範圍這些位址就不再有意義,無論是作為源位址,還是目的位址。對于一個封閉的組織,如果其網絡不連接配接到Internet,就可以使用這些位址而不用向IANA提出申請,而在内部的路由管理和封包傳遞方式與其他網絡沒有差異。

對于有Internet通路需求而内部又使用私有位址的網絡,就要在組織的出口位置部署NAT網關,在封包離開私網進入Internet時,将源IP替換為公網位址,通常是出口裝置的接口位址。一個對外的通路請求在到達目标以後,表現為由本組織出口裝置發起,是以被請求的服務端可将響應由Internet發回出口網關。出口網關再将目的位址替換為私網的源主機位址,發回内部。這樣一次由私網主機向公網服務端的請求和響應就在通信兩端均無感覺的情況下完成了。依據這種模型,數量龐大的内網主機就不再需要公有IP位址了。

NAT的轉換示意圖如下所示

NAT(位址轉換技術)詳解NAT産生背景ip位址基礎知識NAT技術的工作原理和特點NAT技術的優缺點NAT穿越技術NAT技術的未來參考文獻

我們一般使用私網ip作為區域網路内部的主機辨別,使用公網ip作為網際網路上通信的辨別

在整個NAT的轉換中,最關鍵的流程有以下幾點

  • 網絡被分為私網和公網兩個部分,NAT網關設定在私網到公網的路由出口位置,雙向流量必須都要經過NAT網關
  • 網絡通路隻能先由私網側發起,公網無法主動通路私網主機;
  • NAT網關在兩個通路方向上完成兩次位址的轉換或翻譯,出方向做源資訊替換,入方向做目的資訊替換;
  • NAT網關的存在對通信雙方是保持透明的;
  • NAT網關為了實作雙向翻譯的功能,需要維護一張關聯表,把會話的資訊儲存下來。

靜态NAT

如果一個内部主機唯一占用一個公網IP,這種方式被稱為一對一模型。此種方式下,轉換上層協定就是不必要的,因為一個公網IP就能唯一對應一個内部主機。顯然,這種方式對節約公網IP沒有太大意義,主要是為了實作一些特殊的組網需求。比如使用者希望隐藏内部主機的真實IP,或者實作兩個IP位址重疊網絡的通信。

NAT(位址轉換技術)詳解NAT産生背景ip位址基礎知識NAT技術的工作原理和特點NAT技術的優缺點NAT穿越技術NAT技術的未來參考文獻

動态NAT

它能夠将未注冊的IP位址映射到注冊IP位址池中的一個位址。不像使用靜态NAT那樣,你無需靜态地配置路由器,使其将每個内部位址映射到一個外部位址,但必須有足夠的公有網際網路IP位址,讓連接配接到網際網路的主機都能夠同時發送和接收分組

NAT(位址轉換技術)詳解NAT産生背景ip位址基礎知識NAT技術的工作原理和特點NAT技術的優缺點NAT穿越技術NAT技術的未來參考文獻

NAT重載(經常應用到實際中)

這是最常用的NAT類型。NAT重載也是動态NAT,它利用源端口将多個私網ip位址映射到一個公網ip位址(多對一)。那麼,它的獨特之處何在呢?它也被稱為端口位址特換(PAT)。通過使用PAT(NAT重載),隻需使用一個公網ip位址,就可将數千名使用者連接配接到網際網路。其核心之處就在于利用端口号實作公網和私網的轉換。

面對私網内部數量龐大的主機,如果NAT隻進行IP位址的簡單替換,就會産生一個問題:當有多個内部主機去通路同一個伺服器時,從傳回的資訊不足以區分響應應該轉發到哪個内部主機。此時,需要NAT裝置根據傳輸層資訊或其他上層協定去區分不同的會話,并且可能要對上層協定的辨別進行轉換,比如TCP或UDP端口号。這樣NAT網關就可以将不同的内部連接配接通路映射到同一公網IP的不同傳輸層端口,通過這種方式實作公網IP的複用和解複用。這種方式也被稱為端口轉換PAT、NAPT或IP僞裝,但更多時候直接被稱為NAT,因為它是最典型的一種應用模式。

NAT(位址轉換技術)詳解NAT産生背景ip位址基礎知識NAT技術的工作原理和特點NAT技術的優缺點NAT穿越技術NAT技術的未來參考文獻

舉個例子,用戶端172.18.250.6和百度伺服器202.108.22.5通信,172.18.250.6發送資料時,先轉換為219.155.6.240:1723(任意>1024的随機端口),然後再利用這個身份發送資料給百度伺服器,然後百度伺服器回應資料并發送給219.155.6.240:1723,NAT網關檢查自己的關聯表,意識到這是自己地私網中172.18.250.6的資料包,然後把這個資料發送給用戶端

也就是說,我們利用端口号的唯一性實作了公網ip轉換為私網ip的這一步。PAT(NAT重載)能夠使用傳輸層端口号來辨別主機,是以,從理論上說,最多可讓大約65000台主機共用一個公有IP位址

NAT技術的優缺點

優點

  • 節省合法的公有ip位址
  • 位址重疊時,提供 解決辦法
  • 網絡發生變化時,避免重新編址(這個問題具有親身體會,原本所在的實習機關搬遷,我們搬到了新的住處,網絡環境發生了一些變化,但是由于nat技術的特點,我們區域網路的位址并沒有發生改變,我們依然使用着最初的編址方案)

    NAT對我們來說最大的貢獻就是幫助我們節省了大量的ip資源

缺點

在介紹NAT的諸多缺點之前,我們先簡單介紹下什麼是IP的端到端通信:

IP協定的一個重要貢獻是把世界變得平等。在理論上,具有IP位址的每個站點在協定層面有相當的擷取服務和提供服務的能力,不同的IP位址之間沒有差異。人們熟知的伺服器和客戶機實際是在應用協定層上的角色區分,而在網絡層和傳輸層沒有差異。一個具有IP位址的主機既可以是客戶機,也可以是伺服器,大部分情況下,既是客戶機,也是伺服器。端到端對等看起來是很平常的事情,而意義并不尋常。但在以往的技術中,很多協定體系下的網絡限定了終端的能力。正是IP的這個開放性,使得TCP/IP協定族可以提供豐富的功能,為應用實作提供了廣闊平台。因為所有的IP主機都可以伺服器的形式出現,是以通訊設計可以更加靈活。使用UNIX/LINUX的系統充分利用了這個特性,使得任何一個主機都可以建立自己的HTTP、SMTP、POP3、DNS、DHCP等服務。與此同時,很多應用也是把用戶端和伺服器的角色組合起來完成功能。例如在VoIP應用中,使用者端向注冊伺服器登入自己的IP位址和端口資訊過程中,主機是用戶端;而在呼叫到達時,呼叫處理伺服器向使用者端發送呼叫請求時,使用者端實際工作在伺服器模式下。在語音媒體流信道建立過程後,通訊雙向發送語音資料,發送端是客戶模式,接收端是伺服器模式。而在P2P的應用中,一個使用者的主機既為下載下傳的客戶,同時也向其他客戶提供資料,是一種C/S混合的模型。上層應用之是以能這樣設計,是因為IP協定棧定義了這樣的能力。試想一下,如果IP提供的能力不對等,那麼每個通信會話都隻能是單方向發起的,這會極大限制通信的能力。細心的讀者會發現,前面介紹NAT的一個特性正是這樣一種限制。沒錯,NAT最大的弊端正在于此——破壞了IP端到端通信的能力。

NAT的弊端

首先,NAT使IP會話的保持時效變短。因為一個會話建立後會在NAT裝置上建立一個關聯表,在會話靜默的這段時間,NAT網關會進行老化操作。這是任何一個NAT網關必須做的事情,因為IP和端口資源有限,通信的需求無限,是以必須在會話結束後回收資源。通常TCP會話通過協商的方式主動關閉連接配接,NAT網關可以跟蹤這些封包,但總是存在例外的情況,要依賴自己的定時器去回收資源。而基于UDP的通信協定很難确定何時通信結束,是以NAT網關主要依賴逾時機制回收外部端口。通過定時器老化回收會帶來一個問題,如果應用需要維持連接配接的時間大于NAT網關的設定,通信就會意外中斷。因為網關回收相關轉換表資源以後,新的資料到達時就找不到相關的轉換資訊,必須建立新的連接配接。當這個新資料是由公網側向私網側發送時,就會發生無法觸發新連接配接建立,也不能通知到私網側的主機去重建連接配接的情況。這時候通信就會中斷,不能自動恢複。即使新資料是從私網側發向公網側,因為重建的會話表往往使用不同于之前的公網IP和端口位址,公網側主機也無法對應到之前的通信上,導緻使用者可感覺的連接配接中斷。NAT網關要把回收空閑連接配接的時間設定到不發生持續的資源流失,又維持大部分連接配接不被意外中斷,是一件比較有難度的事情。在NAT已經普及化的時代,很多應用協定的設計者已經考慮到了這種情況,是以一般會設定一個連接配接保活的機制,即在一段時間沒有資料需要發送時,主動發送一個NAT能感覺到而又沒有實際資料的保活消息,這麼做的主要目的就是重置NAT的會話定時器。

其次,NAT在實作上将多個内部主機發出的連接配接複用到一個IP上,這就使依賴IP進行主機跟蹤的機制都失效了。如網絡管理中需要的基于網絡流量分析的應用無法跟蹤到終端使用者與流量的具體行為的關系。基于使用者行為的日志分析也變得困難,因為一個IP被很多使用者共享,如果存在惡意的使用者行為,很難定位到發起連接配接的那個主機。即便有一些機制提供了在NAT網關上進行連接配接跟蹤的方法,但是把這種變換關系接續起來也困難重重。基于IP的使用者授權不再可靠,因為擁有一個IP的不等于一個使用者或主機。一個伺服器也不能簡單把同一IP的通路視作同一主機發起的,不能進行關聯。有些伺服器設定有連接配接限制,同一時刻隻接納來自一個IP的有限通路(有時是僅一個通路),這會造成不同使用者之間的服務搶占和排隊。有時伺服器端這樣做是出于DOS攻擊防護的考慮,因為一個使用者正常情況下不應該建立大量的連接配接請求,過度使用服務資源被了解為攻擊行為。但是這在NAT存在時不能簡單按照連接配接數判斷。

總之,缺點大概如下:

  • 無法進行端到端的ip跟蹤(破壞了端對端通信的平等性)
  • 很多應用層協定無法識别(比如ftp協定 )

NAT穿越技術

前面解釋了NAT的弊端,為了解決IP端到端應用在NAT環境下遇到的問題,網絡協定的設計者們創造了各種武器來進行應對。但遺憾的是,這裡每一種方法都不完美,還需要在内部主機、應用程式或者NAT網關上增加額外的處理。

應用層網關(ALG)

前面我們已經介紹到了,NAT實作了對UDP或TCP封包頭中的的IP位址及端口轉換功能,但對應用層資料載荷中的字段無能為力(也就是淨載中的資料無法修改),在許多應用層協定中,比如多媒體協定(H.323、SIP等)、FTP、SQLNET等,TCP/UDP載荷中帶有位址或者端口資訊,這些内容不能被NAT進行有效的轉換,就可能導緻問題。也就是說,NAT隻是将資料包的標頭的ip位址和端口号進行了轉換,但是沒有對包内資料中的ip位址和端口号進行轉換于是我們開始設想能不能使用一種行之有效的方法保證標頭的ip和端口号與包中資料裡的Ip位址和端口号都轉化為公網的ip位址和端口号。

ALG的實際應用

對于ALG的實作機制還是不清楚,如果有懂的大佬,推薦下書籍

下面我們舉個FTP傳輸的例子來簡單介紹一下ALG的實際應用

NAT(位址轉換技術)詳解NAT産生背景ip位址基礎知識NAT技術的工作原理和特點NAT技術的優缺點NAT穿越技術NAT技術的未來參考文獻

圖中私網側的主機要通路公網的FTP伺服器。

NAT裝置上配置了私網位址192.168.1.2到公網位址8.8.8.11的映射,實作位址的NAT轉換,以支援私網主機對公網的通路。組網中,若沒有ALG對封包載荷的處理,私網主機發送的PORT封包到達伺服器端後,伺服器無法根據私網位址進行尋址,也就無法建立正确的資料連接配接。整個通信過程包括如下四個階段:

(1) 私網主機和公網FTP伺服器之間通過TCP三向交握成功建立控制連接配接。

(2) 控制連接配接建立後,私網主機向FTP伺服器發送PORT封包,封包中攜帶私網主機指定的資料連接配接的目的位址和端口,用于通知伺服器使用該位址和端口和自己進行資料連接配接。

(3) PORT封包在經過支援ALG特性的NAT裝置時,封包載荷中的私網位址和端口會被轉換成對應的公網位址和端口。即裝置将收到的PORT封包載荷中的私網位址192.168.1.2轉換成公網位址8.8.8.11,端口1084轉換成12487。

(4) 公網的FTP伺服器收到PORT封包後,解析其内容,并向私網主機發起資料連接配接,該資料連接配接的目的位址為8.8.8.11,目的端口為12487(注意:一般情況下,該封包源端口為20,但由于FTP協定沒有嚴格規定,有的伺服器發出的資料連接配接源端口為大于1024的随機端口,如本例采用的是wftpd伺服器,采用的源端口為3004)。由于該目的位址是一個公網位址,是以後續的資料連接配接就能夠成功建立,進而實作私網主機對公網伺服器的通路。

NAT技術的未來

在知乎上看到過這樣一種言論,随着ipV6技術的到來,NAT技術已經不再需要了。在我看來,技術的革命一定是一步一步實作的,比如先是在局部地區使用IPV6,然後再逐漸擴大其規模,減少IPv4的規模,是以NAT技術還是需要的。而且到了那個時候,網絡世界中會充斥着兩種位址ipV4和ipV6,這個時候更需要NAT技術了,因為NAT的中文翻譯叫做網絡位址轉換啊。是以學好這個知識點對于我們了解網絡是至關重要的。每到此時都會感慨,學校學到的知識真的隻是皮毛,但是卻是我現在所有知識的基礎。

參考文獻

  1. 《CCNA學習指南》點此處下載下傳此書
  2. ALG原理與應用
  3. P2P技術詳解

繼續閱讀