1 概述1.1 簡介1.1.1 名詞解釋公有IP地址:也叫全局地址,,是指合法的IP地址,它是由NIC(網絡信息中心)或者ISP(網絡服務提供商)分配的地址,,對外代表一個或多個內部局部地址,,是全球統(tǒng)一的可尋 址的地址。 私有IP地址:也叫內部地址,,屬于非注冊地址,,專門為組織機構內部使用。因特網分配編號委員會(IANA)保留了3塊IP地址做為私有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 地址池:地址池是有一些外部地址(全球唯一的IP地址)組合而成,,我們稱這樣的一個地址集合為地址池,。在內部網絡的數(shù)據(jù)包通過地址轉換到達外部網絡時,將會在地址池中選擇某個IP地址作為數(shù)據(jù)包的源IP地址,,這樣可以有效的利用用戶的外部地址,,提高訪問外部網絡的能力。 1.1.2關于NATNAT英文全稱是“Network Address Translation”,,中文意思是“網絡地址轉換”,,它是一個IETF(Internet Engineering Task Force, Internet工程任務組)標準,允許一個整體機構以一個公用IP(Internet Protocol)地址出現(xiàn)在Internet上,。顧名思義,,它是一種把內部私有網絡地址(IP地址)翻譯成合法網絡IP地址的技術,如下圖所示,。因此我們可以認為,,NAT在一定程度上,,能夠有效的解決公網地址不足的問題。 簡單地說,,NAT就是在局域網內部網絡中使用內部地址,,而當內部節(jié)點要與外部網絡進行通訊時,就在網關(可以理解為出口,,打個比方就像院子的門一樣)處,,將內部地址替換成公用地址,從而在外部公網(internet)上正常使用,,NAT可以使多臺計算機共享Internet連接,,這一功能很好地解決了公共 IP地址緊缺的問題。通過這種方法,,可以只申請一個合法IP地址,,就把整個局域網中的計算機接入Internet中。這時,,NAT屏蔽了內部網絡,,所有內部網計算機對于公共網絡來說是不可見的,而內部網計算機用戶通常不會意識到NAT的存在,。如下圖所示,。這里提到的內部地址,是指在內部網絡中分配給節(jié)點的私有IP地址,,這個地址只能在內部網絡中使用,,不能被路由轉發(fā)。 NAT 功能通常被集成到路由器,、防火墻、ISDN路由器或者單獨的NAT設備中,。比如Cisco路由器中已經加入這一功能,,網絡管理員只需在路由器的IOS中設置NAT功能,就可以實現(xiàn)對內部網絡的屏蔽,。再比如防火墻將WEB Server的內部地址192.168.1.1映射為外部地址202.96.23.11,,外部訪問202.96.23.11地址實際上就是訪問訪問 192.168.1.1。此外,,對于資金有限的小型企業(yè)來說,,現(xiàn)在通過軟件也可以實現(xiàn)這一功能。Windows 98 SE,、Windows 2000 都包含了這一功能,。 1.2 分類NAT有三種類型:靜態(tài)NAT(Static NAT)、動態(tài)地址NAT(Pooled NAT),、網絡地址端口轉換NAPT(Port-Level NAT),。 1.2.1靜態(tài)NAT通過手動設置,,使 Internet 客戶進行的通信能夠映射到某個特定的私有網絡地址和端口。如果想讓連接在 Internet 上的計算機能夠使用某個私有網絡上的服務器(如網站服務器)以及應用程序(如游戲),,那么靜態(tài)映射是必需的,。靜態(tài)映射不會從 NAT 轉換表中刪除。 對于以上網絡拓撲圖,,當內網主機 10.1.1.1如果要與外網的主機201.0.0.11通信時,主機(IP:10.1.1.1)的數(shù)據(jù)包經過路由器時,,路由器通過查找NAT table 將IP數(shù)據(jù)包的源IP地址(10.1.1.1)改成與之對應的全局IP地址(201.0.0.1),,而目標IP地址201.0.0.11保持不變,這樣,,數(shù)據(jù)包就能到達201.0.0.11,。而當主機HostB(IP:201.0.0.11) 響應的數(shù)據(jù)包到達與內網相連接的路由器時,路由器同樣查找NAT table,,將IP數(shù)據(jù)包的目的IP 地址改成10.1.1.1,,這樣內網主機就能接收到外網主機發(fā)過來的數(shù)據(jù)包。在靜態(tài)NAT方式中,,內部的IP地址與公有IP地址是一種一一對應的映射關系,,所以,采用這種方式的前提是,,機構能夠申請到足夠多的全局IP地址,。 1.2.2 動態(tài)NAT動態(tài)地址NAT只是轉換IP地址,它為每一個內部的IP地址分配一個臨時的外部IP地址,,主要應用于撥號,,對于頻繁的遠程聯(lián)接也可以采用動態(tài)NAT。當遠程用戶聯(lián)接上之后,,動態(tài)地址NAT就會分配給他一個IP地址,,用戶斷開時,這個IP地址就會被釋放而留待以后使用,。 動態(tài)NAT方式適合于 當機構申請到的全局IP地址較少,,而內部網絡主機較多的情況。內網主機IP與全局IP地址是多對一的關系,。當數(shù)據(jù)包進出內網時,,具有NAT功能的設備對IP數(shù)據(jù)包的處理與靜態(tài)NAT的一樣,,只是NAT table表中的記錄是動態(tài)的,若內網主機在一定時間內沒有和外部網絡通信,,有關它的IP地址映射關系將會被刪除,,并且會把該全局IP地址分配給新的IP數(shù)據(jù)包使用,形成新的NAT table映射記錄,。 1.2.3網絡地址端口轉換NAPT網絡地址端口轉換NAPT(Network Address Port Translation)則是把內部地址映射到外部網絡的一個IP地址的不同端口上,。它可以將中小型的網絡隱藏在一個合法的IP地址后面。NAPT與 動態(tài)地址NAT不同,,它將內部連接映射到外部網絡中的一個單獨的IP地址上,,同時在該地址上加上一個由NAT設備選定的端口號。 NAPT是使用最普遍的一種轉換方式,,它又包含兩種轉換方式:SNAT和DNAT,。 (1)源NAT(Source NAT,SNAT):修改數(shù)據(jù)包的源地址,。源NAT改變第一個數(shù)據(jù)包的來源地址,,它永遠會在數(shù)據(jù)包發(fā)送到網絡之前完成,數(shù)據(jù)包偽裝就是一具SNAT的例子,。 (2)目的NAT(Destination NAT,,DNAT):修改數(shù)據(jù)包的目的地址。Destination NAT剛好與SNAT相反,,它是改變第一個數(shù)據(jù)包的目的地地址,,如平衡負載、端口轉發(fā)和透明代理就是 屬于DNAT,。 源NAT舉例:對于以上網絡拓撲圖,,內網的主機數(shù)量比較多,但是該組織只有一個合法的IP地址,,當內網主機(10.1.1.3)往外發(fā)送數(shù)據(jù)包時,,則需要修改數(shù)據(jù)包的IP地址和TCP/UDP端口號,例如將 源IP:10.1.1.3 源port:1493 改成 源IP:201.0.0.1 源port:1492(注意:源端口號可以與原來的一樣也可以不一樣) 當外網主機(201.0.0.11)響應內網主機(10.1.1.3)時,,應將: 目的IP:201.0.0.1 目的port:1492 改成 目的IP:10.1.1.3 目的port:1493 這樣,通過修改IP地址和端口的方法就可以使內網中所有的主機都能訪問外網,,此類NAT適用于組織或機構內只有一個合法的IP地址的情況,,也是動態(tài)NAT的一種特例。 目的NAT舉例:這種方式適用于內網的某些服務器需要為外網提供某些服務的情況,。例如以上拓撲結構,,內網服務器群(ip地址分別為:10.1.1.1,10.1.1.2,10.1.1.3等)需要為外網提供WEB 服務,當外網主機HostB訪問內網時,,所發(fā)送的數(shù)據(jù)包的目的IP地址為10.1.1.127,,端口號為:80,,當該數(shù)據(jù)包到達內網連接的路由器時,路由器查找NAT table,,路由器通過修改目的IP地址和端口號,,將外網的數(shù)據(jù)包平均發(fā)送到不同的主機上(10.1.1.1,10.1.1.2,10.1.1.3等),這樣就實現(xiàn)了負載均衡,。 2 NAT原理2.1 地址轉換NAT的基本工作原理是,,當私有網主機和公共網主機通信的IP包經過NAT網關時,將IP包中的源IP或目的IP在私有IP和NAT的公共IP之間進行轉換,。 如下圖所示,,NAT網關有2個網絡端口,其中公共網絡端口的IP地址是統(tǒng)一分配的公共 IP,,為202.20.65.5,;私有網絡端口的IP地址是保留地址為192.168.1.1。私有網中的主機192.168.1.2向公共網中的主機202.20.65.4發(fā)送了1個IP包(Dst=202.20.65.4,Src=192.168.1.2),。 當IP包經過NAT網關時,,NAT Gateway會將IP包的源IP轉換為NAT Gateway的公共IP并轉發(fā)到公共網,此時IP包(Dst=202.20.65.4,,Src=202.20.65.5)中已經不含任何私有網IP的信息,。由于IP包的源IP已經被轉換成NAT Gateway的公共IP,Web Server發(fā)出的響應IP包(Dst= 202.20.65.5,Src=202.20.65.4)將被發(fā)送到NAT Gateway,。 這時,,NAT Gateway會將IP包的目的IP轉換成私有網中主機的IP,然后將IP包(Des=192.168.1.2,,Src=202.20.65.4)轉發(fā)到私有網,。對于通信雙方而言,這種地址的轉換過程是完全透明的,。轉換示意圖如下,。 如果內網主機發(fā)出的請求包未經過NAT,那么當Web Server收到請求包,,回復的響應包中的目的地址就是私有網絡IP地址,,在Internet上無法正確送達,導致連接失敗,。 2.2 連接跟蹤在上述過程中,,NAT Gateway在收到響應包后,就需要判斷將數(shù)據(jù)包轉發(fā)給誰,。此時如果子網內僅有少量客戶機,,可以用靜態(tài)NAT手工指定;但如果內網有多臺客戶機,,并且各自訪問不同網站,,這時候就需要連接跟蹤(connection track),。如下圖所示: 在NAT Gateway收到客戶機發(fā)來的請求包后,做源地址轉換,,并且將該連接記錄保存下來,,當NAT Gateway收到服務器來的響應包后,查找Track Table,,確定轉發(fā)目標,,做目的地址轉換,轉發(fā)給客戶機,。 2.3 端口轉換以上述客戶機訪問服務器為例,,當僅有一臺客戶機訪問服務器時,NAT Gateway只須更改數(shù)據(jù)包的源IP或目的IP即可正常通訊,。但是如果Client A和Client B同時訪問Web Server,,那么當NAT Gateway收到響應包的時候,就無法判斷將數(shù)據(jù)包轉發(fā)給哪臺客戶機,,如下圖所示,。 此時,NAT Gateway會在Connection Track中加入端口信息加以區(qū)分,。如果兩客戶機訪問同一服務器的源端口不同,,那么在Track Table里加入端口信息即可區(qū)分,如果源端口正好相同,,那么在實行SNAT和DNAT的同時對源端口也要做相應的轉換,,如下圖所示。 3 應用NAT主要可以實現(xiàn)以下幾個功能:數(shù)據(jù)包偽裝,、平衡負載,、端口轉發(fā)和透明代理。 數(shù)據(jù)偽裝: 可以將內網數(shù)據(jù)包中的地址信息更改成統(tǒng)一的對外地址信息,,不讓內網主機直接暴露在因特網上,,保證內網主機的安全。同時,,該功能也常用來實現(xiàn)共享上網,。例如,內網主機訪問外網時,,為了隱藏內網拓撲結構,,使用全局地址替換私有地址。 端口轉發(fā): 當內網主機對外提供服務時,,由于使用的是內部私有IP地址,外網無法直接訪問,。因此,,需要在網關上進行端口轉發(fā),,將特定服務的數(shù)據(jù)包轉發(fā)給內網主機。例如公司小王在自己的服務器上架設了一個Web網站,,他的IP地址為192.168.0.5,,使用默認端口80,現(xiàn)在他想讓局域網外的用戶也能直接訪問他的Web站點,。利用NAT即可很輕松的解決這個問題,,服務器的IP地址為210.59.120.89,那么為小王分配一個端口,,例如81,,即所有訪問210.59.120.89:81的請求都自動轉向192.168.0.5:80,而且這個過程對用戶來說是透明的,。 負載平衡:目的地址轉換NAT可以重定向一些服務器的連接到其他隨機選定的服務器,。例如1.2.3所講的目的NAT的例子。 失效終結:目的地址轉換NAT可以用來提供高可靠性的服務,。如果一個系統(tǒng)有一臺通過路由器訪問的關鍵服務器,,一旦路由器檢測到該服務器當機,它可以使用目的地址轉換NAT透明的把連接轉移到一個備份服務器上,,提高系統(tǒng)的可靠性,。 透明代理:例如自己架設的服務器空間不足,需要將某些鏈接指向存在另外一臺服務器的空間,;或者某臺計算機上沒有安裝IIS服務,,但是卻想讓網友訪問該臺計算機上的內容,這個時候利用IIS的Web站點重定向即可輕松的幫助我們搞定,。 4 NAT的缺陷NAT在最開始的時候是非常完美的,,但隨著網絡的發(fā)展,各種新的應用層出不窮,,此時NAT也暴露出了缺點,。NAT的缺陷主要表現(xiàn)在以下幾方面: (1) 不能處理嵌入式IP地址或端口 NAT設備不能翻譯那些嵌入到應用數(shù)據(jù)部分的IP地址或端口信息,它只能翻譯那種正常位于IP首部中的地址信息和位于TCP/UDP首部中的端口信息,,如下圖,由于對方會使用接收到的數(shù)據(jù)包中嵌入的地址和端口進行通信,,這樣就可能產生連接故障,如果通信雙方都是使用的公網IP,,這不會造成什么問題,,但如果那個嵌入式地址和端口是內網的,顯然連接就不可能成攻,,原因就如開篇所說的一樣,。MSN Messenger的部分功能就使用了這種方式來傳遞IP和端口信息,這樣就導致了NAT設備后的客戶端網絡應用程序出現(xiàn)連接故障,。 (2) 不能從公網訪問內部網絡服務 由于內網是私有IP,,所以不能直接從公網訪問內部網絡服務,,比如WEB服務,,對于這個問題,,我們可以采用建立靜態(tài)映射的方法來解決,。比如有一條靜態(tài)映射,,是把218.70.201.185:80與192.168.0.88:80映射起的,,當公網用戶要訪問內部WEB服務器時,,它就首先連接到218.70.201.185:80,,然后NAT設備把請求傳給192.168.0.88:80,192.168.0.88把響應返回NAT設備,,再由NAT設備傳給公網訪問用戶,。 (3) 有一些應用程序雖然是用A端口發(fā)送數(shù)據(jù)的,但卻要用B端口進行接收,,不過NAT設備翻譯時卻不知道這一點,,它仍然建立一條針對A端口的映射,結果對方響應的數(shù)據(jù)要傳給B端口時,,NAT設備卻找不到相關映射條目而會丟棄數(shù)據(jù)包,。 5.結語NAT技術無可否認是在ipv4地址資源的短缺時候起到了緩解作用,;在減少用戶申請ISP服務的花費和提供比較完善的負載平衡功能等方面帶來了不少好處。但是在ipv4地址在以后幾年將會枯竭,,NAT技術不能改變ip地址空間不足的本質,。然而在安全機制上也潛在著威脅,在配置和管理上也是一個挑戰(zhàn),。如果要從根本上解決ip地址資源的問題,,ipv6才是最根本之路。在ipv4轉換到ipv6的過程中,,NAT技術確實是一個不錯的選擇,,相對其他的方案優(yōu)勢也非常明顯。 |
|
來自: astrotycoon > 《網絡》