1. 網絡地址轉換(NAT)
1.1 NAT的應用場景
(1)應用場景:允許將私有IP地址映射到公網地址,以減緩IP地址空間的消耗
①需要連接Internet,但主機沒有公網IP地址
②更換了一個新的ISP,需要重新組織網絡時,可使用NAT轉換
③需要合並兩個具有相同網絡地址的內網
(2)NAT的優缺點
| 優點 |
缺點 |
| ①節約合法的公網IP地址 ②減少地址重疊現象 ③增加連接Internet的靈活性 ④增加內網的安全性 |
①地址轉換產生交換延遲,也就是消耗路由器性能。 ②無法進行端到端的IP跟蹤 ③某些應用無法在NAT的網絡中運行 |
1.2 NAT的類型
(1)靜態NAT
指將內部網絡的私有IP地址轉換為公有IP地址,IP地址對是一對一的,即兩個地址的映射關系己綁定死了。某個私有IP地址只轉換為某個公有IP地址,借助於靜態轉換,可以實現外部網絡對內部網絡中某些特定設備(如服務器)的訪問。
(2)動態NAT
①指將內部網絡的私有IP地址轉換為公用IP地址時,IP地址對是不確定的,而是隨機的。所有被授權訪問上Internet的私有IP地址可隨機轉換為任何指定的合法IP地址池中一個IP地址。如果地址池的IP地址做映射用完了,剩余的內網計算機將不能再訪問外網(本質上,也是一對一的關系,只不過這種關系是動態綁定的!)。
②當要與外界進行通信的內部節點,如果還沒有建立轉換映射,邊緣路由器將會動態的從公網IP地址池中選擇IP對內部地址進行轉化。每個轉換條目在連接建立時動態建立,而在連接終止時會被回收。因此,外網的計算機不能訪問內網的計算機(因為映射關系是內網計算機發起且連接終止時就回收了!)。
③動態NAT,一般用在當內部網絡中只有少數節點與外界建立連接的場合時,因為只有少數的內部地址需要被轉化成全局地址,可以減少對合法地址的需求。
(3)PAT
①這是最流行的NAT配置類型,實際上是動態NAT的一種形式,它映射多個私有網IP地址到一個公網IP地址,通過使用不同的端口來區分內網主機,被稱為端口地址轉換(PAT,Port Address Translation)。(見后面實驗部分的分析,怎么用端口區分內網主機?)
②使用PAT時,internet的主機無法訪問內網主機。如果需要這種訪問,則需要做端口映射(注意,端口映射和端口地址轉換PAT是兩個概念!PAT是使得多個內網主機可以通過一個公網IP同時訪問Internet,而端口映射則可以讓internet主機訪問內網主機!見后面《端口映射》的內容)
2. 實現網絡地址轉換
2.1 配置靜態NAT
(1)網絡拓撲
映射關系:PCx(10.0.0.y)映射到131.107.0.y;
(2)靜態NAT映射數據包轉換過程

①PC0訪問Internet的Server,數據包經CPE路由器,根據配置的靜態映射,數據包的源地址被131.107.0.2地址替換。
②Server向131.107.0.2發送返回的數據包,在進入內網時,根據靜態映射表,將會使用PC0的IP地址替換數據包的目標地址(10.0.0.2)。
(3)在CPE路由器上配置靜態映射表
//1. 靜態NAT Router#conf t Router(config)#access-list 12 permit 192.168.1.0 0.0.0.255 //定義ACL,只允許192.168.1.0/24網段 Router(config)#line vty 0 15 //進入VTY虛接口,0和15分別表示起始和結束的vty的0-15號接口。 Router(config-line)#access-class 12 in //將編號為12的ACL綁定到vty Router(config-line)# CPE#conf t CPE(config)#ip nat inside source static 10.0.0.2 131.107.0.2 CPE(config)#ip nat inside source static 10.0.0.3 131.107.0.3 CPE(config)#ip nat inside source static 10.0.0.4 131.107.0.4 CPE(config)#ip nat inside source static 10.0.0.5 131.107.0.5 CPE(config)#ip nat inside source static 10.0.0.6 131.107.0.6 CPE(config)#interface fastEthernet 0/1 CPE(config-if)#ip nat inside //指定該接口為NAT的內部端口 CPE(config-if)#ex CPE(config)#interface serial 0/0 CPE(config-if)#ip nat outside //指定該接口為NAT的外網端口 CPE(config-if)#ex CPE(config)#exit CPE#debug ip nat //讓路由器顯示NAT信息
(4)驗證:PCO主機ping 202.99.160.2,同時觀察CPE路由器顯示的NAT信息(要事先debug ip NAT開啟這個功能!)。同時,由於配置了靜態映射,外網的計算機可能通過訪問131.107.0.6直接訪問內網的WebServer的網站。
2.2 配置動態NAT
(1)網絡拓撲
(2)在路由器上配置動態NAT
//1. 在CPE路由器上配置動態NAT CPE>en CPE#config t //定義ACL,如果內網有多個網段需要NAT,則需要在ACL都添加上 CPE(config)#access-list 10 permit 10.0.0.0 0.0.0.255 //指定公網地址池:名稱為mypool,起始和結束地址以及子網掩碼 CPE(config)#ip nat pool mypool 131.107.0.1 131.107.0.3 netmask 255.255.255.0 //將公網地址池與ACL綁定 CPE(config)#ip nat inside source list 10 pool mypool CPE(config)#interface serial 0/0 CPE(config-if)#ip nat outside //指定S0/0為NAT的外網接口 CPE(config-if)#ex CPE(config)#interface fastEthernet 0/1 CPE(config-if)#ip nat inside //指定f0/1為NAT的內網接口 CPE(config-if)#exit CPE(config)#exit //2. 在路由器上查看NAT配置狀態 CPE#show ip nat statistics //3. 查看NAT地址轉換信息(要先從內網ping外網主機) CPE#show ip nat translations //4. 清轉轉換表中的NAT條目 CPE#clear ip nat translations *
(3)驗證:讓pc0、pc1、pc2、pc3四台計算機同時ping 202.99.160.2。(只有3台能ping通,因為地址池只有3個公網IP可被拿來映射!)
2.3 配置PAT
(1)網絡拓撲圖(與前面例相同)
(2)端口地址轉換(PAT):源端口的替換
①假設PC0和PC1都是使用1723端口訪問外網的Server。如果數據包只做地址轉換(即端口不轉換),那么返回的數據目標地址都是131.107.0.1,目標端口都是1723,路由器就沒有辦法確定這個數據包應發送給PC0還是PC1。
②如果使用一個公網IP地址讓很多內網計算機訪問Internet,必須由路由器對訪問Internet的數據包進行統一的源端口替換,將源端口替換成不同的端口出去(如4000、4001),這樣路由器就可以根據返回的數據包目標端口確定數據包應該轉發給哪一個內網計算機,這就是端口地址轉換的原理!
(3)在路由器上配置PAT
//1. 在CPE路由器上配置PAT CPE>en CPE#config t //將內網需要PAT出去的網段添加到ACL中 CPE(config)#access-list 10 permit 10.0.0.0 0.0.0.255 //添加公網IP地址池(名稱為mypool,前后IP一樣,即只有一個公網IP)。 CPE(config)#ip nat pool mypool 131.107.0.1 131.107.0.1 netmask 255.255.255.0 //將公網地址池與ACL綁定(注意overload參數會啟用PAT) CPE(config)#ip nat inside source list 10 pool mypool overload CPE(config)#interface serial 0/0 CPE(config-if)#ip nat outside //指定NAT的外網接口 CPE(config-if)#ex CPE(config)#interface fastEthernet 0/1 CPE(config-if)#ip nat inside //指定NAT的內網接口 CPE(config-if)#ex CPE(config)#ex CPE#show ip nat statistics //查看NAT配置狀態 Total translations: 0 (0 static, 0 dynamic, 0 extended) Outside Interfaces: Serial0/0 Inside Interfaces: FastEthernet0/1 Hits: 0 Misses: 0 Expired translations: 0 Dynamic mappings: -- Inside Source access-list 10 pool mypool refCount 0 pool mypool: netmask 255.255.255.0 start 131.107.0.1 end 131.107.0.1 type generic, total addresses 1 , allocated 0 (0%), misses 0 CPE#
(4)驗證:使用內網中的任何一台主機都可以ping通internet上的server。
2.4 配置端口映射
(1)PAT存在的的問題:通過配置PAT,只能實現內網主機使用公網IP地址訪問internet,但internet的主機無法訪問內網主機(如內網的WebServer),這時可以通過端口映射來解決這一問題。
(2)網絡拓撲圖
(3)在路由器上配置端口映射
//1. 在CPE路由器上配置端口映射 CPE>en CPE#conf t //靜態端口映射 CPE(config)#ip nat inside source static tcp 10.0.0.5 80 131.107.0.1 80 CPE(config)#ip nat inside source static tcp 10.0.0.6 80 131.107.0.1 81 CPE(config)#ip nat inside source static tcp 10.0.0.4 25 131.107.0.1 25 CPE(config)#ip nat inside source static tcp 10.0.0.4 110 131.107.0.1 110 CPE(config)#interface fastEthernet 0/1 CPE(config-if)#ip nat inside //指定NAT的內網接口 CPE(config-if)#ex CPE(config)#interface serial 0/0 CPE(config-if)#ip nat outside //指定NAT的外網接口 CPE(config-if)#ex CPE(config)#
(4)驗證:通過internet上的PC5訪問內網的WebServer、郵件服務器。
3. 在Windows上實現網絡地址轉換和端口映射
3.1 在Windows Server 2003上配置網絡地址轉換
(1)網絡拓撲圖
(2)實驗環境
①Win2003_NATServer有兩張網卡,其中連接內網的網卡(名稱改為:inner):172.16.0.1/24(不用寫網關),連接外網的網卡(名稱改為:outer):192.168.1.4/24,默認網關:192.168.1.1。
②內網中WebServer服務器:172.16.0.3/24,默認網關:172.16.0.1
(3)設置NAT
①“控制面板”→“管理工具”→“路由和遠程訪問”→“配置並啟用路由和遠程訪問” →“自定義配置”→“NAT和基本防火牆”
②新增連接到內網網卡接口:在左側樹狀節點中選擇“NAT/基本防火牆”→“新增接口”→選擇內網網卡,名稱為“inner”→接口類型為“專用接口連接到專用網絡”。
③新增連接到外網網卡的接口:“NAT/基本防火牆”→“新增接口”→選擇外網網卡,名稱為“outer”→接口類型為“專用接口連接到專用網絡”。(至此,內網計算機可以訪問internet的計算機了!)
④可以為“inner”接口或“outer”接口啟用防火牆:如選中“inner”接口→“屬性”→在“靜態數據包篩選器”的“入站篩選器”或“出站篩選器”中進行設置。
⑤如果不要NAT轉換而是采用路由器轉發,則需要在Router1路由器上添加到172.16.0.0/24的網段的下一段給192.168.1.4,否則內網數據包可以出去,但響應數據包沒辦法回來。而在NAT下內網計算機之所以能被轉發,是因為內網IP到Router1時,都被轉成了192.168.1.4,回來時通過NAT又被轉成內網地址(172.16.0.x)了,所以數據包的收發都沒問題。
(4)設置端口映射,讓外網的計算機可以訪問內網的WebServer服務器(172.16.0.3)
①在“NAT/基本防火牆”中選擇“outer”接口→“屬性”→“服務和端口”→“添加”,然后寫上“傳入端口”、“專用網址”和“傳出端口”。(傳入和傳輸是針對outer接口來講的)
②在pc0上用瀏覽器訪問172.16.0.3服務器上的網站。但要讓interner上算機也可以訪問內網的Web服務器,還需要在Router1將相應的端口映射到192.168.1.4(具體操作見前面的《端口映射》部分)。
3.2 在Windows XP上配置連接共享和端口映射
(1)網絡拓撲圖
(2)網絡設置
①在宿主機上將WLAN網卡的連接共享給VMNet2網卡。(這相當宿主機成為一台簡單的PAT/NAT服務器,將來自於內網的地址轉發為外網IP,或者反之)
②重新設置VMNet2網卡IP為10.0.0.1/24(注意:作為內網網關的網卡,本身不要寫網關!)
③將內網計算機的默認網關設置為10.0.0.1,這樣就可以訪問Internet了。
