Cisco经典文档
当前位置: 首页→Cisco经典文档→NAT
运行顺序
NAT 运行顺序
文档下载:
切换至英文原版
内容
前言
前提条件
需求
使用的组件
惯例
NAT
概述
NAT
配置和输出
本文档说明使用网络地址转换 (NAT)
处理交易的顺序是基于数据包从内部网进入外部网还是基于从外部网进入内部网的。
本文档读者应了解以下主题的知识:
本文档不限于特定的软件和硬件版本。
注意: 本文档的信息基于软件版本 Cisco IOS® 软件版本 12.2(27)
有关文档规则的详细信息,请参阅
Cisco 技术提示规则。
在此表中,当 NAT 执行全局到本地或本地到全局转换时,每个数据流中的转换各不相同。
内部到外部 |
外部到内部 |
|
-
如果使用的是 IPsec,则检查输入访问列表
-
解密 - 对于 CET 或 IPSec
-
检查输入访问列表
-
检查输入速率限制
-
输入记账
-
重定向到
Web 缓存
-
NAT 外部到内部(全局到本地的转换)
-
策略路由
-
路由
-
加密(检查映射和标记是否加密)
-
检查输出访问列表
-
检查 CBAC
-
TCP 拦截
-
加密
-
排队
|
此示例说明运算顺序对 NAT 有何影响。 在这种情况下,只会显示 NAT 和路由。
在上个示例中,路由器 A 配置为将内部本地地址 171.68.200.48 转换为
172.16.47.150,如此配置中所示。
!
version 11.2
no service udp-small-servers
no service tcp-small-servers
!
hostname Router-A
!
enable password ww
!
ip nat inside source static 171.68.200.48 172.16.47.150
!--- This command creates a static NAT translation
!--- between 171.68.200.48 and 172.16.47.150
ip domain-name cisco.com
ip name-server 171.69.2.132
!
interface Ethernet0
no ip address
shutdown
!
interface Serial0
ip address 172.16.47.161 255.255.255.240
ip nat inside
!--- Configures Serial0 as the NAT inside interface
no ip mroute-cache
no ip route-cache
no fair-queue
!
interface Serial1
ip address 172.16.47.146 255.255.255.240
ip nat outside
!--- Configures Serial1 as the NAT outside interface
no ip mroute-cache
no ip route-cache
!
no ip classless
ip route 0.0.0.0 0.0.0.0 172.16.47.145
!--- Configures a default route to 172.16.47.145
ip route 171.68.200.0 255.255.255.0 172.16.47.162
!
!
line con 0
exec-timeout 0 0
line aux 0
line vty 0 4
password ww
login
!
end
转换表表明所需转换存在。
Router-A#show ip nat translation
Pro Inside global Inside local Outside local Outside global
--- 172.16.47.150 171.68.200.48 --- ---
此输出来自路由器 A,此时
debug ip packet detail 和
debug ip nat 启用,且从设备 171.68.200.48 发出的 ping
的目的地为 172.16.47.142。
注意: Debug 命令会生成大量输出。 只有 IP
网络上的流量较低时才能使用此类命令,以避免系统上的其他活动受到负面影响。 在发出 debug
命令之前,请参见关于
Debug 命令的重要信息。
IP: s=171.68.200.48 (Serial0), d=172.16.47.142, len 100, unroutable
ICMP type=8, code=0
IP: s=172.16.47.161 (local), d=171.68.200.48 (Serial0), len 56, sending
ICMP type=3, code=1
IP: s=171.68.200.48 (Serial0), d=172.16.47.142, len 100, unroutable
ICMP type=8, code=0
IP: s=171.68.200.48 (Serial0), d=172.16.47.142, len 100, unroutable
ICMP type=8, code=0
IP: s=172.16.47.161 (local), d=171.68.200.48 (Serial0), len 56, sending
ICMP type=3, code=1
IP: s=171.68.200.48 (Serial0), d=172.16.47.142, len 100, unroutable
ICMP type=8, code=0
IP: s=171.68.200.48 (Serial0), d=172.16.47.142, len 100, unroutable
ICMP type=8, code=0
IP: s=172.16.47.161 (local), d=171.68.200.48 (Serial0), len 56, sending
ICMP type=3, code=1
由于上一次的输出中没有 NAT
调试消息,因此知道未使用现有的静态转换,并且路由器的路由选择表中没有对应于目标地址
(172.16.47.142) 的路由。
不可路由数据包的结果是一个
ICMP 不可达消息,该消息将发送至内部设备。
但是,路由器 A 的默认路由为 172.16.47.145,那么,为什么该路由被视为不可路由的路由呢?
路由器 A 已配置 no ip classless,这意味着如果数据包的目的地是子网存在于路由选择表中的“主要”网络地址(在这种情况下为
172.16.0.0),那么该路由器不依靠默认路由。 也就是说,如果发出 no ip
classless 命令,则会关闭路由器使用最长的位匹配寻找路由的功能。
为了更改此行为,您必须在路由器 A 上配置
ip classless。 默认情况下,在安装有 Cisco IOS 软件版本 11.3
及更高版本的 Cisco 路由器上,ip
classless 命令处于启用状态。
Router-A#configure terminal
Enter configuration commands, one per line. End with CTRL/Z.
Router-A(config)#ip classless
Router-A(config)#end
Router-A#show ip nat translation
%SYS-5-CONFIG_I: Configured from console by console nat tr
Pro Inside global Inside local Outside local Outside global
--- 172.16.47.150 171.68.200.48 --- ---
当您像之前一样重复相同的 ping 测试时,您看到数据包被转换,ping 成功。
Ping Response on device 171.68.200.48
D:\>ping 172.16.47.142
Pinging 172.16.47.142 with 32 bytes of data:
Reply from 172.16.47.142: bytes=32 time=10ms TTL=255
Reply from 172.16.47.142: bytes=32 time<10ms TTL=255
Reply from 172.16.47.142: bytes=32 time<10ms TTL=255
Reply from 172.16.47.142: bytes=32 time<10ms TTL=255
Ping statistics for 172.16.47.142:
Packets: Sent = 4, Received = 4, Lost = 0 (0%)
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 10ms, Average = 2ms
Debug messages on Router A indicating that the packets generated by device
171.68.200.48 are getting translated by NAT.
Router-A#
*Mar 28 03:34:28: IP: tableid=0, s=171.68.200.48 (Serial0), d=172.16.47.142
(Serial1), routed via RIB
*Mar 28 03:34:28: NAT: s=171.68.200.48->172.16.47.150, d=172.16.47.142 [160]
*Mar 28 03:34:28: IP: s=172.16.47.150 (Serial0), d=172.16.47.142 (Serial1),
g=172.16.47.145, len 100, forward
*Mar 28 03:34:28: ICMP type=8, code=0
*Mar 28 03:34:28: NAT*: s=172.16.47.142, d=172.16.47.150->171.68.200.48 [160]
*Mar 28 03:34:28: IP: tableid=0, s=172.16.47.142 (Serial1), d=171.68.200.48
(Serial0), routed via RIB
*Mar 28 03:34:28: IP: s=172.16.47.142 (Serial1), d=171.68.200.48 (Serial0),
g=172.16.47.162, len 100, forward
*Mar 28 03:34:28: ICMP type=0, code=0
*Mar 28 03:34:28: NAT*: s=171.68.200.48->172.16.47.150, d=172.16.47.142 [161]
*Mar 28 03:34:28: NAT*: s=172.16.47.142, d=172.16.47.150->171.68.200.48 [161]
*Mar 28 03:34:28: IP: tableid=0, s=172.16.47.142 (Serial1), d=171.68.200.48
(Serial0), routed via RIB
*Mar 28 03:34:28: IP: s=172.16.47.142 (Serial1), d=171.68.200.48 (Serial0),
g=172.16.47.162, len 100, forward
*Mar 28 03:34:28: ICMP type=0, code=0
*Mar 28 03:34:28: NAT*: s=171.68.200.48->172.16.47.150, d=172.16.47.142 [162]
*Mar 28 03:34:28: NAT*: s=172.16.47.142, d=172.16.47.150->171.68.200.48 [162]
*Mar 28 03:34:28: IP: tableid=0, s=172.16.47.142 (Serial1), d=171.68.200.48
(Serial0), routed via RIB
*Mar 28 03:34:28: IP: s=172.16.47.142 (Serial1), d=171.68.200.48 (Serial0),
g=172.16.47.162, len 100, forward
*Mar 28 03:34:28: ICMP type=0, code=0
*Mar 28 03:34:28: NAT*: s=171.68.200.48->172.16.47.150, d=172.16.47.142 [163]
*Mar 28 03:34:28: NAT*: s=172.16.47.142, d=172.16.47.150->171.68.200.48 [163]
*Mar 28 03:34:28: IP: tableid=0, s=172.16.47.142 (Serial1), d=171.68.200.48
(Serial0), routed via RIB
*Mar 28 03:34:28: IP: s=172.16.47.142 (Serial1), d=171.68.200.48 (Serial0),
g=172.16.47.162, len 100, forward
*Mar 28 03:34:28: ICMP type=0, code=0
*Mar 28 03:34:28: NAT*: s=171.68.200.48->172.16.47.150, d=172.16.47.142 [164]
*Mar 28 03:34:28: NAT*: s=172.16.47.142, d=172.16.47.150->171.68.200.48 [164]
*Mar 28 03:34:28: IP: tableid=0, s=172.16.47.142 (Serial1), d=171.68.200.48
(Serial0), routed via RIB
*Mar 28 03:34:28: IP: s=172.16.47.142 (Serial1), d=171.68.200.48 (Serial0),
g=172.16.47.162, len 100, forward
*Mar 28 03:34:28: ICMP type=0, code=0
Router-A#undebug all
All possible debugging has been turned off
上例说明,当信息包从内向外传输时,NAT
路由器会在继续转换数据包之前,先检查其路由选择表是否有通往外部地址的路由。 因此,NAT
路由器对于外部网络具有有效路由至关重要。 必须通过在路由器配置中被定义为
NAT 外部的接口来了解通向目标网络的路由。
特别需要指出的是,在返回数据包路由之前,它们已经过转换。 因此,NAT 路由器的路由选择表中还必须对内部本地地址具有有效路由。
|
注:本人能力有限,如遇不足之处,还请指正! |