目錄

簡介

必要條件

需求

採用元件

背景資訊

設定

網路圖表

組態

驗證

疑難排解

摘要

相關資訊

簡介

本文檔介紹使用ip nat outside source static命令和IP資料包從NAT過程得到的配置。

必要條件

需求

思科建議您瞭解以下主題：

- 使用本地和全域性NAT術語

採用元件

本檔案中的資訊是根據執行Cisco IOS®軟體版本的Cisco路由器。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

背景資訊

本文檔提供了使用ip nat outside source static命令的示例配置，並簡要說明了IP資料包在NAT過程中發生了什麼情況。以本檔案中的網路拓撲為例。

設定

網路圖表

本檔案會使用此網路設定。

網路圖表

當您從路由器R1的Loopback1介面向路由器R2的Loopback0介面發出ping命令時，會發生以下情況：

1. 在NAT路由器的外部介面(Gi0/0)上，ping資料包的源地址(SA)為172.16.89.32，目的地址(DA)為172.31.1.1。

2. NAT將SA轉換為外部本地地址172.31.16.5(對應於NAT路由器上配置的ip nat outside source static命令)。

3. 然後，NAT路由器檢查其路由表以查詢通往172.31.1.1的路由。

- 如果該路由不存在，NAT路由器將丟棄該資料包。但是在這種情況下，NAT路由器具有通過配置的靜態路由到172.31.1.1到子網172.31.1.0/24的路由。它將資料包轉發到目的地。

4. 路由器R2在其傳入介面(Gi0/0)上接收資料包，現在的SA為172.31.16.5,DA為172.31.1.1。

5. 作為響應，R2向172.31.16.5（NATted地址）傳送網際網路控制消息協定(ICMP)回應應答。

- 如果R2沒有路由，它會丟棄該資料包。但是在這種情況下，它有一個通向NAT路由器的預設路由。

- 因此，它會向NAT路由器傳送一個應答資料包，其SA為172.31.1.1,DA為172.31.16.5。

6. NAT路由器看到資料包並檢查通往172.31.16.5地址的路由。

- 如果沒有回應，則會使用ICMP無法到達回覆進行回應。

- 在本例中，它有一個配置到172.31.16.0/24子網的靜態路由，指向R1。

- 它將資料包轉換回172.16.89.32地址並將其從外部介面(Gi0/0)轉發出去。

組態

本文件使用以下組態：

- 路由器R1

- 路由器NAT — 路由器

- 路由器R2

路由器R1

hostname R1

!

!--- Output suppressed.

!

interface Loopback1

ip address 172.16.89.32 255.255.255.0

!

interface GigabitEthernet0/0

ip address 172.16.191.254 255.255.255.252

duplex auto

speed auto

!

interface GigabitEthernet0/1

no ip address

shutdown

!

!--- Output suppressed.

ip route 0.0.0.0 0.0.0.0 172.16.191.253

!--- Default route to forward packets to NAT-Router.

!--- Output suppressed.

路由器NAT — 路由器

hostname NAT-Router

!

!--- Output suppressed.

!

interface GigabitEthernet0/0

ip address 172.16.191.253 255.255.255.252

ip nat outside

ip virtual-reassembly in

duplex auto

speed auto

!

interface GigabitEthernet0/1

ip address 172.31.192.202 255.255.255.0

ip nat inside

ip virtual-reassembly in

duplex auto

speed auto

!

!--- ip nat command defines GigabitEthernet0/1 as a NAT inside interface and GigabitEthernet0/0 as a NAT outside interface.

!--- Output suppressed.

!

no ip http server

no ip http secure-server

ip nat outside source static 172.16.89.32 172.31.16.5

ip route 172.31.1.0 255.255.255.0 172.31.192.201

ip route 172.31.16.0 255.255.255.0 172.16.191.254

!

!--- Outside local address is defined as 172.31.16.5.

!--- Static routes for reaching the loopback interfaces on R2 and subnet 172.31.16.0 towards R1.

注意:請注意，在此特定情況下，不需要指向R1上Loopback1的靜態路由。這是因為，當ICMP應答進入NAT路由器時，首先檢查路由表以查詢目標，然後執行地址轉換。

路由器R2

hostname R2

!

!--- Output suppressed.

!

interface Loopback0

ip address 172.31.1.1 255.255.255.0

!

interface GigabitEthernet0/0

ip address 172.31.192.201 255.255.255.0

duplex auto

speed auto

!

!--- Output suppressed.

ip route 0.0.0.0 0.0.0.0 172.31.192.202

!--- Default route to forward packets to NAT-Router.

!--- Output suppressed.

驗證

使用show ip nat translations命令檢查轉換條目，如以下輸出所示：

NAT-Router#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- ---                ---                172.31.16.5        172.16.89.32

icmp 172.31.1.1:21     172.31.1.1:21      172.31.16.5:21     172.16.89.32:21

NAT-Router#

疑難排解

此示例使用NAT轉換調試和IP資料包調試來演示NAT過程。

注意：由於debug命令會產生大量輸出，因此請僅在IP網路上的流量過低時使用debug命令，以免對系統上的其他活動造成負面影響。

附註：這些調試輸出是從運行Cisco IOS軟體的路由器獲取的。這些調試輸出的集合可能會因所使用的平台而異。

附註：使用 debug 指令之前，請先參閱有關 Debug 指令的重要資訊。

此輸出是在NAT路由器上同時使用debug ip packet和debug ip nat命令的結果，同時從R1 loopback1介面地址(172.16.89.32)ping R2 loopback0介面地址(172.31.1.1)。

此輸出顯示了到達NAT路由器外部介面的第一個資料包。172.16.89.32的源地址被轉換為172.31.16.5。ICMP資料包從GigabitEthernet0/1介面轉發到目的地。

*Sep 19 15:34:39.925: NAT: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [100]

*Sep 19 15:34:39.925: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, NAT Inside(8), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE

*Sep 19 15:34:39.926: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, Common Flow Table(29), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE

*Sep 19 15:34:39.926: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, Stateful Inspection(30), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE

*Sep 19 15:34:39.927: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, NAT ALG proxy(63), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE

*Sep 19 15:34:39.927: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), g=172.31.192.201, len 100, forward

*Sep 19 15:34:39.928: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, sending full packet

此輸出顯示來源為172.31.1.1、目的地址為172.31.16.5的返回資料包，此資料包被轉換為172.16.89.32。生成的ICMP資料包從GigabitEthernet0/0介面(NAT-Router)轉發出去。

*Sep 19 15:34:39.930: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [100]

*Sep 19 15:34:39.930: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [100]

ICMP資料包的交換繼續進行。此調試輸出的NAT過程與先前的輸出相同。

*Sep 19 15:34:39.932: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [101]

*Sep 19 15:34:39.932: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [101]

*Sep 19 15:34:39.933: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [101]

*Sep 19 15:34:39.933: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [101]

*Sep 19 15:34:39.935: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [102]

*Sep 19 15:34:39.935: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [102]

*Sep 19 15:34:39.936: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [102]

*Sep 19 15:34:39.936: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [102]

*Sep 19 15:34:39.938: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [103]

*Sep 19 15:34:39.938: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [103]

*Sep 19 15:34:39.939: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [103]

*Sep 19 15:34:39.939: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [103]

*Sep 19 15:34:39.940: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [104]

*Sep 19 15:34:39.940: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [104]

*Sep 19 15:34:39.942: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [104]

*Sep 19 15:34:39.942: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [104]

摘要

當資料包從外部傳輸到內部時，首先進行轉換，然後檢查路由表以查詢目標。

當資料包從內部傳輸到外部時，首先檢查路由表以查詢目標，然後進行轉換。

有關詳細資訊，請參閱NAT操作順序。

請注意與前面每個命令一起使用時轉換的IP資料包部分。此表包含准則：

指令

動作

ip nat outside source static

- 轉換從外部傳輸到內部的IP資料包的源。

- 轉換從內部傳輸到外部的IP資料包的目的地。

ip nat inside source static

- 轉換從內部傳輸到外部的IP資料包的源。

- 轉換從外部傳送到內部的IP資料包的目的地。

這些准則表明有多個方法可以轉換資料包。根據您的特定需求，確定如何定義NAT介面（內部或外部）以及路由表在轉換之前或之後包含哪些路由。請記住，資料包的轉換部分取決於資料包的傳輸方向，以及如何配置NAT。

相關資訊

- 使用 ip nat outside source list 指令的範例組態

- 設定網路位址轉譯

- NAT IP定址服務

- 思科技術支援與下載