当你只使用ACL的时候,如图可以看出,不支持端口号,而且inside与outside的关系是一一对应.而且带来的缺点是很难排错
在配置模式下输入route-map map-tag [permit | deny] [sequence-number],定义路由策略;接下来输入match {conditions},定义条件;最后使用set {actions}定义对符合条件的语句采取的措施
map-tag是route map号,路由器从上到下的处理这些陈述,直到找到第一个匹配的的语句然后应用它.一条单独的match语句可以包含多个条件.每条条件语句中至少要有一条符合条件的语句.sequence-number定义了检查的顺序,比如1个名为hello的router map,其中一个的sequence-number为10;另外一个为20.那么将先检查sequence-number为10的那个.和ACL一样,在末尾有条隐含的deny any语句
来看看一个router map配置的例子,如下图:
如图黄色部分是增加的route map.在这个例子里,名为what_is_sales_doing的route map通过使用ip nat inside source route-map what_is_sales_doing pool sales_pool命令和sales_pool相互链接.源地址为10.1.2.100的包到达E0口,即IP NAT inside接口.ip nat inside source route-map what_is_sales_doing pool sales_pool命令告诉路由器发送包给名为what_is_sales_doing的route map.这个route map的sequence 10匹配包的源地址10.1.2.100,依靠ACL 2.接下来路由器查询名为sales_pool的NAT池,得到10.1.2.100要翻译的成的新地址
当使用route map的时候,路由器在IP NAT表里创建完全的扩展翻译条目,包含源地址和目标地址以及TCP或UDP端口号;当你只使用ACL的时候,路由器创建的只是一条简单的翻译条目,一个应用程序对应一个条目,不包含端口信息
Verifying NAT
检查NAT表的内容,使用show ip nat translation命令,注意下图,分别是NAT使用了ACL和NAT使用了route map的输出:
责任编辑:小草