IP : 网络地址转换 (NAT)

使用 ip nat outside source static 命令的示例配置

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2016 年 4 月 21 日) | 反馈


目录


简介

本文档提供了使用 ip nat outside source static 命令的配置示例,并简要介绍了 NAT 过程中 IP 数据包所发生的情况。考虑以本文档中的网络拓扑为例。

先决条件

要求

尝试进行此配置之前,请确保满足以下要求:

欲知详情请参阅本文的“相关信息”部分。

使用的组件

本文档中的信息根据Cisco IOSï ¿  ½软件版本12.2(27)的思科2500系列路由器。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

配置

本部分提供了用于配置本文档所述功能的信息。

注意: 有关本文档中所使用的命令的详细信息,请使用命令查找工具仅限注册用户)。

网络图

本文档使用此网络设置。

http://www.cisco.com/c/dam/en/us/support/docs/ip/network-address-translation-nat/13773-2a.gif

当您从路由器 2514W 的 Loopback1 接口向路由器 2501E 的 Loopback0 接口发出 ping 命令时,将会发生以下情况:

在路由器 2514X 的外部接口 (S1) 上,ping 数据包携带源地址 (SA) 172.16.89.32 和目标地址 (DA) 171.68.1.1 出现。NAT 将 SA 转换为外部本地地址 171.68.16.5(按照路由器 2514X 上配置的 ip nat outside source static 命令)。路由器 2514X 随后检查其路由表,查找指向 171.68.1.1 的路由。如果该路由不存在,路由器 2514X 会丢弃数据包。在本例中,路由器 2514X 通过指向 171.68.1.0 的静态路由,拥有一个指向 171.68.1.1 的路由。它将数据包转发给目标。路由器 2501E 在传入接口 (E0) 上发现这个数据包,SA 为 171.68.16.5,DA 为 171.68.1.1。它发出一个 Internet Control Message Protocol (ICMP) Echo 应答来响应 171.68.16.5。如果它没有路由,则会丢弃这个数据包。但是,在本例中,它有(默认)路由。因此,它使用 SA 171.68.1.1 和 DA 171.68.16.5 向路由器 2514X 发送应答数据包。路由器2514x看到了该数据包,并且检查到171.68.16.5地址的路由。如果该路由器没有这样一个路由,就会发送一个 ICMP 不可达的应答作为响应。在本例中,它有一个指向 171.68.16.5 的路由(由于静态路由)。因此,它会将数据包转换回 172.16.89.32 地址,并将数据包转发出其外部接口 (S1)。

配置

本文档使用以下配置:

路由器 2514W
hostname 2514W 
! 


!--- Output suppressed.

interface Loopback1 
 ip address 172.16.89.32 255.255.255.0 
! 
interface Ethernet1 
 no ip address 
 no ip mroute-cache 
! 
interface Serial0 
 ip address 172.16.191.254 255.255.255.252 
 no ip mroute-cache 
! 

!--- Output suppressed.

ip classless 
ip route 0.0.0.0 0.0.0.0 172.16.191.253 

!--- Default route to forward packets to 2514X.

!


!--- Output suppressed.

路由器 2514X
hostname 2514X 
! 


!--- Output suppressed.

ip nat outside source static 172.16.89.32 171.68.16.5 

!--- Outside local address.

! 


!--- Output suppressed.

interface Ethernet1 
 ip address 171.68.192.202 255.255.255.0 
 ip nat inside 

!--- Defines Ethernet 1 as a NAT inside interface.

 no ip mroute-cache 
 no ip route-cache 
! 
interface Serial1 
 ip address 172.16.191.253 255.255.255.252 
 no ip route-cache 
 ip nat outside 

!--- Defines Serial 1 as a NAT outside interface.

 clockrate 2000000 



! 


!--- Output suppressed.

ip classless  
ip route 171.68.1.0 255.255.255.0 171.68.192.201 
ip route 171.68.16.0 255.255.255.0 172.16.191.254 

!--- Static routes for reaching the loopback interfaces


!--- on 2514E and 2514W.

!


!--- Output suppressed.

路由器 2501E
hostname rp-2501E 
! 


!--- Output suppressed.

interface Loopback0 
 ip address 171.68.1.1 255.255.255.0 
! 
interface Ethernet0 
 ip address 171.68.192.201 255.255.255.0 
! 


!--- Output suppressed.

ip classless 
ip route 0.0.0.0 0.0.0.0 171.68.192.202 

!--- Default route to forward packets to 2514X.

!


!--- Output suppressed.

验证

使用本部分可确认配置能否正常运行。

命令输出解释程序仅限注册用户)(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。

如以下输出所示,使用 show ip nat translations 命令可以检查转换项。

2514X#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
--- ---                ---                171.68.16.5        172.16.89.32
2514X#

故障排除

本示例使用 NAT 转换调试和 IP 数据包调试来展示 NAT 过程。

注意: 由于 debug 命令会生成大量输出,因此请仅在 IP 网络上的流量较低时才使用这些命令,以免系统中的其他活动受到负面影响。

注意: 使用 debug 命令之前,请参阅有关 Debug 命令的重要信息

此输出是在从路由器 2514W loopback1 接口地址 (172.16.89.32) 到路由器 2501E loopback0 接口地址 (171.68.1.1) 进行 ping 的同时,在路由器 2514X 上同时运行 debug ip packetdebug ip nat 命令的结果。

以下输出显示了到达路由器 2514X 的外部接口的第一个数据包。源地址 172.16.89.32 被转换为 171.68.16.5。ICMP 数据包被转发往 Ethernet1 接口外的目标。

5d17h: NAT: s=172.16.89.32->171.68.16.5, d=171.68.1.1 [171]
5d17h: IP: tableid=0, s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), routed
via RIB
5d17h: IP: s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), g=171.68.192.201,
len 100, forward
5d17h:     ICMP type=8, code=0

以下输出显示了来自 171.68.1.1,目标地址为 171.68.16.5(已转换为 172.16.89.32)的返回数据包。产生的 ICMP 数据包被转发出 Serial1 接口。

5d17h: IP: tableid=0, s=171.68.1.1 (Ethernet0), d=171.68.16.5 (Serial0), routed
via RIB
5d17h: NAT: s=171.68.1.1, d=171.68.16.5->172.16.89.32 [171]
5d17h: IP: s=171.68.1.1 (Ethernet0), d=172.16.89.32 (Serial0), g=172.16.191.254,
 len 100, forward
5d17h:     ICMP type=0, code=0

ICMP 数据包的交换继续进行。此 debug 输出的 NAT 过程与上一个输出的 NAT 过程相同。

5d17h: NAT: s=172.16.89.32->171.68.16.5, d=171.68.1.1 [172]
5d17h: IP: tableid=0, s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), routed
via RIB
5d17h: IP: s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), g=171.68.192.201,
len 100, forward
5d17h:     ICMP type=8, code=0
5d17h: IP: tableid=0, s=171.68.1.1 (Ethernet0), d=171.68.16.5 (Serial0), routed
via RIB
5d17h: NAT: s=171.68.1.1, d=171.68.16.5->172.16.89.32 [172]
5d17h: IP: s=171.68.1.1 (Ethernet0), d=172.16.89.32 (Serial0), g=172.16.191.254,
 len 100, forward
5d17h:     ICMP type=0, code=0
5d17h: NAT: s=172.16.89.32->171.68.16.5, d=171.68.1.1 [173]
5d17h: IP: tableid=0, s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), routed
via RIB
5d17h: IP: s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), g=171.68.192.201,
len 100, forward
5d17h:     ICMP type=8, code=0
5d17h: IP: tableid=0, s=171.68.1.1 (Ethernet0), d=171.68.16.5 (Serial0), routed
via RIB
5d17h: NAT: s=171.68.1.1, d=171.68.16.5->172.16.89.32 [173]
5d17h: IP: s=171.68.1.1 (Ethernet0), d=172.16.89.32 (Serial0), g=172.16.191.254,
 len 100, forward
5d17h:     ICMP type=0, code=0
5d17h: NAT: s=172.16.89.32->171.68.16.5, d=171.68.1.1 [174]
5d17h: IP: tableid=0, s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), routed
via RIB
5d17h: IP: s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), g=171.68.192.201,
len 100, forward
5d17h:     ICMP type=8, code=0
5d17h: IP: tableid=0, s=171.68.1.1 (Ethernet0), d=171.68.16.5 (Serial0), routed
via RIB
5d17h: NAT: s=171.68.1.1, d=171.68.16.5->172.16.89.32 [174]
5d17h: IP: s=171.68.1.1 (Ethernet0), d=172.16.89.32 (Serial0), g=172.16.191.254,
 len 100, forward
5d17h:     ICMP type=0, code=0
5d17h: NAT: s=172.16.89.32->171.68.16.5, d=171.68.1.1 [175]
5d17h: IP: tableid=0, s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), routed
via RIB
5d17h: IP: s=171.68.16.5 (Serial0), d=171.68.1.1 (Ethernet0), g=171.68.192.201,
len 100, forward
5d17h:     ICMP type=8, code=0
5d17h: IP: tableid=0, s=171.68.1.1 (Ethernet0), d=171.68.16.5 (Serial0), routed
via RIB
5d17h: NAT: s=171.68.1.1, d=171.68.16.5->172.16.89.32 [175]
5d17h: IP: s=171.68.1.1 (Ethernet0), d=172.16.89.32 (Serial0), g=172.16.191.254,
 len 100, forward
5d17h:     ICMP type=0, code=0

摘要

当数据包从外部传输到内部时,首先进行转换,然后检查目标的路由表。当信息包从里向外传输时,路由表首先检查目的地,然后进行转换。有关详细信息,请参阅 NAT 运行顺序

在使用本文中所讨论的每个命令时,注意 IP 数据包的哪部分被转换是非常重要的。下表包含相关的准则:

命令 操作
ip nat outside source static
  • 转换从外部传输到内部的 IP 数据包的源。
  • 转换从内部传输到外部的 IP 数据包的目标。
ip nat inside source static
  • 转换从内部传输到外部的 IP 数据包的源。
  • 转换从外部传输到内部的 IP 数据包的目标。

这些指导原则表明,转换数据包的方法不只一种。根据您的特定需要,您需要确定如何定义 NAT 接口(内部或外部)以及转换前后路由表中应当包含哪些路由。请记住,数据包被转换的部分取决于数据包传输的方向,以及您配置 NAT 的方式。


相关信息


Document ID: 13773