簡介
本文檔介紹使用ip nat outside source static 命令的配置,以及從NAT進程生成的IP資料包。
必要條件
需求
思科建議您瞭解以下主題:
採用元件
本文檔中的資訊基於運行Cisco IOS®軟體版本的Cisco路由器。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
本文檔提供了使用ip nat outside source static命令的配置示例,並簡要介紹了NAT過程中IP資料包所發生的情況。以本檔案中的網路拓撲為例。
設定
網路圖表
本檔案會使用此網路設定。
網路圖表
當您從路由器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.0/24的靜態路由,擁有通往172.31.1.1的路由。它將資料包轉發到目的地。
- 路由器R2在其傳入介面(Gi0/0)上收到資料包,現在SA為172.31.16.5,DA為172.31.1.1。
- 作為響應,R2傳送了一個Internet控制消息協定(ICMP)回應應答到172.31.16.5(NATted地址)。
- 如果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網路上的流量較低時才使用這些命令,以免系統中的其他活動受到負面影響。
注意:這些調試輸出來自運行Cisco IOS軟體的路由器。這些調試輸出的集合可能因使用的平台而異。
附註:使用 debug 指令之前,請先參閱有關 Debug 指令的重要資訊。
此輸出是在從R1 loopback1介面地址(172.16.89.32)到R2 loopback0介面地址(172.31.1.1)進行ping的同時,在NAT路由器上同時使用debug ip packet和debug ip nat命令的結果。
此輸出顯示到達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路由器)轉發出去。
*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資料包交換繼續進行。此debug輸出的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的方式。
相關資訊