4.4 NAT 的故障检测与排除
Cisco NAT机制可以完成很多功能,配置也非常简单。如果出现了故障,可以重点关注以下问题。
• 动态地址池是否包含了正确的地址段?
• 动态地址池之间是否与地址重叠?
• 静态映射所用的地址与动态地址池中的地址是否重叠?
• 访问列表是否正确指定了需要进行转换的地址?是否遗漏了部分地址?是否包含了部分不应包含在内的地址?
• 是否正确指定了内部和外部接口?
对一个新的NAT配置来说,最常见的问题不是NAT本身,而是路由问题。请记住,NAT需要改变数据包中的源地址或目的地址。在进行地址转换之后,路由器是否知道如何路由新的地址?
另一个问题就是超时。如果NAT表中的动态映射表项超时后,被转换地址仍然被缓存在某些系统中,那么数据包将会被发送给错误的地址,或者目的地被误认为已经消失。除了前面已经讨论过的命令ip nat translation timeout之外,还可以更改其他默认超时周期。表4-3列出了命令ip nat translation可用的全部关键字及相应的默认超时周期值,可以将默认值更改为0~2 147 483 647秒之间的任何值。
NAT表所能容纳的映射表项理论上没有数量上的限制,但在实际应用中,映射表项的数量受到NAT设备的内存和CPU的限制,或者受到可用地址或可用端口的数量限制,每条NAT映射表项大约要占用160字节的内存容量。如果今后遇到因性能或策略等因素而不得不限制Nat映射表项时,可以使用命令ip nat translation max-entries。
另一条非常有用的故障检测与排除命令是show ip nat statistics(如例4-32所示)。该命令将显示NAT配置的汇总信息,包括有效转换类型的数量、命中现有映射表项的次数、未命中现有映射表项的次数(导致试图创建一个新的映射表项)以及地址转换到期的数量,对动态地址池来说,还包括地址池类型、全部可用地址数、已分配地址数、未成功分配的次数以及使用地址池进行转换(refcount)的次数。
例4-32:命令show ip nat statistics可以显示很多有助于分析和检测及排除NAT配置故障的信息。
最后,可以手工清除NAT表中的动态NAT映射表项。这一招在希望尽快清除非期望映射表项(而不是等到超时周期过期)或需要清除整个NAT以重新配置地址池时非常有用。请注意,当地址池中的地址被映射到NAT表中时,Cisco IOS Software不允许更改或删除地址池。命令clear ip nat translations的作用是清除映射表项,可以通过全局和本地地址或者通过TCP和UDP转换(包括端口转换)来指定清除某条映射表项,也可以使用通配符(*;)来清除整个NAT表。当然,该命令只能清除动态映射表项,无法删除静态映射表项。