使用的组件
本文不局限于特殊的软件和硬件版本。
配置
本部分向您提供配置本文所述功能所需要的信息。
网络图
本文使用下图所示的网络设置。
从Router 2514w的loopback0接口(172.16.88.1)到Router 2501e的171.68.1.1的ping 数据包成功。在Router 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"。在本例中,该地址被转换成 171.68.16.10。转换之后,Router 2514x 在路由表中搜索目的地并传送数据包。Router 2501e在入局接口上发现这个数据包,SA 为171.68.16.10,DA 为171.68.1.1。Router 2501e发出一个互联网控制消息协议(ICMP)响应来答复171.68.16.10。如果它没有路由,那么它就丢弃这个数据包。在本例中,由于Router 2501e有一个(默认的)路由,因此,Router 2501e使用 171.68.1.1 的SA和 171.68.16.10的DA将数据包发送到Router 2514x。Router 2514x发现这个包并检查去往171.68.16.10 地址的路由。如果Router 2501e没有一个路由,那它就发送ICMP不可到达的应答来作响应。在本例中,由于它有去往171.68.16.10的路由,因此它将这个数据包转换回172.16.88.1地址,并将该包路由出自己的外部接口。
配置
检验
此配置目前没有检验程序。
故障检修
本部分向您提供可以用于配置排障的信息。
以下输出是从Router 2514w的 loopback0 接口地址(172.16.188.1)ping到Router 2501e的loopback0接口地址(171.68.1.1)时,在Router 2514x上运行debug ip packet 和 debug ip nat 命令的结果。
rp-2514x#
NAT: s=172.16.88.1-171.68.16.10, d=171.68.1.1 [40]
IP: s=171.68.16.10 (Serial1), d=171.68.1.1 (Ethernet1), g=171.68.192.201, len
100, forward ICMP type=8, code=0
NAT: s=171.68.1.1, d=171.68.16.10-172.16.88.1 [40]
IP: s=171.68.1.1 (Ethernet1), d=172.16.88.1 (Serial1), g=172.16.191.254, len
100, forward ICMP type=0, code=0
NAT: s=172.16.88.1-171.68.16.10, d=171.68.1.1 [41]
IP: s=171.68.16.10 (Serial1), d=171.68.1.1 (Ethernet1), g=171.68.192.201, len
100, forward ICMP type=8, code=0
NAT: s=171.68.1.1, d=171.68.16.10-172.16.88.1 [41]
IP: s=171.68.1.1 (Ethernet1), d=172.16.88.1 (Serial1), g=172.16.191.254, len
100, forward ICMP type=0, code=0
NAT: s=172.16.88.1-171.68.16.10, d=171.68.1.1 [42]
IP: s=171.68.16.10 (Serial1), d=171.68.1.1 (Ethernet1), g=171.68.192.201, len
100, forward ICMP type=8, code=0
NAT: s=171.68.1.1, d=171.68.16.10-172.16.88.1 [42]
IP: s=171.68.1.1 (Ethernet1), d=172.16.88.1 (Serial1), g=172.16.191.254, len
100, forward ICMP type=0, code=0
NAT: s=172.16.88.1-171.68.16.10, d=171.68.1.1 [43]
IP: s=171.68.16.10 (Serial1), d=171.68.1.1 (Ethernet1), g=171.68.192.201, len
100, forward ICMP type=8, code=0
NAT: s=171.68.1.1, d=171.68.16.10-172.16.88.1 [43]
IP: s=171.68.1.1 (Ethernet1), d=172.16.88.1 (Serial1), g=172.16.191.254, len
100, forward ICMP type=0, code=0
NAT: s=172.16.88.1-171.68.16.10, d=171.68.1.1 [44]
IP: s=171.68.16.10 (Serial1), d=171.68.1.1 (Ethernet1), g=171.68.192.201, len
100, forward ICMP type=8, code=0
NAT: s=171.68.1.1, d=171.68.16.10-172.16.88.1 [44]
IP: s=171.68.1.1 (Ethernet1), d=172.16.88.1 (Serial1), g=172.16.191.254, len
100, forward ICMP type=0, code=0
总结
使用 ip nat outside source list 命令(动态NAT)而不是 ip nat outside source static 命令(静态NAT)的主要区别在于,在(为NAT配置的)路由器检验数据包的转换标准之前,在转换表中没有条目。在上例中,SA为172.16.88.1的数据包(进入Router 2514x的外部接口)符合访问列表1,即 ip nat outside source list 命令使用的标准。因此,在内部网络的包可以与Router 2514w的loopback0接口通信之前,必须从外部网络始发数据包。
本例中需要注意两点:
第一,当数据包从外部传输到内部时,先进行转换,然后检查目的地的路由表。当数据包从内部传输到外部时,先检查目的地的路由表,然后进行转换。
第二,使用上述每条命令时,记录IP数据包的哪个部分被转换很重要。下表给出了一个纲要:
以上表明有多种方法可以转换包。根据您的具体要求,您应该确定如何定义NAT接口(内部或外部),以及路由表在转换之前或之后应该包含哪些路由。一定要记住,包被转换的部分取决于该包传输的方向以及您如何配置NAT。