網絡工程師交換試驗手冊之十七:NAT轉換實驗

實驗目的:
理解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技術是現在網絡中應用的比較廣泛的技術,但是其實它的核心還是很簡單的,對於它的變化,我們只能告訴大家多多掌握,因爲這樣的話對你理解包的交換原理是很有用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章