網絡地址轉換協議(NAT)及其應用實例
1. NAT的含義
當在專用網內部的一些主機本來已經分配到了本地IP地址(即僅在本專用網內使用的專用地址),但現在又想和因特網上的主機通信(并不需要加密)時,可使用NAT(Network Address Translation,網絡地址轉換)方法。
這種方法需要在專用網連接到因特網的路由器上安裝NAT軟件。裝有NAT軟件的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通信時,都要在NAT路由器上將其本地地址轉換成全球IP地址,才能和因特網連接。
另外,這種通過使用少量的公有IP 地址代表較多的私有IP 地址的方式,將有助于減緩可用的IP地址空間的枯竭。
2. NAT協議的作用
隱藏內部客戶端的身份、隱蔽私有網絡設計以及使公共IP地址租用成本最低,這些功能都可以通過使用網絡地址轉換(NAT)方便地實現。NAT是一種將包頭中的內部IP地址轉換為公共IP地址,從而在互聯網上進行傳輸的機制。
人們開發NAT是為了允許專用網絡使用任何IP地址集,并且不會與具有相同IP地址的公共互聯網主機發生沖突或抵觸。事實上,NAT將內部客戶端的IP地址轉換為外部環境中的租用地址。
NAT提供了很多優點,包括:
- 能夠只使用一個(或幾個)租用的公共IP地址將整個網絡連接到互聯網;
- 終能夠在與互聯網通信的情況下, 將RCF1918中定義的私有IP地址用于私有網絡;
- NAT通過互聯網隱藏IP地址方案和網絡拓撲結構;
- NAT還通過限制連接提供了保護,從而使只有來自于內部受保護網絡的連接才被準許從互聯網返回網絡。因此,大多數入侵攻擊會被自動擊退。
3. IP地址分類
IP被分為A、B、C、D、E五類,如表所示。其中D類子網被用于多播,E類子網被保留將來使用。IP地址由四段組成,每段一個字節八位。
(1) A類:(1.0.0.0-126.0.0.0)第一個字節為網絡號,后三個字節為主機號。該類IP地址的最前面為“0”,所以地址的網絡號取值于1~126之間。一般用于大型網絡。
默認子網掩碼:255.0.0.0或 0xFF000000
其中私有地址范圍是:10.0.0.0~10.255.255.255
(2) B類:(128.0.0.0-191.255.0.0)前兩個字節為網絡號,后兩個字節為主機號。該類IP地址的最前面為“10”,所以地址的網絡號取值于128~191之間。一般用于中等規模網絡。
默認子網掩碼:255.255.0.0或0xFFFF0000
其中私有地址范圍是:172.16.0.0~172.31.255.255
(3) C類:(192.0.0.0-223.255.255.0)前三個字節為網絡號,最后一個字節為主機號。該類IP地址的最前面為“110”,所以地址的網絡號取值于192~223之間。一般用于小型網絡。
子網掩碼:255.255.255.0或 0xFFFFFF00
其中私有地址范圍是:192.168.0.0~192.168.255.255
(4) D類:是多播地址。該類IP地址的最前面為“1110”,所以地址的網絡號取值于224~239之間。一般用于多路廣播用戶。
(5) E類:是保留地址。該類IP地址的最前面為“1111”,所以地址的網絡號取值于240~255之間。
IP地址總個數為2^32=4 294 967 296,約為43億個。其中各類地址的占比如圖1所示。
圖1. IP各類地址占比
4. NAT模式
從定義上看,NAT將一個內部的IP地址映射為一個外部的IP地址。但是,端口地址轉換PAT將一個內部的IP地址映射為一個外部IP地址和端口號的組合。因此,PAT理論上在單個外部租用IP地址上可以支持65536(2^16)個來自內部客戶端的同時發生的通信。如果使用NAT,那么租用的公共IP地址數必須與期望同時發生的通信數相同;如果使用PAT,那 么可以租用較少的公共IP地址,內部客戶端數量與外部租用IP地址數量的適當比率為100:1。在很多硬件設備和軟件產品中都可以找到NAT,這些設備和產品包括防火墻、路由器、網關和代理。NAT只能用在IP網絡中,并且在OSI模型的網絡層(第3層)上工作。
所有的路由器和通信控制設備被配置為在默認情況下不轉發來自或到達這些私有IP地址的通信。換句話說,私有IP地址在默認情況下不進行路由。因此,它們不能直接用于互聯網上的通信。然而,它們可以被輕松地用在私有網絡中,相應的私有網絡可能沒有使用路由器,或者可能只對路由器的配置進行了少許改動。通過允許從ISP處租用較少的公共IP地址,結合使用私有IP地址與NAT能夠大大減少連接互聯網的成本。
可以使用的NAT有兩種模式:靜態NAT和動態NAT:
- 靜態NAT:將特定的內部客戶端的IP地址永久地映射到特定的外部公共IP地址時,就會使用靜態模式的NAT;
- 動態NAT:動態模式的NAT允許多個內部客戶端使用較少的租用公共IP地址。因此,即使租用的公共IP地址較少,較大的內部網絡也仍然能夠訪問互聯網。這種模式使出現公共IP地址濫用的情況最少,并且將互聯網訪問成本降至最低。
在動態模式的NAT實現中,NAT系統維護了一個映射數據庫,從而使來自互聯網服務的所有響應信息正確地路由至最初的內部請求客戶端。NAT常常與代理服務器或代理防火墻相結合,從而提供額外的互聯網訪問和內容緩存功能。
因為NAT更改了數據包頭,而IPSec依賴數據包頭來阻止安全違規,所以NAT并不直接與 IPSec相容。不過,某些版本的NAT代理被設計為在NAT上支持IPSec。IPSec是一種基于標準的機制,這種機制為點對點TCP/IP通信提供了加密保護。
5. NAT應用實例
下面我們采用仿真軟件Cisco Packet Tracer來演示實際的網絡部署,軟件的下載地址及仿真的工程文件下載地址如下:
鏈接:https://pan.baidu.com/s/1DLJVuXu5kRmpgCCr7Czfpg
提取碼:w5og
網絡的拓撲結構和IP地址配置如圖2.所示,內網地址為192.168.1.*, 外網服務器的地址配置為2.2.2.2
圖2. 網絡拓撲及地址
為了便于說明,我們首先明確四類地址的范圍來定義企業內部、外部:
- 內部本地地址:企業內部的私有地址
- 內部全局地址:私有地址轉換成為的公有地址
- 外部全局地址:internet上的公有地址
- 外部本地地址:internet上的公有地址轉換成為的企業內部私有地址
(1) 配置IP地址
配置路由器R1的地址,f0/0的地址為192.168.1.200,255.255.255.0,f0/1的地址為 12.1.1.1 255.255.255.0。配置命令如下:
- R1>en
- R1#conf t
- Enter configuration commands, one perline. End with CNTL/Z.
- R1(config)#int f0/0
- R1(config-if)#ip add 192.168.1.200 255.255.255.0
- R1(config-if)#no sh
- R1(config-if)#
- R1(config-if)#int f0/1
- R1(config-if)#ip add 12.1.1.1 255.255.255.0
- R1(config-if)#no sh
配置路由器R2的地址,f0/0的地址為12.1.1.2 255.255.255.0,f0/1的地址為2.2.2.200 255.255.255.0。
- R2>en
- R2#conf t
- Enter configuration commands, one perline. End with CNTL/Z.
- R2(config)#int f0/0
- R2(config-if)#ip add 12.1.1.2 255.255.255.0
- R2(config-if)#no sh
- R2(config-if)#
- R2(config-if)#int f0/1
- R2(config-if)#ip add 2.2.2.200 255.255.255.0
- R2(config-if)#no sh
配置結果如圖3所示,
圖3. IP配置結果
配置路由器R1,配置內容是接口f0/0連接的是企業內部私有地址,f0/1連接的是internet上的公有地址。配置命令如下:
- R1>en
- R1#conf t
- Enter configuration commands, one perline. End with CNTL/Z.
- R1(config)#int f0/0
- R1(config-if)#ip nat inside
- R1(config-if)#exit
- R1(config)#int f0/1
- R1(config-if)#ip nat outside
- R1(config-if)#exit
(2) 創建NAT轉換表
a. 靜態NAT
- R1(config)#ip nat inside source static ?
- A.B.C.D Inside local IP address
- tcp Transmission ControlProtocol
- udp User Datagram Protocol
- R1(config)#ip nat inside source static192.168.1.1 ?
- A.B.C.D Inside global IP address
- R1(config)#ip nat inside source static192.168.1.1 12.1.1.11
- R1(config)#ip nat inside source static192.168.1.2 12.1.1.12
- R1(config)#end
- R1#
- %SYS-5-CONFIG_I: Configured from console byconsole
- R1#show ip nat tr
- R1#show ip nat translations
- Pro Inside global Insidelocal Outside local Outside global
- --- 12.1.1.11 192.168.1.1 --- ---
- --- 12.1.1.12 192.168.1.2
靜態NAT特點:一對一的對應關系,可以由外界主動訪問內部做地址轉換
b. 動態NAT
第一步:刪除已建立的靜態NAT
- R1#conf t
- Enter configuration commands, one perline. End with CNTL/Z.
- R1(config)#no ip nat inside source static192.168.1.2 12.1.1.12
- R1(config)#no ip nat inside source static192.168.1.1 12.1.1.11
- R1(config)#end
- R1#
- %SYS-5-CONFIG_I: Configured from console byconsole
- R1#show ip nat translations
第二步:匹配需要轉換的數據包;
- R1(config)#access-list 1 permit 192.168.1.00.0.0.255
第三步:定義轉換成為的地址池;
- R1(config)#ip nat pool BB 12.1.1.1112.1.1.12 netmask 255.255.255.0
第四步:關聯數據包和地址池;
- R1(config)#ip nat inside source list 1 poolBB
- R1#show ip nat translations
- Pro Inside global Insidelocal Outside local Outside global
- icmp 12.1.1.11:10 192.168.1.1:10 2.2.2.2:10 2.2.2.2:10
- icmp 12.1.1.11:11 192.168.1.1:11 2.2.2.2:11 2.2.2.2:11
- icmp 12.1.1.11:12 192.168.1.1:12 2.2.2.2:12 2.2.2.2:12
- icmp 12.1.1.11:9 192.168.1.1:9 2.2.2.2:9 2.2.2.2:9
動態NAT特點:一對一的對應,由客戶端觸發NAT,不能由外部主動訪問客戶端
c. PAT 地址復用
- R1(config)#ip nat inside source list 1 poolBB overload
- R1#show ip nat translations
- Pro Inside global Insidelocal Outside local Outside global
- icmp 12.1.1.11:13 192.168.1.1:13 2.2.2.2:13 2.2.2.2:13
- icmp 12.1.1.11:14 192.168.1.1:14 2.2.2.2:14 2.2.2.2:14
- icmp 12.1.1.11:15 192.168.1.1:15 2.2.2.2:15 2.2.2.2:15
- icmp 12.1.1.11:16 192.168.1.1:16 2.2.2.2:16 2.2.2.2:16
我們以靜態的NAT為例,驗證從PC1是否可以ping通Server
通過上圖可以看出,PC1到Server之間是通的。下面我們挨個的看一下整個發包測試的流程:
第一步:PC1發包,Src.IP=192.168.1.1, Dest.IP=2.2.2.2
第二步:交換機轉發,按照MAC地址轉發
第三步:路由器R1的NAT轉換,地址由原來的:Src.IP=192.168.1.1, Dest.IP=2.2.2.2,變為了 Src.IP=12.1.1.11, Dest.IP=2.2.2.2。其中192.168.1.1與12.1.1.11為NAT表定義的靜態地址轉換協議。
第四步:路由器路由轉發 Src.IP=12.1.1.11, Dest.IP=2.2.2.2
第五步:Server接收包,并回復確認,目的地址和源地址互換。Src.IP=2.2.2.2, Dest.IP=12.1.1.11。
第六步:路由器R2路由轉發,Src.IP=2.2.2.2, Dest.IP=12.1.1.11
第七步:路由器R1地址轉化,流程是第三步逆過程。
第八步:交換機轉發,根據MAC地址
第九步:PC機接收確認,Src.IP=2.2.2.2, Dest.IP=192.168.1.1













































