科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道关于NAT中route-map.ACL顺序关系-BSCI

关于NAT中route-map.ACL顺序关系-BSCI

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

今天作了BSCI第一章实验2之任务4之后,突然想到验证下在NAT过程中route-map acl路由器到底是先根据谁来找谁来决定最终如何转换的.

作者:Vlan9 来源:Vlan9 2008年6月10日

关键字: NAT 网络地址转换 什么是nat

  • 评论
  • 分享微博
  • 分享邮件

  今天作了BSCI第一章实验2之任务4之后,突然想到验证下在NAT过程中route-map acl路由器到底是先根据谁来找谁来决定最终如何转换的.

  就利用任务4的结果了,在任务4里R1路由器配置是这样的:

  任务的要求是源IP是10.1.1.0/24网络的目标到10.254.0.0/24网络的都转换成BBR池中的地址即192开头.

  其他的都要转成POD池中地址即10开头的

  ip nat pool bbr 192.168.1.1 192.168.1.254 prefix-length 24

  ip nat pool pod 10.1.0.64 10.1.0.95 netmask 255.255.255.0

  ip nat inside source route-map to-bbr pool bbr

  ip nat inside source route-map to-pod pool pod

  ip http server

  ip classless

  ip route 10.0.0.0 255.0.0.0 172.31.1.5

  !

  !

  access-list 100 permit ip 10.1.1.0 0.0.0.255 10.254.0.0 0.0.0.255

  access-list 101 permit ip 10.1.1.0 0.0.0.255 any

  !

  route-map to-bbr permit 10

  match ip address 100

  !

  route-map to-pod permit 10

  match ip address 101

  先分析这个:

  上面这个配置没有错误,路由器工作正常.

  本来我的想法是路由器是先根据ACL找到ROUTE-MAP然后根据ROUTE-MAP所在的IP NAT INSIDE这样语句里指定的POOL池来转换的.

  于是我改了下配置如下:

  ip nat pool bbr 192.168.1.1 192.168.1.254 prefix-length 24

  ip nat pool pod 10.1.0.64 10.1.0.95 netmask 255.255.255.0

  ip nat inside source route-map to-bbr pool bbr

  ip nat inside source route-map to-pod pool pod

  ip http server

  ip classless

  ip route 10.0.0.0 255.0.0.0 172.31.1.5

  !

  !

  access-list 101 permit ip 10.1.1.0 0.0.0.255 any

  access-list 100 permit ip 10.1.1.0 0.0.0.255 10.254.0.0 0.0.0.255

  !

  route-map to-bbr permit 10

  match ip address 100

  !

  route-map to-pod permit 10

  match ip address 101

  注意上面的蓝色部分,我将ACL顺序调了下,如果按照我原先的理解(acl--route-map--pool)那么,此时不管是目的网络是什么,路由器都会按照101的acl找到route-map即to-pod,也就是都会转成pod池里的.但是实际实验结果却不是如同我想的,看来路由器不是先找ACL,难道是根据IP NAT INSIDE这个语句的排列顺序?可是不管我先写哪个,路由器最终都是认为ip nat inside source route-map to-bbr pool bbr这条语句在先.于是开始晕了,到群里和人讨论,网友☆诺メ言☆起初想法也和我一样,它也提出了ACL顺序问题,然后它提出no掉

  ip nat inside source route-map to-bbr pool bbr这个语句,看路由器是否能正常转到POD地址池里,因为如果是先由ip nat inside语句来找route-map最后看是否匹配acl这个顺序的话,那么no 掉ip nat inside source route-map to-bbr pool bbr 这个语句后,路由器应该转成POD里的地址池,但是实际测试结果不是这样,路由器给出了找不到BBR地址池,数据被丢弃这样的提示.看来路由器不是按照IP NAT INSIDE来先找的,现在能怀疑的就是ROUTE-MAP了,于是NO 掉route-map to-bbr permit 10 这个语句,此时数据来的时候,路由器只能根据route-map to-pod permit 10来匹配了,最终地址应该被转成pod池里的也就是10开头的,实际结果证明了我们的猜想.看来路由器是先根据ROUTE-MAP顺序来执行的,路由器先根据route-map找匹配的ACL,根据ACL检查数据是否符合要求,最后根据ROUTE-MAP所在的ip nat inside语句来转换.

  一切看起来似乎已经解决了,但有一个疑问一直存在,我刚才改ip nat inside 不管先写哪个路由器最终的排的顺序为什么都不变呢,难道是根据字母顺序排列的?

  ip nat inside source route-map to-bbr pool bbr

  ip nat inside source route-map to-pod pool pod

  看 前面单词都一样 不同的就是to-bbr 和to-pod这里了 b在p前面,于是我将to-bbr改成to-xbr ,路由器顺序果然也变了,于是同样更改route-map 顺序也变了,看来路由器真的是按照字母顺序排的,本任务第一个配置 之所以能始终正常而不管ACL的顺序是否符合正常的理论要求,就是因为ROUTE-MAP这个顺序始终没变.

  最终修改的配置为:

  ip nat pool pod 10.1.0.64 10.1.0.95 netmask 255.255.255.0

  ip nat pool xbr 192.168.1.1 192.168.1.254 netmask 255.255.255.0

  ip nat inside source route-map to-pod pool pod

  ip nat inside source route-map to-xbr pool xbr

  ip http server

  ip classless

  ip route 10.0.0.0 255.0.0.0 172.31.1.5

  !

  !

  access-list 100 permit ip 10.1.1.0 0.0.0.255 any

  access-list 101 permit ip 10.1.1.0 0.0.0.255 10.254.0.0 0.0.0.255

  !

  route-map to-pod permit 10

  match ip address 100

  !

  route-map to-xbr permit 10

  match ip address 101

  在这个配置下,根据route-map 路由器会先调用acl100来检查数据是否符合,这个时候不管目的网络是什么都符合要求,路由器认为第一个route-map始终被匹配.所以始终会被转成POD池里的地址.下面是实际实验调试结果:

  *Mar 1 03:34:01.423: NAT: s=10.1.1.3->10.1.0.67, d=10.254.0.5 [105]

  r1-2514>

  *Mar 1 03:34:03.415: NAT*: s=10.1.1.3->10.1.0.67, d=10.254.0.5 [106]

  r1-2514>

  *Mar 1 03:34:05.415: NAT*: s=10.1.1.3->10.1.0.67, d=10.254.0.5 [107]

  r1-2514>

  *Mar 1 03:34:07.419: NAT*: s=10.1.1.3->10.1.0.67, d=10.254.0.5 [108]

  r1-2514>

  *Mar 1 03:34:09.415: NAT*: s=10.1.1.3->10.1.0.67, d=10.254.0.5 [109]

  ------------------------

  *Mar 1 03:34:24.139: NAT: s=10.1.1.3->10.1.0.67, d=10.1.0.2 [110]

  *Mar 1 03:34:24.167: NAT*: s=10.1.0.2, d=10.1.0.67->10.1.1.3 [110]

  *Mar 1 03:34:24.179: NAT*: s=10.1.1.3->10.1.0.67, d=10.1.0.2 [111]

  *Mar 1 03:34:24.203: NAT*: s=10.1.0.2, d=10.1.0.67->10.1.1.3 [111]

  *Mar 1 03:34:24.211: NAT*: s=10.1.1.3->10.1.0.67, d=10.1.0.2 [112]

  *Mar 1 03:34:24.235: NAT*: s=10.1.0.2, d=10.1.0.67->10.1.1.3 [112]

  *Mar 1 03:34:24.251: NAT*: s=10.1.1.3->10.1.0.67, d=10.1.0.2 [113]

  *Mar 1 03:34:24.275: NAT*: s=10.1.0.2, d=10.1.0.67->10.1.1.3 [113]

  *Mar 1 03:34:24.287: NAT*: s=10.1.1.3->10.1.0.67, d=10.1.0.2 [114]

  *Mar 1 03:34:24.311: NAT*: s=10.1.0.2, d=10.1.0.67->10.1.1.3 [114]

  可以看出不管目的地址是10.1.0.2 还是10.254.0.5都转成10.1.0.6*这样的地址了.

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章