目錄

簡介

必要條件

需求

採用元件

慣例

背景資訊

存取清單方法

主機1到主機2

主機1到主機3

路由對映方法

主機1到主機2

主機1到主機3

相關資訊

簡介

本檔案將說明使用存取清單與路由對應如何變更網路位址轉譯(NAT)的功能。 有關NAT的詳細資訊，請參閱Cisco IOS NAT。

必要條件

需求

本文件沒有特定需求。

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- Cisco 2500系列路由器。

- Cisco IOS®軟體版本12.3(3)。

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

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

背景資訊

NAT 只在需要建立轉換專案時使用存取清單和路由對應。如果已存在與流量匹配的轉換條目，則將使用轉換條目；不會查閱任何存取清單或路由對映。使用訪問清單或路由對映的區別在於要建立的轉換條目的型別。

路由對映

當NAT使用路由對映決定建立轉換條目時，它總是建立「完全擴展」轉換條目。此轉換條目將包含內部和外部（本地和全域性）地址條目以及任何TCP或UDP埠資訊。請參閱NAT:本地和全域性定義以瞭解有關內部和外部（本地和全域性）地址的詳細資訊。

存取清單（無過載）

當NAT使用訪問清單來決定建立轉換條目時，它會建立一個「簡單」的轉換條目。此「簡單」條目將僅包含內部或外部的本地和全域性IP地址條目，具體取決於配置的是ip nat inside命令還是ip nat outside命令。此外，它不會包含任何TCP或UDP埠資訊。

存取清單（含過載）

當NAT使用訪問清單並且也指定了過載時，NAT將建立「完全擴展」轉換條目。(請參閱附註1)。 該操作與路由對映情況類似，不同之處在於路由對映有一些附加功能。如需詳細資訊，請參閱附註2。通過選擇以下連結之一，您可以看到簡單的NAT轉換條目和完全擴展的NAT轉換條目的示例：

- 簡單NAT轉換條目

- 完全擴展NAT轉換條目

以下網路圖示例說明了通過NAT使用路由對映和訪問清單的區別：

在此示例網路圖中，需要將10.1.1.0上的主機轉換為以下內容：

- 131.108.2.0（轉到131.108.1.0時）

- 131.118.2.0（轉到131.118.1.0時）

存取清單方法

使用訪問清單方法，可以執行以下操作來轉換10.1.1.0上的主機：

ip nat pool pool108 131.108.2.1 131.108.2.254 prefix-length 24

!--- Defines a pool of global addresses to be allocated as needed.

ip nat pool pool118 131.118.2.1 131.118.2.254 prefix-length 24

ip nat inside source list 108 pool pool108

!--- Establishes dynamic source translation, specifying the !--- access list defined below.

ip nat inside source list 118 pool pool118

interface ethernet0

ip address 10.1.1.1 255.255.255.0

ip nat inside

!--- Marks the interface as connected to the inside.

interface ethernet1

ip address 10.1.2.1 255.255.255.0

ip nat outside

!--- Marks the interface as connected to the outside.

access-list 108 permit ip 10.1.1.0 0.0.0.255 131.108.1.0 0.0.0.255

!--- Defines the access-list mentioning those addresses !--- that are to be translated.

access-list 118 permit ip 10.1.1.0 0.0.0.255 131.118.1.0 0.0.0.255

請參閱IP定址和服務命令以瞭解有關這些命令的更多資訊。

主機1到主機2

以下是Host 1 Telnet到Host 2時發生的情況。

Packet on (Network 1) s:10.1.1.2(1024)     d:131.108.1.2(23)

Packet on (Network 2) s:131.108.2.1(1024)  d:131.108.1.2(23)   (after NAT)

由於NAT使用訪問清單來匹配此流量，因此會建立一個簡單的轉換條目，該條目僅包含內部轉換資訊，而不包含協定或埠資訊：

inside                         outside

local        global          global         local

10.1.1.2     131.108.2.1       ----           ----

返回資料包：主機2到主機1:

Packet on (Network 2)  s:131.108.1.2(23)  d:131.108.2.1(1024)

Packet on (Network 1)  s:131.108.1.2(23)  d:10.1.1.2(1024)      (after NAT)

主機1到主機3

有了上述簡單轉換後，下面是主機1同時通過Telnet連線到主機3時發生的情況：

Packet on (Network 1)  s:10.1.1.2(1025)     d:131.118.1.2(23)

Packet on (Network 2)  s:131.108.2.1(1025)  d:131.118.1.2(23)   (after NAT)

您可以看到存在問題。從10.1.1.0主機到131.118.1.0主機的資料包應轉換為131.118.2.0，而非131.108.2.0。發生這種情況的原因是10.1.1.2 <—> 131.108.2.1已經有一個NAT轉換條目，該條目也匹配主機1和主機3之間的流量。因此，將使用此轉換條目，而不檢查訪問清單108和118。

當NAT轉換表中存在簡單的轉換條目時，任何外部主機上的任何外部使用者都可以使用該條目將資料包傳送到主機1，只要外部使用者使用主機1的內部全域性地址(131.108.2.1)。通常，需要靜態NAT轉換才能允許此操作。

路由對映方法

使用路由對映是配置本文檔中示例的正確方法。使用路由對映方法，可以執行以下操作來轉換10.1.1.0上的主機：

ip nat pool pool-108 131.108.2.1 131.108.2.254 prefix-length 24

ip nat pool pool-118 131.118.2.1 131.118.2.254 prefix-length 24

ip nat inside source route-map MAP-108 pool pool-108

!--- Establishes dynamic source translation, specifying !--- the route-map MAP-108 which is defined below.

ip nat inside source route-map MAP-118 pool pool-118

!--- Establishes dynamic source translation, specifying the route-map MAP-118. !--- Here, the route-maps are consulted instead of !--- access-lists (as in the previous case).

interface ethernet0

ip address 10.1.1.1 255.255.255.0

ip nat inside

interface ethernet1

ip address 10.1.2.1 255.255.255.0

ip nat outside

access-list 108 permit ip 10.1.1.0 0.0.0.255 131.108.1.0 0.0.0.255

access-list 118 permit ip 10.1.1.0 0.0.0.255 131.118.1.0 0.0.0.255

route-map MAP-108 permit 10

!--- Defines the Route-map MAP-108.

match ip address 108

!--- Specifies the criteria for translation. Here, the IP !--- address mentioned in the access-list 108 is translated. !--- The translation is defined in the !--- ip nat inside source route-map MAP-108 pool pool-108 command.

route-map MAP-118 permit 10

!--- Defines the Route-map MAP-108.

match ip address 118

!--- The IP address mentioned in the access-list 118 is translated. !--- The translation is defined in the !--- ip nat inside source route-map MAP-118 pool pool-118 command.

請參閱IP定址和服務命令以瞭解有關這些命令的更多資訊。

主機1到主機2

以下是在主機1通過Telnet連線到主機2時發生的情況：

Packet on (Network 1) s:10.1.1.2(1024)     d:131.108.1.2(23)

Packet on (Network 2) s:131.108.2.1(1024)  d:131.108.1.2(23)   (after NAT)

在這種情況下，由於NAT使用路由對映來匹配要轉換的流量，因此NAT將建立一個完全擴展的轉換條目，其中包括內部和外部轉換資訊：

inside                               outside

local            global             global             local

10.1.1.2:1024    131.108.2.1:1024   131.108.1.2:23     131.108.1.2:23

返回資料包：主機2到主機1:

Packet on (Network 2) s:131.108.1.2(23)  d:131.108.2.1(1024)

Packet on (Network 1) s:131.108.1.2(23)  d:10.1.1.2(1024)      (after NAT)

主機1到主機3

現在，主機1將封包傳送到主機3時，會顯示以下情況：

Packet on (Network 1) s:10.1.1.2(1025)     d:131.118.1.2(23)

Packet on (Network 2) s:131.118.2.1(1025)  d:131.118.1.2(23)   (after NAT)

轉換工作正常，因為(N1)上的資料包與用於主機1到主機2流量的完全擴展轉換條目不匹配。由於現有轉換不匹配，NAT為主機1到主機3的流量建立另一個轉換條目。

以下是NAT路由器上的完全擴展轉換條目：

inside                               outside

local            global             global             local

10.1.1.2:1024    131.108.2.1:1024   131.108.1.2:23     131.108.1.2:23

10.1.1.2:1025    131.118.2.1:1025   131.118.1.2:23     131.118.1.2:23

因為NAT轉換表有兩個完整條目，所以它將正確轉換從同一源發往兩個不同目標的流量。

與通過訪問清單建立的簡單轉換條目不同，通過路由對映建立的完全擴展轉換條目不能被任何其他外部使用者用來將資料包傳送到主機1。需要靜態NAT轉換才能允許此操作。

附註1

對於過載的訪問清單，其配置類似於無過載情況下的訪問清單。例外情況是，您需要將關鍵字overload新增到ip nat inside source list 108 pool pool108和ip nat inside source list 118 pool pool118命令中。

附註2

使用路由對映的優勢在於，在match命令下，您可以擁有除源IP地址以外的更多選項。例如，在route-map下，可以指定match interface或match ip next-hop。通過使用路由對映，您可以指定資料包轉發到的IP地址以及介面或下一跳地址。因此，如果使用者多宿主到不同的ISP，則使用NAT路由對映。

相關資訊

- NAT — 能夠將路由對應與靜態轉譯搭配使用

- Cisco IOS網路位址轉譯

- 配置網路地址轉換

- NAT:本地和全域性定義

- 適用於定址和服務的思科IOS IP命令參考，版本12.3

- 技術支援與文件 - Cisco Systems