1、NAT 技術白皮書 Copyright 2019 新華三技術有限公司 版權所有,保留一切權利。非經本公司書面許可,任何單位和個人不得擅自摘抄、復制本文檔內容的部分或全部,并不得以任何形式傳播。除新華三技術有限公司的商標外,本手冊中出現的其它公司的商標、產品標識及商品名稱,由各自權利人擁有。本文中的內容為通用性技術信息,某些信息可能不適用于您所購買的產品。i 目 錄 1 概述 1 1.1 產生背景 1 1.2 技術優點 1 2 NAT 技術實現 1 2.1 NAT 基本概念 1 2.2 NAT 基本原理 1 2.3 NAT 實現方式 2 2.3.1 靜態方式 2 2.3.2 NO-PAT 方式
2、2 2.3.3 PAT 方式 2 2.3.4 NAT Server 方式 3 2.3.5 Easy IP 方式 4 2.3.6 NAT hairpin 5 2.4 NAT ALG 機制 7 2.4.1 NAT ALG 機制簡介 7 2.4.2 基本概念 8 2.4.3 FTP 協議的 ALG 處理 8 2.4.4 DNS 協議的 ALG 處理 10 2.4.5 ICMP 協議的 ALG 處理 11 2.4.6 DNS Mapping 方式 11 2.5 NAT 支持多 VPN 實例 12 3 典型組網應用 13 3.1 私網主機訪問公網服務器 13 3.2 公網主機訪問私網服務器 13 3.3
3、 私網主機通過域名訪問私網服務器 14 3.4 不同 VPN 的主機使用相同的私網地址訪問公網 14 4 參考文獻 15 1 1 概述概述 1.1 產生背景 隨著 Internet 的發展和網絡應用的增多,IPv4 地址枯竭已成為制約網絡發展的瓶頸。盡管 IPv6 可以從根本上解決 IPv4 地址空間不足問題,但目前眾多網絡設備和網絡應用大多是基于 IPv4 的,IPv6在實際引入上進展緩慢。在 IPv6 廣泛應用之前,即 IPv4 向 IPv6 過渡期間,使用 NAT(Network Address Translation,網絡地址轉換)能夠提高 IPv4 地址的利用率,保證業務的平滑過渡,
4、為 IPv6的部署爭取時間。1.2 技術優點 作為一種過渡方案,NAT 通過地址重用的方法來滿足 IP 地址的需要,可以在一定程度上緩解 IP 地址空間枯竭的壓力。它具備以下優點:對于內部通訊可以利用私網地址,如果需要與外部通訊或訪問外部資源,則可通過將私網地址轉換成公網地址來實現。通過公網地址與端口的結合,可使多個私網用戶共用一個公網地址。通過靜態映射,不同的內部服務器可以映射到同一個公網地址。外部用戶可通過公網地址和端口訪問不同的內部服務器,同時還隱藏了內部服務器的真實 IP 地址,從而防止外部對內部服務器乃至內部網絡的攻擊行為。方便網絡管理,如通過改變地址映射表就可實現私網服務器的遷移,
5、內部網絡的改變也很容易。2 NAT 技術實現技術實現 2.1 NAT基本概念 NAT 基本概念如下:NAT 設備:配置了 NAT 功能的連接內部網絡和外部網絡的邊緣設備。NAT 規則:用于進行地址轉換的 NAT 配置稱為 NAT 規則。NAT 地址:用于進行地址轉換的公網 IP 地址,與外部網絡路由可達,可靜態指定或動態分配。NAT 表項:NAT 設備上用于記錄網絡地址轉換映射關系的表項。Easy IP 功能:NAT 轉換時直接使用設備上接口的 IP 地址作為 NAT 地址。設備上接口的地址可靜態指定或通過 DHCP 協議動態獲取。2.2 NAT基本原理 當內部網絡訪問外部網絡的報文經過 NA
6、T 設備時,NAT 設備會用一個合法的公網地址替換原報文中的源 IP 地址,并對這種轉換進行記錄;之后,當報文從外網側返回時,NAT 設備查找原有的記錄,將報文的目的地址再替換回原來的私網地址,并轉發給內網側主機。這個過程對于私網側或公網側設備透明?;谶@種基本的地址轉換原理,數量龐大的內網主機就不再需要公網 IP 地址了。2 2.3 NAT實現方式 2.3.1 靜態方式 靜態方式的地址轉換是指外部網絡和內部網絡之間的地址映射關系由配置確定,即一個公網 IP 地址唯一對應一個內部主機。該方式適用于內部網絡與外部網絡之間存在固定訪問需求的組網環境。靜態地址轉換支持雙向互訪:內網用戶可以主動訪問外
7、網,外網用戶也可以主動訪問內網。2.3.2 NO-PAT 方式 NO-PAT 方式屬于一對一的地址轉換,在這種方式下只轉換 IP 地址,而對 TCP/UDP 協議的端口號不處理,一個公網 IP 地址不能同時被多個用戶使用。如圖 1 所示,NO-PAT 方式的處理過程如下:(1)NAT 設備收到私網側主機發送的訪問公網側服務器的報文。(2)NAT 設備從地址池中選取一個空閑的公網 IP 地址,建立與私網側報文源 IP 地址間的 NAT 轉換表項,并依據查找 NAT 表項的結果將報文轉換后向公網側發送。(3)NAT 設備收到公網側的回應報文后,根據其目的 IP 地址反向查找 NAT 表項,并依據查
8、表結果將報文轉換后向私網側發送。由于NO-PAT這種一對一的轉換方式并未實現公網地址的復用,不能有效解決IP地址短缺的問題,因此在實際應用中并不常用。圖1 NO-PAT 方式原理圖 2.3.3 PAT 方式 由于 NO-PAT 方式并未實現地址復用,因此并不能解決公網地址短缺的問題,而 PAT(Port Address Translation)方式則可以解決這個問題。10.1.1.100/8NATServer211.100.7.34/24HostDestination:10.1.1.100Source:10.1.1.100Destination:162.105.178.65Source:162
9、.105.178.65Packet from Host to ServerPacket from Server to HostIntranetInternet162.105.178.65162.105.178.66162.105.178.67.Address group162.105.178.65Before NATAfter NATWayInbound10.1.1.100NAT tableOutbound10.1.1.100162.105.178.65 3 PAT 方式屬于多對一的地址轉換,它通過使用“IP 地址端口號”的形式進行轉換,使多個私網用戶可共用一個公網 IP 地址訪問外網,實現了
10、地址的復用,因此是地址轉換實現的主要形式。目前 PAT 僅支持對傳輸層協議為 TCP、UDP 或 ICMP 的報文進行“IP 地址端口號”轉換。如圖 2 所示,PAT 方式的處理過程如下:(1)NAT 設備收到私網側主機發送的訪問公網側服務器的報文。(2)NAT 設備從地址池中選取一對空閑的“公網 IP 地址端口號”,建立與私網側報文“源 IP地址源端口號”間的 PAT 轉換表項,并依據查找 PAT 表項的結果將報文轉換后向公網側發送。(3)NAT 設備收到公網側的回應報文后,根據其“目的 IP 地址目的端口號”反向查找 PAT 表項,并依據查表結果將報文轉換后向私網側發送。圖2 PAT 方式
11、原理圖 2.3.4 NAT Server 方式 出于安全考慮,大部分私網主機通常并不希望被公網用戶訪問。但在某些實際應用中,需要給公網用戶提供一個訪問私網服務器的機會。而在 NO-PAT 或 PAT 方式下,由于由公網用戶發起的訪問無法動態建立 NAT 表項,因此公網用戶無法訪問私網主機。NAT Server(NAT 內部服務器)方式就可以解決這個問題通過靜態配置“公網 IP 地址端口號”與“私網 IP 地址端口號”間的映射關系,NAT 設備可以將公網地址“反向”轉換成私網地址。如圖 3 所示,NAT Server 方式的處理過程如下:(1)NAT 設備收到公網側主機發送的訪問私網側服務器的報
12、文。(2)NAT 設備根據公網側報文的“目的 IP 地址目的端口號”反向查找靜態 NAT 表項,并依據查表結果將報文轉換后向私網側發送。(3)NAT 設備收到私網側的回應報文后,根據其“源 IP 地址源端口號”查找靜態 NAT 表項,并依據查表結果將報文轉換后向公網側發送。Source:10.1.1.100:102510.1.1.100/810.1.1.200/8211.100.7.34/24NATSource:10.1.1.200:1028Source:162.105.178.65:16384Source:162.105.178.65:16400Destination:10.1.1.100:
13、1025Destination:162.105.178.65:16384Destination:162.105.178.65:16400Destination:10.1.1.200:1028162.105.178.65162.105.178.66162.105.178.67.Address groupPacket from Host A to ServerPacket from Server to Host APacket from Host B to ServerPacket from Server to Host BHost AHost BServer10.1.1.100:1025Befo
14、re NATAfter NAT162.105.178.65:16384WayOutbound162.105.178.65:1638410.1.1.100:102510.1.1.200:1028162.105.178.65:16400162.105.178.65:1640010.1.1.200:1028NAPT tableOutboundInboundInboundIntranetInternet 4 圖3 NAT Server 方式原理圖 2.3.5 Easy IP 方式 EASY IP 方式是指直接使用接口的公網 IP 地址作為轉換后的源地址進行地址轉換,它可以動態獲取出接口地址,從而有效支
15、持出接口通過撥號或 DHCP 方式獲取公網 IP 地址的應用場景。EASY IP 方式特別適合小型局域網訪問 Internet 的情況。這里的小型局域網主要指中小型網吧、小型辦公室等環境,一般具有以下特點:內部主機較少、出接口通過撥號方式獲得臨時公網 IP 地址以供內部主機訪問 Internet。對于這種情況,可以使用 EASY IP 方式使局域網用戶都通過這個 IP 地址接入 Internet。如圖 4 所示,EASY IP 方式的處理過程如下:(1)NAT 設備收到私網側主機發送的訪問公網側服務器的報文。(2)NAT 設備利用公網側接口的“公網 IP 地址端口號”,建立與私網側報文“源 I
16、P 地址源端口號”間的 EASY IP 轉換表項(正反向),并依據查找正向 EASY IP 表項的結果將報文轉換后向公網側發送。(3)NAT 設備收到公網側的回應報文后,根據其“目的 IP 地址目的端口號”查找反向 EASY IP表項,并依據查表結果將報文轉換后向私網側發送。10.1.1.2/8NATServer211.100.7.3/24HostDestination:10.1.1.2:80Source:10.1.1.2:80Destination:162.105.178.6:80Source:162.105.178.6:80Packet from Host to ServerPacket
17、from Server to Host162.105.178.6:80Before NATAfter NATWayInbound10.1.1.2:80Static NAT tableOutbound10.1.1.2:80162.105.178.6:80IntranetInternet162.105.178.6:80-10.1.1.2:80NAT server 5 圖4 EASY IP 方式原理圖 2.3.6 NAT hairpin NAT hairpin 功能用于滿足位于內網側的用戶之間或內網側的用戶與服務器之間通過 NAT 地址進行訪問的需求。開啟 NAT hairpin 的內網側接口上會對
18、報文同時進行源地址和目的地址的轉換。它支持兩種組網模式:(1)P2P:位于內網側的用戶之間通過NAT地址互訪。內網各主機首先向外網服務器注冊自己NAT轉換后的外網 IP 地址和端口號信息。如圖 5 和圖 6 所示,當內網的一個客戶端使用 NAT 地址訪問內網的另一個客戶端時,首先從服務器獲取對方注冊的 IP 地址和端口號信息,然后根據該信息與對方建立連接。10.1.1.100/810.1.1.200/8211.100.7.34/24NATSource:10.1.1.200:1586Destination:10.1.1.200:1586Packet from Host A to ServerPa
19、cket from Server to Host APacket from Host B to ServerPacket from Server to Host BHost AHost BServerIntranetInternet162.10.2.8/24Source:10.1.1.100:1540Destination:10.1.1.100:1540Source:162.10.2.8:5480Destination:162.10.2.8:5480Source:162.10.2.8:5481Destination:162.10.2.8:548110.1.1.100:1540Before NA
20、TAfter NAT162.10.2.8:5480WayOutbound162.10.2.8:548010.1.1.100:154010.1.1.200:1586162.10.2.8:5481162.10.2.8:548110.1.1.200:1586EASY IP tableOutboundInboundInbound 6 圖5 P2P 組網模式下的 NAT hairpin(Packet from Host A to Host B)圖6 P2P 組網模式下的 NAT hairpin(Packet from Host B to Host A)(2)C/S:位于內網側的用戶使用 NAT 地址訪問
21、內網服務器。如圖 7 和圖 8 所示,內部網絡中有一臺 FTP 服務器,內網用戶使用 NAT 地址訪問該 FTP 服務器時,NAT 設備同時轉換訪問內網服務器的報文的源和目的 IP 地址,其中,目的 IP 地址轉換通過匹配外網接口上的內部服務器配置來完成,源地址轉換通過匹配內部服務器所在接口上的出方向動態地址轉換或出方向靜態地址轉換來完成。Packet from Host A to Host BClient B192.168.1.3/24Client A192.168.1.2/24Registration server200.2.2.2/24NAT內網口192.168.1.1/24公網口202
22、.38.1.3/24Source:192.168.1.2:1025Destination:202.38.1.3:16384轉換前Source:192.168.1.2:1025Destination:202.38.1.3:16384Source:202.38.1.3:16384Destination:192.168.1.3:1028轉換后Source:202.38.1.3:16400Destination:192.168.1.3:1028Internet202.38.1.3:16384Before NATAfter NATWayInbound192.168.1.2:1025NAT tableOu
23、tbound192.168.1.3:1028202.38.1.3:16400Client B192.168.1.3/24Client A192.168.1.2/24Registration server200.2.2.2/24NAT內網口192.168.1.1/24公網口202.38.1.3/24轉換后Source:202.38.1.3:16384Destination:192.168.1.2:1025轉換前Source:192.168.1.3:1028Destination:202.38.1.3:16400InternetPacket from Host B to Host ABefore
24、NATAfter NATWayNAT table192.168.1.3:1028Outbound202.38.1.3:16384202.38.1.3:16400Inbound192.168.1.2:1025Source:192.168.1.3:1028Destination:202.38.1.3:16400Source:202.38.1.3:16384Destination:192.168.1.2:1025 7 圖7 C/S 組網模式下的 NAT hairpin(Packet from Host to Server)圖8 C/S 組網模式下的 NAT hairpin(Packet from S
25、erver to Host)2.4 NAT ALG機制 2.4.1 NAT ALG 機制簡介 通常情況下,NAT 只改變 IP 報文頭部地址信息,而不對報文載荷進行分析,這對于普通的應用層協議(如 Telnet)來說,并不會影響其業務的開展;然而有一些應用層協議,其報文載荷中可能也攜帶有地址或端口信息,若這些信息不能被有效轉換,就可能導致問題。譬如,某些應用層協議會在客戶端與服務器之間協商端口號,然后服務器使用協商出的端口號向客戶端發起連接。如果 NAT設備對二者的協商過程一無所知,那么當服務器向客戶端發起連接時,就會因為在 NAT 設備上找不到內部與外部的 IP 地址/端口號對應關系而造成連
26、接失敗。這個問題可以通過 ALG(Application Level Gateway,應用層網關)來解決。ALG 主要完成對應用層報文的解析和處理。NAT 利用 ALG 技術可以對應用層協議的報文載荷進行信息解析,改變封裝在其中的地址和端口信息,并完成其它必要的工作以使應用協議可以穿越 NAT。Source:192.168.1.2:33350Destination:202.38.1.2:21Host192.168.1.2/24內網口192.168.1.1/24公網口202.38.1.1/24NATFTP server192.168.1.4/24Source:202.38.1.1:1025Des
27、tination:192.168.1.4:21轉換前Source:192.168.1.2:33350Destination:202.38.1.2:21Packet from Host to Server202.38.1.2-192.168.1.4NAT serverBefore NATAfter NATWay192.168.1.2:33350NAT tableOutbound202.38.1.1:1025202.38.1.2:21Inbound192.168.1.4:21Internet轉換后Source:202.38.1.1:1025Destination:192.168.1.4:21Pac
28、ket from Server to HostSource:192.168.1.4:21Destination:202.38.1.1:1025Source:202.38.1.2:21Destination:192.168.1.2:33350Host192.168.1.2/24內網口192.168.1.1/24公網口202.38.1.1/24NATFTP server192.168.1.4/24轉換后Source:202.38.1.2:21Destination:192.168.1.2:33350202.38.1.2-192.168.1.4NAT serverInternet轉換前Source:
29、192.168.1.4:21Destination:202.38.1.1:1025202.38.1.1:1025Before NATAfter NATWayOutbound192.168.1.4:21NAT tableInbound192.168.1.2:33350202.38.1.2:21 8 ALG 機制可處理的應用層協議包括 DNS、FTP、H.323、ILS 和 SIP 等。2.4.2 基本概念 1.會話 會話記錄了傳輸層報文之間的交互信息,包括源 IP 地址、源端口、目的 IP 地址、目的端口,協議類型和源/目的 IP 地址所屬的 VPN 實例。2.動態通道 當應用層協議報文中攜帶地
30、址信息時,這些地址信息會被用于建立動態通道,后續符合該地址信息的連接將使用已經建立的動態通道來傳輸數據。2.4.3 FTP 協議的 ALG 處理 在 FTP 工作過程中,客戶端與服務器之間將建立兩條 TCP 連接:一條為控制連接,負責傳輸諸如用戶指令和參數等控制信息,其中包括發起數據連接時要用到的端口信息;另一條為數據連接,負責在服務器與客戶端之間建立數據通道以傳送文件。FTP 有兩種不同的工作模式:PORT(主動模式)和 PASV(被動模式)。不同模式下,FTP 連接建立過程中 NAT ALG 的處理機制有所不同。下面介紹兩種不同模式下 FTP 的連接建立過程。1.主動模式下的 FTP 連接
31、建立過程 在主動模式下,在由客戶端發起控制連接中,客戶端將指定的端口通過 PORT 指令發送給服務器,然后由服務器向該端口發起數據連接。主動模式下,是否需要在控制連接中進行 ALG 處理與服務器和客戶端所處的位置有關,具體如下:客戶端位于公網而服務器位于私網的情況下,由于客戶端向服務器通告的是公網地址和端口,服務器可直接向其發起數據連接,因此無需在控制連接中進行 ALG 處理??蛻舳宋挥谒骄W而服務器位于公網的情況下,由于客戶端向服務器通告的是私網地址和端口,因此需在控制連接中通過 ALG 處理將其轉換為公網地址和端口,以供服務器發起數據連接所用。圖9 主動模式下的 ALG 處理 Data co
32、nnect(IP 2,Port 2)Data connect(IP 1,Port 1)NATClientFTP serverControlconnectionDataconnectionIntranetInternetPORT(IP 1,Port 1)ALG:(IP 1,Port 1)-(IP 2,Port 2)PORT(IP 2,Port 2)9 如圖 9 所示,位于內部網絡的客戶端以 PORT 方式訪問位于外部網絡的 FTP 服務器,NAT 設備上配置了內網地址 IP1 到外網地址 IP2 的映射。同時,在 NAT 設備上開啟 ALG 功能。(2)首先,由客戶端向服務器發送 PORT 指令
33、,以向服務器通知發起數據連接所應使用的地址和端口(IP 1,Port 1);(3)NAT 設備收到該指令后,將其中載荷所攜帶的私網地址和端口(IP 1,Port 1)替換為公網地址和端口(IP 2,Port 2),并據此創建相應的 PAT 表項此過程即為 ALG 處理;(4)服務器收到該指令后,主動向公網地址和端口(IP 2,Port 2)發起數據連接,并在通過 NAT設備時被轉化為私網地址和端口(IP 1,Port 1)。2.被動模式下的 FTP 連接建立過程 在被動模式下,在由客戶端發起控制連接中,客戶端向服務器發送 PASV 請求來通知服務器它將發起被動模式,服務器再將指定的端口通過 P
34、ASV 響應發送給客戶端,然后由客戶端向該端口發起數據連接。被動模式下,是否需要在控制連接中進行 ALG 處理與服務器和客戶端所處的位置有關,具體如下:服務器位于公網而客戶端位于私網的情況下,由于服務器向客戶端通告的是公網地址和端口,客戶端可直接向其發起數據連接,因此無需在控制連接中進行 ALG 處理。服務器位于私網而客戶端位于公網的情況下,由于服務器向客戶端通告的是私網地址和端口,因此需在控制連接中通過 ALG 處理將其轉換為公網地址和端口,以供客戶端發起數據連接所用。圖10 被動模式下的 ALG 處理 如圖 10 所示,位于外部網絡的 FTP 客戶端以 PASV 方式訪問位于內部網絡的 F
35、TP 服務器,NAT設備上配置了內網地址 IP1 到外網地址 IP2 的映射,開啟 ALG 功能后的地址轉換過程如下:(2)客戶端向服務器發送 PASV 請求;(3)服務器收到該請求后,選擇并打開服務器端數據通道的地址和端口(IP 1,Port 1),并通過PASV 響應向客戶端返回該地址和端口;(4)NAT 設備收到該響應后,將其中載荷所攜帶的私網地址和端口(IP 1,Port 1)替換為公網地址和端口(IP 2,Port 2),并據此創建相應的 PAT 表項此過程即為 ALG 處理;PASVData connect(IP 2,Port 2)Data connect(IP 1,Port 1)
36、ClientFTP serverEntering passive(IP 1,Port 1)ControlconnectionDataconnectionNATInternetIntranetALG:(IP 1,Port 1)-(IP 2,Port 2)Entering passive(IP 2,Port 2)10(5)客戶端收到該響應后,向公網地址和端口(IP 2,Port 2)發起數據連接,并在通過 NAT 設備時被轉換為私網地址和端口(IP 1,Port 1)。2.4.4 DNS 協議的 ALG 處理 如圖 11 所示,私網側主機要使用域名訪問內部 WWW 服務器(域名為 ,對外公網地址為
37、 50.10.10.10),但它查詢的 DNS 服務器位于公網,DNS 服務器的響應報文中包含的是內部WWW 服務器的公網地址,導致收到響應報文的私網用戶無法利用域名訪問內部服務器。此時,需要 NAT 設備在轉換 DNS 報文的同時進行 ALG 處理,將 DNS 響應報文中攜帶的公網地址轉換為服務器的私網地址。圖11 DNS 報文載荷的 ALG處理示意圖 DNS 報文載荷的 NAT ALG 處理機制如下:(2)私網主機向公網的 DNS 服務器發起 DNS 查詢。(3)DNS 服務器收到查詢報文后進行查詢處理,并將查詢到的結果(域名 對應 IP地址 50.10.10.10)放在 DNS 響應報文
38、(DNS Answer)中發送給私網主機對應的公網地址。(4)DNS 響應報文在到達具有 ALG 特性的 NAT 設備時,報文載荷中的公網地址會被映射成為內部 WWW 服務器的私網地址。即,NAT 設備將收到的 DNS 響應報文數據載荷中的 IP 地址50.10.10.10 替換為 192.168.0.10 后,將 DNS 響應報文發往私網。(5)這樣,私網主機收到的DNS響應報文中就攜帶了 的私網 IP地址,從而實現私網客戶端通過公網 DNS 服務器以域名方式訪問私網服務器的功能。192.168.0.3I50.10.10.10DNS serverWWW =192.168.0.10HostNA
39、T(1)DNS request for (2)DNS answer=50.10.10.10ALG處理(3)DNS answer=192.168.0.10(192.168.0.1050.10.10.10)11 2.4.5 ICMP 協議的 ALG 處理 如圖 12 所示,公網側的主機要訪問私網中的 FTP 服務器,該內部服務器對外的公網地址為50.10.10.10。若內部 FTP 服務器的 21 端口未打開,那么它會向主機發送一個 ICMP 差錯報文,該差錯報文的數據載荷中的 IP 地址信息為 FTP 服務器的私網 IP 地址。在這種情況下,如果 ICMP 差錯報文未經 ALG 處理直接從私網發
40、送到公網,那么公網主機就無法識別該差錯報文屬于哪個應用程序,同時也會將 FTP 服務器的私網地址泄漏到公網中。因此,需要 NAT 設備對 ICMP 差錯報文進行 ALG處理。ALG會根據原始 FTP 會話的地址轉換信息記錄,將其數據載荷中的私網地址 192.168.0.10 還原成公網地址 50.10.10.10,再將該 ICMP 差錯報文發送到公網。這樣,公網主機就可以正確識別出錯的應用程序,同時也避免了私網地址的泄漏。圖12 ICMP 差錯報文載荷的 ALG 處理示意圖 2.4.6 DNS Mapping 方式 DNS Mapping 主要用于解決普通的 NAT ALG 在特定組網時的問題
41、。如圖 13 所示,DNS 服務器位于公網,NAT 設備使用一個公網地址映射內部的多個服務器,內網主機通過域名訪問內網 Web 服務器時,由于 NAT 設備開啟了 DNS ALG 功能,因此會將 DNS 響應報文中的公網地址修改為內部服務器的私網地址。但是,由于 DNS 服務器的響應報文的載荷中只包含域名和應用服務器的外網IP 地址,不包含傳輸協議類型和端口號。所以 NAT 設備在修改 DNS 響應報文載荷中的外網 IP 地址時,有可能將其修改為 FTP 服務器的私網地址。這種情況下,內部主機收到響應報文后向 FTP服務器發起 HTTP 訪問,該訪問將以失敗告終。為了解決上述問題,需要借助 D
42、NS mapping,通過指定域名與應用服務器的外網 IP 地址、端口和協議的映射關系,由域名獲取應用服務器的外網 IP 地址、端口和協議,進而精確匹配內部服務器配置獲取應用服務器的內網 IP 地址。IP networkHost2.2.2.2FTP server192.168.0.10NATALG處理(192.168.0.1050.10.10.10)該請求報文的目的地址已被轉換成192.168.0.10Host向50.10.10.10發起FTP連接FTP server的21端口未打開,發送ICMP端口不可達報文,該報文數據載荷中的目的IP地址是192.168.0.10ICMP報文數據載荷中的目
43、的IP地址是50.10.10.10Private networkPublic network 12 當 NAT 設備收到 DNS 響應報文后,載荷中域名 對應的 IP 地址為 162.10.2.5,NAT設備查找 DNS Mapping,得到“域名公網 IP 地址公網端口協議類型”的對應關系,然后再從 NAT server 配置中得到對應的 Web 服務器的私網地址 10.1.1.200,NAT 設備將 DNS 響應報文中的地址修改為 10.1.1.200 后發送給內部主機。內部主機收到該 DNS 相應后,向 10.1.1.200 對應的服務器發起 HTTP 訪問。圖13 DNS Mappin
44、g 方式原理圖 2.5 NAT支持多VPN實例 NAT 多實例主要針對 MPLS L3VPN 用戶訪問公網或為公網提供服務而提出,可實現不同 VPN 內使用相同私網地址的用戶同時訪問外部網絡。NAT多實例在轉換過程中增加了對VPN的識別和處理,把 VPN 作為區分會話的參數之一,以此實現了多實例同時訪問公網的功能。1.多實例 NO-PAT 與單實例一樣,多實例的 NO-PAT 只對私網的 IP 地址進行轉換,但不同的是多實例 NO-PAT 在原有私網IP地址轉換的基礎上增加了對VPN的識別和處理,即在NAT轉換表項中增加了VPN信息,并將其作為轉換依據之一,以確保將不同 VPN 內相同的私網
45、IP 地址轉換成不同的公網 IP 地址。2.多實例 PAT 與單實例相比,多實例的 PAT 在原有私網 IP 地址和端口號轉換的基礎上,增加了對 VPN 的識別和處理,即在 PAT 轉換表項中增加了 VPN 信息,并將其作為轉換依據之一,以確保將不同 VPN 內相同的“私網 IP 地址端口號”轉換成不同的“公網 IP 地址端口號”。DNS request for 211.100.7.34/=162.10.2.5NATDNS serverIntranetInternetWeb server10.1.1.200/DNS response=162.10.2.5DNS response=10.1.1.
46、200DNS mapping: protocol tcp ip 162.10.2.5 port httpNAT server:protocol tcp global 162.10.2.5 inside 10.1.1.200 httpHost10.1.1.100/8FTP server10.1.1.300 13 3.多實例 NAT Server 與單實例相比,多實例的 NAT Server 增加了私網側對 VPN 的支持,即在所配置的靜態 NAT 轉換表項中增加了 VPN 信息,并將其作為轉換依據之一,以確保將訪問不同 VPN 的報文送達正確的VPN,其處理流程與單實例相同。4.多實例 EASY
47、 IP 與單實例相比,多實例的 EASY IP 在原有私網 IP 地址和端口號轉換的基礎上,增加了對 VPN 的識別和處理,即在 EASY IP 轉換表項中增加了 VPN 信息,并將其作為轉換依據之一,以確保將不同VPN 內相同的“私網 IP 地址端口號”轉換成不同的“公網 IP 地址端口號”。5.多實例 DNS Mapping 與單實例相比,多實例的 DNS Mapping 增加了私網側對 VPN 的支持,即在所配置的 DNS Mapping映射表項中增加了 VPN 信息,并將其作為轉換依據之一,以確保將訪問不同 VPN 的報文送達正確的 VPN,其處理流程與單實例相同。6.多實例 ALG
48、處理 多實例的 ALG處理流程與單實例基本相同,不同的是 NAT 設備在創建公網與私網的地址端口映射表項時,NAT 多實例在私網側地址和端口基礎上增加了對 VPN 的識別與處理,即在映射表項中增加了 VPN 信息,譬如將私網側的(VPN A,IP 1,Port 1)與公網側的(IP 2,Port 2)進行映射。3 典型組網應用典型組網應用 3.1 私網主機訪問公網服務器 在許多小區、學校和企業網的內網規劃中,由于公網地址資源有限,內部用戶實際使用的都是私網地址,在這種情況下,可以使用 NAT 技術來實現內部用戶對公網的訪問。如圖 14 所示,通過在NAT 網關上配置 NAT 轉換規則,可以實現
49、私網主機訪問公網服務器。圖14 私網主機訪問公網服務器組網圖 3.2 公網主機訪問私網服務器 在某些場合,私網內部有一些服務器需要向公網提供服務,比如一些位于私網內的 Web 服務器、FTP 服務器等,NAT 可以支持這樣的應用。如圖 15 所示,通過配置 NAT Server,即定義“公網 IP192.168.1.1/24192.168.1.2/24NATHost AHost BServerIntranet192.168.1.3/24Host CInternet210.33.5.1/24 14 地址端口號”與“私網 IP 地址端口號”間的映射關系,位于公網的主機能夠通過該映射關系訪問到位于私
50、網的服務器。圖15 公網主機訪問私網服務器組網圖 3.3 私網主機通過域名訪問私網服務器 在某些場合,私網用戶希望通過域名訪問位于同一私網的內部服務器,而 DNS 服務器卻位于公網,此時可通過 DNS Mapping 方式來實現。如圖 16 所示,通過配置 DNS Mapping 映射表,即定義“域名公網 IP 地址公網端口協議類型”間的映射關系,將 DNS 響應報文中攜帶的公網 IP 地址替換成內部服務器的私網 IP 地址,從而使私網用戶可以通過域名來訪問該服務器。圖16 私網主機通過域名訪問私網服務器組網圖 3.4 不同VPN的主機使用相同的私網地址訪問公網 當分屬不同 MPLS VPN
51、的主機使用相同的私網地址,并通過同一個出口設備訪問 Internet 時,NAT多實例可實現這些地址重疊的主機同時訪問公網服務器。如圖 17 所示,Host A 和 Host B 具有相同的私網地址,且分屬不同的 VPN,NAT 能夠區分屬于不同 VPN 的主機,允許二者同時訪問公網服務器。192.168.1.1/24192.168.1.2/24NATHost AHost BIntranet192.168.1.100/24ServerInternetHost C210.33.5.1/24192.168.1.1/24192.168.1.2/24NATHost AHost BIntranet192
52、.168.1.100/Web serverInternet210.33.5.1/=211.65.3.1DNS server 15 圖17 NAT 多實例組網圖 4 參考文獻參考文獻 RFC 1631:The IP Network Address Translator(NAT)RFC 2663:IP Network Address Translator(NAT)Terminology and Considerations RFC 2993:Architectural Implications of NAT RFC 3022:Traditional IP Network Address Translator(Traditional NAT)RFC 3027:Protocol Complications with the IP Network Address Translator NATVPN AVPN BCE ACE B211.65.3.1/24ServerInternetHost AHost B192.168.1.1/24192.168.1.1/24210.33.5.1/24