简介
本文档介绍如何配置ip nat outside source list命令并描述在NAT过程中IP数据包所发生的情况。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。但是,本文档中的信息基于以下软件和硬件版本:
-
Cisco 2500 系列路由器
-
在所有路由器上运行的 Cisco IOS® 软件版本 12.2(24a)
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
您可以使用此命令,转换从网络外部向网络内部传输的 IP 数据包的源地址。此操作可以转换以相反方向(从网络内部向网络外部)传输的 IP 数据包的目标地址。此命令在重叠网络等情况下非常有用,因为此时网络内部地址与网络外部地址相互重叠。让我们考虑以网络图为例。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
配置
本部分提供有关如何配置本文档所述功能的信息。
注意:要查找有关本文档中所用命令的其他信息,请使用命令查找工具(仅限注册用户)。
网络图
本文档使用以下网络设置:
当 ping 从路由器 2514W Loopback0 接口 (172.16.88.1) 发往路由器 2501E Loopback0 接口 (171.68.1.1) 时,会发生以下情况:
因为配置了默认路由,路由器 2514W 会将数据包转发给路由器 2514X。在路由器2514X的外部接口上,数据包的源地址(SA)为172.16.88.1,目的地址(DA)为171.68.1.1。因为SA被ip nat outside source list命令使用的访问列表1所允许,所以该SA将被转换为NAT池Net171中的地址。
请注意, ip nat outside source list 命令引用了NAT池“Net171”。在这种情况下,地址被转换为 NAT 池中的第一个可用地址 171.68.16.10。
转换后,路由器2514X在路由表中查找目标,并路由数据包。路由器2501E在其传入接口上看到SA为171.68.16.10且DA为171.68.1.1的数据包。Router 2501e发出一个互联网控制消息协议(ICMP)响应来答复171.68.16.10。如果它没有路由,则会丢弃这个数据包。
在本例中,它有一个(默认)路由,因此它使用SA 171.68.1.1和DA 171.68.16.10将数据包发送到路由器2514X。路由器 2514X 在其内部接口上看到该数据包,并检查指向 171.68.16.10 地址的路由。如果该路由器没有这样一个路由,就会发送一个 ICMP 不可达的应答作为响应。
在本例中,由于ip nat outside source命令的add-route选项会根据外部全局地址和外部本地地址之间的转换添加主机路由,该路由器具备一个指向171.68.16.10的路由,因此它会将该数据包转换回172.16.88.1地址,然后将该数据包路由出其外部接口。
配置
路由器 2514W |
hostname 2514W
!
!--- Output suppressed.
interface Loopback0
ip address 172.16.88.1 255.255.255.0
!
!--- Output suppressed.
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.
!
interface Ethernet1
ip address 171.68.192.202 255.255.255.0
ip nat inside
no ip mroute-cache
no ip route-cache
!
!--- Output suppressed.
interface Serial1
ip address 172.16.191.253 255.255.255.252
ip nat outside
no ip mroute-cache
no ip route-cache
clockrate 2000000
!
ip nat pool Net171 171.68.16.10 171.68.16.254 netmask 255.255.255.0
!--- NAT pool defining Outside Local addresses to be used for translation.
!
ip nat outside source list 1 pool Net171 add-route
!--- Configures translation for Outside Global addresses !--- with the NAT pool.
ip classless
ip route 172.16.88.0 255.255.255.0 172.16.191.254
ip route 171.68.1.0 255.255.255.0 171.68.192.201
!--- Static routes for reaching the loopback interfaces !--- on 2514W and 2501E.
access-list 1 permit 172.16.88.0 0.0.0.255
!--- Access-list defining Outside Global addresses to be translated.
!
!--- Output suppressed.
! |
路由器 2501E |
hostname 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.
|
验证
您可以使用本部分提供的信息来确认您的配置运行正常。
输出解释器工具支持某些特定的show命令(仅注册客户),它允许您查看show 命令输出的分析。
如下面的输出所示,show ip nat translations命令可用于检查转换项:
2514X# show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 171.68.1.1 171.68.1.1 171.68.16.10 172.16.88.1
--- --- --- 171.68.16.10 172.16.88.1
2514X#
输出显示,外部全局地址172.16.88.1(路由器2514W的Loopback0接口上的地址)被转换为外部本地地址171.68.16.10。
如下所示,您可以使用 show ip route 命令检查路由表项:
2514X# show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
171.68.0.0/16 is variably subnetted, 3 subnets, 2 masks
C 171.68.192.0/24 is directly connected, Ethernet1
S 171.68.1.0/24 [1/0] via 171.68.192.201
S 171.68.16.10/32 [1/0] via 172.16.88.1
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
S 172.16.88.0/24 [1/0] via 172.16.191.254
C 172.16.191.252/30 is directly connected, Serial1
2514X#
输出显示了外部本地地址171.68.16.10的一个/32路由,该路由是通过ip nat outside source命令的add-route选项创建的。此路由用于路由和转换从网络内部传输到网络外部的数据包。
故障排除
本部分提供的信息可用于对配置进行故障排除。
此输出是在从路由器2514W loopback0接口地址(172.16.88.1)到路由器2501E loopback0接口地址(171.68.1.1)进行ping的同时,在路由器2514X上运行debug ip packet和debug ip nat命令的结果:
*Mar 1 00:02:48.079: NAT*: s=172.16.88.1->171.68.16.10, d=171.68.1.1 [95]
!--- The source address in the first packet arriving on !--- the outside interface is first translated.
*Mar 1 00:02:48.119: IP: tableid=0, s=171.68.16.10 (Serial1), d=171.68.1.1 (Ethernet1), routed via
RIB
*Mar 1 00:02:48.087: IP: s=171.68.16.10 (Serial1), d=171.68.1.1 (Ethernet1), g=171.68.192.201, len
100, forward
!--- The ICMP echo request packet with the translated source address !--- is routed and forwarded on the inside interface.
*Mar 1 00:02:48.095: IP: tableid=0, s=171.68.1.1 (Ethernet1), d=171.68.16.10 (Serial1), routed via
RIB
!--- The ICMP echo reply packet arriving on the inside interface !--- is first routed based on the destination address.
*Mar 1 00:02:48.099: NAT: s=171.68.1.1, d=171.68.16.10->172.16.88.1 [95]
!--- The destination address in the packet is then translated.
*Mar 1 00:02:48.103: IP: s=171.68.1.1 (Ethernet1), d=172.16.88.1 (Serial1), g=172.16.191.254, len 1
00, forward
!--- The ICMP echo reply packet with the translated destination !--- address is forwarded on the outside interface.
对于外部接口上接收的每个数据包,重复以上过程。
摘要
使用ip nat outside source list命令(动态NAT)而非ip nat outside source static命令(静态NAT)的主要区别在于,在路由器(针对NAT配置)验证数据包的转换标准之前,转换表中没有条目。在上一个示例中,带有SA 172.16.88.1的数据包(它进入路由器2514X的外部接口)符合access-list 1,即ip nat outside source list命令使用的标准。因此,在内部网络数据包可以与路由器 2514w 的 loopback0 接口通信之前,必须先从外部网络始发数据包。
本例中需要注意两点:
当信息包从外向里移动时,首先进行转换,然后通过路由表检查目的地。当数据包从内部传输到外部时,先检查目的地的路由表,然后进行转换。
其次,使用上述每个命令时,必须注意IP数据包的哪一部分会被转换。下表包含指南:
命令 |
操作 |
ip nat outside source list |
- 转换IP包的源,这些IP包正在从外部传输到内部
- 转换IP包的目的地,这些IP包正在从内部传输到外部
|
ip nat inside source list |
- 转换IP包的源,这些IP包正在从内部传输到外部
- 转换IP包的目的地,这些IP包正在从外部传输到内部
|
这些指导原则表明,转换数据包的方式有多种。根据您的特定需求,您可以确定如何定义NAT接口(内部或外部),以及在转换前后路由表包含哪些路由。请记住,数据包的转换部分取决于数据包的传输方向以及配置NAT的方式。
相关信息