實驗目的:
理解NAT地址轉換的原理,熟悉NAT轉換的配置過程。進一步理解NAT在擴展IP地址方面的巨大功效。理解NAT如何將內部地址轉換成外部地址的過程。
實驗拓撲:
實驗內容:
1.靜態NAT
首先在R1上起2個環回接口loop0和loop1,爲每個loop口分配一個IP地址,模擬2臺內部PC機,R1的S1當作到外網的接口。而R3這裏當作外部一臺服務器。PC機想要與R3通訊,不準利用NAT來將內部PC地址轉換成R1上S0的地址實現。
路由器的基本配置
R1#show ip int b
Interface IP-Address OK? Method Status Prot
ocol
Ethernet0 unassigned YES unset administratively down down
Loopback0 192.168.2.1 YES manual up up
Loopback1 192.168.3.1 YES manual up up
Serial0 61.32.34.6 YES manual up up
Serial1 unassigned YES unset administratively down dow
R2#show ip int b
Serial0 unassigned YES TFTP up up
Serial1 61.32.34.5 YES manual up up
此時用擴展PING以192.168.2.1 和192.168.3.1爲源以61.32.34.5爲目的PING
R1#ping
Protocol [ip]:
Target IP address:
% Bad IP address
Target IP address: 61.32.34.5
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 192.168.2.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 61.32.34.5, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
Source address or interface: 192.168.3.1
顯然沒法ping通,即內部地址沒法直接與外部地址通訊,因而咱們啓用NAT轉換。
◎啓動NAT靜態轉換。
R1(config)#int loop0
R1(config-if)#ip nat inside 定義內部接口
R1(config-if)#int loop1
R1(config-if)#ip nat inside定義內部接口
R1(config-if)#int s0
R1(config-if)#ip nat outside定義外部接口
R1(config)#ip nat inside source static 192.168.2.1 61.32.34.6
定義將內部的接口地址靜態的的一對一的轉換爲61.32.34.6
R1(config)#ip nat inside source static 192.168.3.1 61.32.34.7
定義將內部的接口地址靜態的的一對一的轉換爲61.32.34.7
此時用擴展Ping以192.168.2.1 和192.168.3.1爲源以61.32.34.5爲目的PING
R1#debug ip nat 開放debug進行ping包時候的抓包轉換測試。
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/32/36 ms
00:36:36: NAT: s=192.168.2.1->61.32.34.6, d=61.32.34.5 [20]
看到咱們的源已經進行了轉換,轉換後的地址才能夠與目的地址進行通訊
00:36:36: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.1 [20]
00:36:36: NAT: s=192.168.2.1->61.32.34.6, d=61.32.34.5 [21]
00:36:36: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.1 [21]
00:36:36: NAT: s=192.168.2.1->61.32.34.6, d=61.32.34.5 [22]
00:36:36: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.1 [22]
00:36:36: NAT: s=192.168.2.1->61.32.34.6, d=61.32.34.5 [23]
00:36:36: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.1 [23]
00:36:36: NAT: s=192.168.2.1->61.32.34.6, d=61.32.34.5 [24]
00:36:36: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.1 [24]
00:37:40: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [25]
00:37:40: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [25]
00:37:40: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [26]
00:37:40: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [26]
00:37:40: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [27]
00:37:40: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [27]
00:37:40: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [28]
00:37:40: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [28]
00:37:40: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [29]
00:37:40: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [29]
有PING的結果能夠看出,如今內部PC已經能夠和外部通訊了,而且經過debug信息能夠看到NAT轉換已經開始運行。但這種轉換是NAT裏最簡單的轉換,下面咱們學習其餘幾種NAT轉換方式。
2.動態NAT
1.啓動動態NAT
爲loop0接口定義多個地址
R1(config-if)#ip add 192.168.2.1 255.255.255.0
R1(config-if)#ip add 192.168.2.2 255.255.255.0 sec
R1(config-if)#ip add 192.168.2.3 255.255.255.0 sec
R1(config-if)#ip add 192.168.2.4 255.255.255.0 sec
R1(config-if)#ip add 192.168.2.5 255.255.255.0 sec
R1(config-if)#ip add 192.168.2.6 255.255.255.0 sec
R1(config-if)#ip add 192.168.2.7 255.255.255.0 sec
R1(config-if)#ip add 192.168.2.8 255.255.255.0 sec
R1(config-if)#ip add 192.168.2.9 255.255.255.0 sec
定義外部地址池
R1(config)#ip nat pool outpool 61.32.34.6 61.32.34.7 netmask 255.255.255.0 定義了一個轉換池的名字叫作outpool,也就是說,你轉換後的地址是從這個池子裏面出的。
定義容許的轉換的內部地址
R1(config)#access-list 10 permit host 192.168.2.1
R1(config)#access-list 10 permit host 192.168.3.1
定義轉換
R1(config)#ip nat inside source list 10 pool outpool 定義了內部須要轉換的是有access-list來控制的10,而轉後後的地址是從outpool裏面來提取的。
◎此時用擴展PING以192.168.2.2 和192.168.2.3爲源以61.32.34.5爲目的PING
觀察轉換效果
R1#debug ip nat
R1#ping
Source address or interface: 192.168.2.3
Success rate is 100 percent (5/5), round-trip min/avg/max = 40/41/44 ms
01:06:35: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [65]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [65]
01:06:35: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [66]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [66]
01:06:35: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [67]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [67]
01:06:35: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [68]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [68]
01:06:35: NAT: s=192.168.3.1->61.32.34.7, d=61.32.34.5 [69]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.3.1 [69]
Source address or interface: 192.168.2.2
01:13:28: NAT: s=192.168.2.2->61.32.34.6, d=61.32.34.5 [85]
01:13:28: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.2 [85]
01:13:28: NAT: s=192.168.2.2->61.32.34.6, d=61.32.34.5 [86]
01:13:28: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.2 [86]
01:13:29: NAT: s=192.168.2.2->61.32.34.6, d=61.32.34.5 [87]
01:13:29: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.2 [87]
01:13:29: NAT: s=192.168.2.2->61.32.34.6, d=61.32.34.5 [88]
01:13:29: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.2 [88]
01:13:29: NAT: s=192.168.2.2->61.32.34.6, d=61.32.34.5 [89]
01:13:29: NAT*: s=61.32.34.5, d=61.32.34.6->192.168.2.2 [89]
當咱們清楚全部的NAT會話之後,再次PING的時候的轉換則有
01:06:35: NAT: s=192.168.2.3->61.32.34.6, d=61.32.34.5 [65]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.6->192.168. 2.3 [65]
01:06:35: NAT: s=192.168.2.3->61.32.34.6, d=61.32.34.5 [66]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.6->192.168. 2.3 [66]
01:06:35: NAT: s=192.168. 2.3->61.32.34.6, d=61.32.34.5 [67]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.6->192.168. 2.3 [67]
01:06:35: NAT: s=192.168. 2.3->61.32.34.6, d=61.32.34.5 [68]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.6->192.1682.3 [68]
01:06:35: NAT: s=192.168. 2.3->61.32.34.6, d=61.32.34.5 [69]
01:06:35: NAT*: s=61.32.34.5, d=61.32.34.6->192.168. 2.3 [69]
01:13:28: NAT: s=192.168.2.2->61.32.34.7, d=61.32.34.5 [85]
01:13:28: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.2 [85]
01:13:28: NAT: s=192.168.2.2->61.32.34.7, d=61.32.34.5 [86]
01:13:28: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.2 [86]
01:13:29: NAT: s=192.168.2.2->61.32.34.7, d=61.32.34.5 [87]
01:13:29: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.2 [87]
01:13:29: NAT: s=192.168.2.2->61.32.34.7, d=61.32.34.5 [88]
01:13:29: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.2 [88]
01:13:29: NAT: s=192.168.2.2->61.32.34.7, d=61.32.34.5 [89]
01:13:29: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.2 [89]
顯然2次轉換的地址不一樣,即轉換是動態的。
Source address or interface: 192.168.2.4
01:19:38: NAT: translation failed (E), dropping packet s=192.168.2.4 d=61.32.34.
5.
01:19:40: NAT: translation failed (E), dropping packet s=192.168.2.4 d=61.32.34
01:19:42: NAT: translation failed (E), dropping packet s=192.168.2.4 d=61.32.34.
01:19:44: NAT: translation failed (E), dropping packet s=192.168.2.4 d=61.32.34.
01:19:46: NAT: translation failed (E), dropping packet s=192.168.2.4 d=61.32.34.
重點*:當咱們第2次PING的時候提示轉換錯誤,NAT放棄轉換,是由於外部地址只有2個,因此只能轉換2個內部地址,若是想轉換第3個地址,必須前面2個轉換中有一個轉換中止。可見這種轉換有很大的侷限性,爲了可以實現多個地址轉換成一個地址,咱們須要新的轉換方法。即NAT超載。
3.NAT超載
NAT超載配置很簡單隻需添加一個overload參數便可:
R1(config)#ip nat inside source list 10 pool outpool overload 用overload是用於反覆的提取地址池中的地址,實際上是一種pat的技術。也就是利用一個邏輯地址的多個端口來進行轉換。
此時用擴展ping命令來測試NAT轉換。
01:28:10: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [95]
01:28:10: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [95]
01:28:10: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [96]
01:28:10: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [96]
01:28:10: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [97]
01:28:10: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [97]
01:28:10: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [98]
01:28:11: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [98]
01:28:11: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [99]
01:28:11: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [99]
01:29:03: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [105]
01:29:03: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [105]
01:29:03: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [106]
01:29:03: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [106]
01:29:03: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [107]
01:29:03: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [107]
01:29:03: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [108]
01:29:03: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [108]
01:29:03: NAT: s=192.168.2.1->61.32.34.7, d=61.32.34.5 [109]
01:29:03: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.1 [109]
1:30:40: NAT: s=192.168.2.3->61.32.34.7, d=61.32.34.5 [115]
01:30:40: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.3 [115]
01:30:40: NAT: s=192.168.2.3->61.32.34.7, d=61.32.34.5 [116]
01:30:41: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.3 [116]
01:30:41: NAT: s=192.168.2.3->61.32.34.7, d=61.32.34.5 [117]
01:30:41: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.3 [117]
01:30:41: NAT: s=192.168.2.3->61.32.34.7, d=61.32.34.5 [118]
01:30:41: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.3 [118]
01:30:41: NAT: s=192.168.2.3->61.32.34.7, d=61.32.34.5 [119]
01:30:41: NAT*: s=61.32.34.5, d=61.32.34.7->192.168.2.3 [119]
觀察3次轉換的地址,發現都是轉換成61.32.34.7,即容許多個地址轉換成一個地址,這就是所謂的NAT超載,這種NAT轉換可以擴展IP地址的數量,是最長用的一種NAT轉換方式。
實驗總結: NAT技術是如今網絡中應用的比較普遍的技術,可是其實它的核心仍是很簡單的,對於它的變化,咱們只能告訴你們多多掌握,由於這樣的話對你理解包的交換原理是頗有用的。