最近在做一个项目,在7206vxr路由器上作NAT时碰到一个特别奇怪的现象:每隔一段时间内网就有一些主机无法上网了,而用“clear ip nat trans *”命令清掉NAT转换列表后,这些主机就可以上网了,不过过一段时间同样的问题又重复出现了,经过几次重复后我发现每次出现问题的主机会在“show ip nat trans”的列表中呈现为icmperr的表项,如下所示,
icmperr x.x.x.x y.y.y.y -- --
其中x.x.x.x 是该主机转换成的公网地址,y.y.y.y是该主机的内部地址
起先以为是软件的问题,但换了几个版本都出现同样的问题,查阅Cisco关于NAT的文档也没有相关的描述,最后定义了如下的列表,过滤了来自内部主机的icmp unreachable, icmp time-exceeded, icmp parameter-problem, icmp redirect和icmp source-quench几种icmp报文,到目前为止,问题再没出现,虽然不知是否是最终解决方案,也许这是IOS的一个bug,但希望对碰到同样困难的朋友能有帮助,我的列表如下:
ip access-list extended filter-inside
 deny icmp 10.0.0.0 0.255.255.255 any unreachable
 deny icmp 10.0.0.0 0.255.255.255 any time-exceeded
 deny icmp 10.0.0.0 0.255.255.255 any parameter-problem
 deny icmp 10.0.0.0 0.255.255.255 any redirect
 deny icmp 10.0.0.0 0.255.255.255 any source-quench
 permit ip any any