簡介
本文檔介紹使用ip nat outside source static命令和IP資料包從NAT過程得到的配置。
必要條件
需求
思科建議您瞭解以下主題:
採用元件
本檔案中的資訊是根據執行Cisco IOS®軟體版本的Cisco路由器。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
本文檔提供了使用ip nat outside source static命令的示例配置,並簡要說明了IP資料包在NAT過程中發生了什麼情況。以本檔案中的網路拓撲為例。
設定
網路圖表
本檔案會使用此網路設定。
網路圖表
當您從路由器R1的Loopback1介面向路由器R2的Loopback0介面發出ping命令時,會發生以下情況:
- 在NAT路由器的外部介面(Gi0/0)上,ping資料包的源地址(SA)為172.16.89.32,目的地址(DA)為172.31.1.1。
- NAT將SA轉換為外部本地地址172.31.16.5(對應於NAT路由器上配置的ip nat outside source static命令)。
- 然後,NAT路由器檢查其路由表以查詢通往172.31.1.1的路由。
- 如果該路由不存在,NAT路由器將丟棄該資料包。但是在這種情況下,NAT路由器具有通過配置的靜態路由到172.31.1.1到子網172.31.1.0/24的路由。它將資料包轉發到目的地。
- 路由器R2在其傳入介面(Gi0/0)上接收資料包,現在的SA為172.31.16.5,DA為172.31.1.1。
- 作為響應,R2向172.31.16.5(NATted地址)傳送網際網路控制消息協定(ICMP)回應應答。
- 如果R2沒有路由,它會丟棄該資料包。但是在這種情況下,它有一個通向NAT路由器的預設路由。
- 因此,它會向NAT路由器傳送一個應答資料包,其SA為172.31.1.1,DA為172.31.16.5。
- NAT路由器看到資料包並檢查通往172.31.16.5地址的路由。
- 如果沒有回應,則會使用ICMP無法到達回覆進行回應。
- 在本例中,它有一個配置到172.31.16.0/24子網的靜態路由,指向R1。
- 它將資料包轉換回172.16.89.32地址並將其從外部介面(Gi0/0)轉發出去。
組態
本文件使用以下組態:
路由器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資料包部分。此表包含准則:
這些准則表明有多個方法可以轉換資料包。根據您的特定需求,確定如何定義NAT介面(內部或外部)以及路由表在轉換之前或之後包含哪些路由。請記住,資料包的轉換部分取決於資料包的傳輸方向,以及如何配置NAT。
相關資訊