硬件nat关闭还是开启_NAT(Network Address Translation)网络地址转换技术详解
NAT簡介
NAT:Network Address Translation,網絡地址轉換
NAT技術的工作原理和特點
NAT名字很準確,網絡地址轉換,就是替換IP報文頭部的地址信息。NAT通常部署在一個組織的網絡出口位置,通過將內部網絡IP地址替換為出口的IP地址提供公網可達性和上層協議的連接能力。那么,什么是內部網絡IP地址?
RFC1918規定了三個保留地址段落:
| A類 | 10.0.0.0 ~ 10.255.255.255 |
| B類 | 172.16.0.0 ~ 172.31.255.255 |
| C類 | 192.168.0.0 ~ 192.168.255.255 |
這三個范圍分別處于A,B,C類的地址段,不向特定的用戶分配,被IANA作為私有地址保留。這些地址可以在任何組織或企業內部使用,和其他Internet地址的區別就是,僅能在內部使用,不能作為全球路由地址。這就是說,出了組織的管理范圍這些地址就不再有意義,無論是作為源地址,還是目的地址。對于一個封閉的組織,如果其網絡不連接到Internet,就可以使用這些地址而不用向IANA提出申請,而在內部的路由管理和報文傳遞方式與其他網絡沒有差異。
對于有Internet訪問需求而內部又使用私有地址的網絡,就要在組織的出口位置部署NAT網關,在報文離開私網進入Internet時,將源IP替換為公網地址,通常是出口設備的接口地址。一個對外的訪問請求在到達目標以后,表現為由本組織出口設備發起,因此被請求的服務端可將響應由Internet發回出口網關。出口網關再將目的地址替換為私網的源主機地址,發回內部。這樣一次由私網主機向公網服務端的請求和響應就在通信兩端均無感知的情況下完成了。依據這種模型,數量龐大的內網主機就不再需要公有IP地址了。
NAT的轉換示意
我們一般使用私網ip作為局域網內部的主機標識,使用公網ip作為互聯網上通信的標識。
在整個NAT的轉換中,最關鍵的流程有以下幾點
網絡被分為私網和公網兩個部分,NAT網關設置在私網到公網的路由出口位置,雙向流量必須都要經過NAT網關
網絡訪問只能先由私網側發起,公網無法主動訪問私網主機;
NAT網關在兩個訪問方向上完成兩次地址的轉換或翻譯,出方向做源信息替換,入方向做目的信息替換;
NAT網關的存在對通信雙方是保持透明的;
NAT網關為了實現雙向翻譯的功能,需要維護一張關聯表,把會話的信息保存下來。
NAT實現方式
靜態轉換
如果一個內部主機唯一占用一個公網IP,這種方式被稱為一對一模型。此種方式下,轉換上層協議就是不必要的,因為一個公網IP就能唯一對應一個內部主機。顯然,這種方式對節約公網IP沒有太大意義,主要是為了實現一些特殊的組網需求。比如用戶希望隱藏內部主機的真實IP,或者實現兩個IP地址重疊網絡的通信。
動態轉換
它能夠將未注冊的IP地址映射到注冊IP地址池中的一個地址。不像使用靜態NAT那樣,你無需靜態地配置路由器,使其將每個內部地址映射到一個外部地址,但必須有足夠的公有因特網IP地址,讓連接到因特網的主機都能夠同時發送和接收分組。
多路復用(PAT)
NAT重載也是動態NAT,它利用源端口將多個私網ip地址映射到一個公網ip地址(多對一)。那么,它的獨特之處何在呢?它也被稱為端口地址特換(PAT)。通過使用PAT(NAT重載),只需使用一個公網ip地址,就可將數千名用戶連接到因特網。其核心之處就在于利用端口號實現公網和私網的轉換。
面對私網內部數量龐大的主機,如果NAT只進行IP地址的簡單替換,就會產生一個問題:當有多個內部主機去訪問同一個服務器時,從返回的信息不足以區分響應應該轉發到哪個內部主機。此時,需要NAT設備根據傳輸層信息或其他上層協議去區分不同的會話,并且可能要對上層協議的標識進行轉換,比如TCP或UDP端口號。這樣NAT網關就可以將不同的內部連接訪問映射到同一公網IP的不同傳輸層端口,通過這種方式實現公網IP的復用和解復用。這種方式也被稱為端口轉換PAT、NAPT或IP偽裝,但更多時候直接被稱為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技術的優缺點
優點
NAT對我們來說最大的貢獻就是幫助我們節省了大量的ip資源
節省合法的公有ip地址
地址重疊時,提供 解決辦法
網絡發生變化時,避免重新編址(這個問題具有親身體會,原本所在的實習單位搬遷,我們搬到了新的住處,網絡環境發生了一些變化,但是由于nat技術的特點,我們局域網的地址并沒有發生改變,我們依然使用著最初的編址方案)
缺點
破壞了IP端到端通信的能力,很多應用層協議無法識別(比如ftp協議 )
任何一個主機都可以建立自己的HTTP、SMTP、POP3、DNS、DHCP等服務。與此同時,很多應用也是把客戶端和服務器的角色組合起來完成功能。例如在VoIP應用中,用戶端向注冊服務器登錄自己的IP地址和端口信息過程中,主機是客戶端;而在呼叫到達時,呼叫處理服務器向用戶端發送呼叫請求時,用戶端實際工作在服務器模式下。在語音媒體流信道建立過程后,通訊雙向發送語音數據,發送端是客戶模式,接收端是服務器模式。而在P2P的應用中,一個用戶的主機既為下載的客戶,同時也向其他客戶提供數據,是一種C/S混合的模型。上層應用之所以能這樣設計,是因為IP協議棧定義了這樣的能力。試想一下,如果IP提供的能力不對等,那么每個通信會話都只能是單方向發起的,這會極大限制通信的能力。細心的讀者會發現,前面介紹NAT的一個特性正是這樣一種限制。沒錯,NAT最大的弊端正在于此——破壞了IP端到端通信的能力。
NAT使IP會話的保持時效變短。
因為一個會話建立后會在NAT設備上建立一個關聯表,在會話靜默的這段時間,NAT網關會進行老化操作。這是任何一個NAT網關必須做的事情,因為IP和端口資源有限,通信的需求無限,所以必須在會話結束后回收資源。通常TCP會話通過協商的方式主動關閉連接,NAT網關可以跟蹤這些報文,但總是存在例外的情況,要依賴自己的定時器去回收資源。而基于UDP的通信協議很難確定何時通信結束,所以NAT網關主要依賴超時機制回收外部端口。通過定時器老化回收會帶來一個問題,如果應用需要維持連接的時間大于NAT網關的設置,通信就會意外中斷。因為網關回收相關轉換表資源以后,新的數據到達時就找不到相關的轉換信息,必須建立新的連接。當這個新數據是由公網側向私網側發送時,就會發生無法觸發新連接建立,也不能通知到私網側的主機去重建連接的情況。這時候通信就會中斷,不能自動恢復。即使新數據是從私網側發向公網側,因為重建的會話表往往使用不同于之前的公網IP和端口地址,公網側主機也無法對應到之前的通信上,導致用戶可感知的連接中斷。NAT網關要把回收空閑連接的時間設置到不發生持續的資源流失,又維持大部分連接不被意外中斷,是一件比較有難度的事情。在NAT已經普及化的時代,很多應用協議的設計者已經考慮到了這種情況,所以一般會設置一個連接?;畹臋C制,即在一段時間沒有數據需要發送時,主動發送一個NAT能感知到而又沒有實際數據的?;钕?#xff0c;這么做的主要目的就是重置NAT的會話定時器。
無法進行端到端的ip跟蹤(破壞了端對端通信的平等性)
NAT在實現上將多個內部主機發出的連接復用到一個IP上,這就使依賴IP進行主機跟蹤的機制都失效了。如網絡管理中需要的基于網絡流量分析的應用無法跟蹤到終端用戶與流量的具體行為的關系?;谟脩粜袨榈娜罩痉治鲆沧兊美щy,因為一個IP被很多用戶共享,如果存在惡意的用戶行為,很難定位到發起連接的那個主機。即便有一些機制提供了在NAT網關上進行連接跟蹤的方法,但是把這種變換關系接續起來也困難重重。基于IP的用戶授權不再可靠,因為擁有一個IP的不等于一個用戶或主機。一個服務器也不能簡單把同一IP的訪問視作同一主機發起的,不能進行關聯。有些服務器設置有連接限制,同一時刻只接納來自一個IP的有限訪問(有時是僅一個訪問),這會造成不同用戶之間的服務搶占和排隊。有時服務器端這樣做是出于DOS攻擊防護的考慮,因為一個用戶正常情況下不應該建立大量的連接請求,過度使用服務資源被理解為攻擊行為。但是這在NAT存在時不能簡單按照連接數判斷。
ALG(Application Level Gateway),即應用程序級網關技術
概念
NAT實現了對UDP或TCP報文頭中的的IP地址及端口轉換功能,但對應用層數據載荷中的字段無能為力(也就是凈載中的數據無法修改),在許多應用層協議中,比如多媒體協議(H.323、SIP等)、FTP、SQLNET等,TCP/UDP載荷中帶有地址或者端口信息,這些內容不能被NAT進行有效的轉換,就可能導致問題。也就是說,NAT只是將數據包的包頭的ip地址和端口號進行了轉換,但是沒有對包內數據中的ip地址和端口號進行轉換,于是我們開始設想能不能使用一種行之有效的方法保證包頭的ip和端口號與包中數據里的Ip地址和端口號都轉化為公網的ip地址和端口號。
應用
圖中私網側的主機要訪問公網的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的中文翻譯叫做網絡地址轉換啊。所以學好這個知識點對于我們理解網絡是至關重要的
總結
以上是生活随笔為你收集整理的硬件nat关闭还是开启_NAT(Network Address Translation)网络地址转换技术详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用计算机用u盘怎么切换,U盘一插进电脑提
- 下一篇: Navicat 连接mysql 显示 C