您的位置:首页 > 其它

ACL和RouteMap的permit和deny规则在路由重分配时的动作

2012-09-18 15:18 483 查看
A –--- B 两台路由器通过E1/1接口直联,运行OSPF。

A路由器配置3条静态路由:

ip route 7.0.0.0 255.0.0.0 Ethernet1/1

ip route 8.0.0.0 255.0.0.0 Ethernet1/1

ip route 9.0.0.0 255.0.0.0 Ethernet1/1

A路由器ospf的配置如下:

router ospf 1

log-adjacency-changes

redistribute static route-map test

network 0.0.0.0 255.255.255.255 area 1

1)

在A路由器上,不配置任何ACL,只配置RouteMap,配置如下:

route-map test permit 10

match ip address 1

此时ACL 1是一张空表。

配置完成之后过几秒钟,在B路由器上查看OSPF的路由表,如下:

Link ID ADV Router Age Seq# Checksum Tag

7.0.0.0 192.168.1.1 52 0x80000001 0x0073BA 0

8.0.0.0 192.168.1.1 1207 0x80000001 0x0066C6 0

9.0.0.0 192.168.1.1 1207 0x80000001 0x0059D2 0

A路由器上的三条静态路由都成功的重分配进OSPF,并传给了B路由器。

单步总结:当RouteMap引用的ACL是一张空表时,对应的规则是permit any。

2)

在A上配置ACL 1,只有一个permit规则,此时ACL和RouteMap的配置如下:

access-list 1 permit 7.0.0.0 0.255.255.255

!

route-map test permit 10

match ip address 1

此时,在B路由器上,就只能看到7.0.0.0这条路由,如下:

Link ID ADV Router Age Seq# Checksum Tag

7.0.0.0 192.168.1.1 140 0x80000001 0x0073BA 0

A路由器只重分配了7.0.0.0这条路有进OSPF,另外两条就被过滤掉了。

单步总结:当RouteMap引用的ACL是非空表时,ACL规则开始生效,如上例子,ACL 1允许(permit)了7.0.0.0这条路由,并且deny掉了其它的路由(每条ACL最后都有一个隐藏的deny any)。

3)

在A路由器上,修改ACL的配置,RouteMap配置不变,如下:

access-list 1 deny 7.0.0.0 0.255.255.255

!

route-map test permit 10

match ip address 1

上一步的ACL 1是permit 7.0.0.0这条路由,这一步仅仅是将permit修改成deny。

配置完成过一会儿,查看B路由器OSPF的路由表,A路由器上的三条静态路由,B路由器一条都没有。

单步总结:这一步得到的结论跟第2步的结论一样,ACL 1显示的deny掉了7.0.0.0这条路由,然后用隐藏规则deny掉了其它两条路由。

4)

为了充分测试,搞清楚每一个细节,我们再将ACL的配置做一点修改,RouteMap的配置暂时保持不变,A路由器的配置如下:

access-list 1 deny 7.0.0.0 0.255.255.255

access-list 1 permit any

!

route-map test permit 10

match ip address 1

ACL 1 的配置增加了一条permit any。

过一会儿查看B路由器OSPF的路由表,如下:

Link ID ADV Router Age Seq# Checksum Tag

8.0.0.0 192.168.1.1 12 0x80000001 0x0066C6 0

9.0.0.0 192.168.1.1 12 0x80000001 0x0059D2 0

可以看到8.0.0.0 9.0.0.0这两条路有豆成功的进行了重分配。

单步总结:ACL 1由于配置了permit any,这条规则在隐藏规则之前生效,因此8.0.0.0 9.0.0.0这两条路由成功匹配并重分配。

5)

测试到这里,可能大家会觉得这个规则已经很清楚了,其实不然阿!到目前为止,RouteMap的配置一直没有变化,下面,我们慢慢地将RouteMap的配置进行修改,进行进一步的分析。

在上一步的基础上,我们修改一下配置,A路由器的配置如下:

access-list 1 permit 7.0.0.0 0.255.255.255

!

route-map test deny 10

match ip address 1

ACL 1仅仅允许7.0.0.0 这条路由,不过,此时RouteMap test 10已经变成了deny。读到这里,大家可以先自己想想会是一个什么样的结果。

此时B路由器上OSPF路由表为空!

单步结论:虽然ACL 1允许了一条路由,但是RouteMap的deny的优先级更高(或者可以理解为RouteMap的这个deny在后面执行),因此B路由器上没有看到任何一个静态路由。

6)

我们继续修改RouteMap的配置,此时我们增加一条RouteMap的配置,A路由器的配置如下:

access-list 1 permit 7.0.0.0 0.255.255.255

!

route-map test deny 10

match ip address 1

!

route-map test permit 20

在上一步的基础上,增加名称为test,序列号为20的RouteMap,这条RouteMap配置下什么都没有。

此时查看B路由器上OSPF的路由表,如下:

Link ID ADV Router Age Seq# Checksum Tag

8.0.0.0 192.168.1.1 9 0x80000001 0x0066C6 0

9.0.0.0 192.168.1.1 9 0x80000001 0x0059D2 0

可以看出,8.0.0.0 9.0.0.0这两条路由成功进行了重分配。

ACL 1只允许了7.0.0.0这条路由,由于RouteMap test 10 的deny动作,7.0.0.0这条路由没有进行重分配。现在8.0.0.0 9.0.0.0这两条路由进行了重分配,只有一个解释,那就是ACL1对这两条路由给出的deny(ACL 1的隐藏规则)并不是影响最终了重分配动作!ACL 1虽然deny了这两条路由,但是在RouteMaptest 20里面,将match everything(RouteMap下如果没有配置任何match命令,则表示matcheverything)。

单步结论:ACL给出的deny不会影响最终的重分配动作,RouteMap如果后续还有配置,则将ACL deny的路由继续向下传递并重新进行匹配。

7)

再A路由器上,进一步修改配置,如下:

access-list 1 deny 7.0.0.0 0.255.255.255

!

route-map test deny 10

match ip address 1

!

route-map test permit 20

我们把ACL 1修改为deny动作,RouteMap的配置保持跟第6步一致。

配置完成之后查看B路由器的OSPF路由表,如下:

Link ID ADV Router Age Seq# Checksum Tag

7.0.0.0 192.168.1.1 1 0x80000001 0x0073BA 0

8.0.0.0 192.168.1.1 1 0x80000001 0x0066C6 0

9.0.0.0 192.168.1.1 1 0x80000001 0x0059D2 0

A路由器上的三条路由都成功进行了重分配。

第6步,我们得出一个结论,ACL给出的deny并不影响最终重分配动作,那么在这一步测试进行分析,ACL是deny,RouteMap也是deny,但是所有的静态路由都成功进行了重分配,因此,可以说明,ACL的deny就可以简单的理解为匹配失败。(将这一步的ACL配置修改成access-list 1 deny any,B路由器上的结果还是一样。有兴趣的读者可以自己进行测试。)

单步结论:ACL给出的deny就是匹配失败,这时,RouteMap的动作并不重要,因此RouteMap的动作只有在匹配成功的时候才生效,ACL deny之后,将进入下一条RouteMap继续进行匹配。

8)

最后,综合测试一下,A路由器的配置如下:

access-list 1 permit 7.0.0.0 0.255.255.255

access-list 2 permit 8.0.0.0 0.255.255.255

access-list 3 deny 9.0.0.0 0.255.255.255

!

route-map test deny 10

match ip address 1

!

route-map test permit 20

match ip address 2

!

route-map test permit 30

match ip address 3

配置完成之后,查看B路由器上的OSPF路由表,如下:

Link ID ADV Router Age Seq# Checksum Tag

8.0.0.0 192.168.1.1 51 0x80000001 0x0066C6 0

前面7步得到的测试结论可以很好的解释这一步的测试结果。

最终结论:

1,当RouteMap引用的ACL是一张空表时,表示permit any;

2,当RouteMap引用的ACL不是一张空表时,ACL的隐藏规则是要发挥作用的;

3,ACL中的比较给出的permit表示匹配成功,然后执行相应RouteMap的动作;

4,ACL中的比较给出的deny表示匹配失败,不执行相应RouteMap的动作,但这并不是RouteMap的最终结果,后面还要根据RouteMap自身的规则进行。(即如果RouteMap后续还有序列号大的配置项,继续进入后面的RouteMap配置进行比较;如果后面没有任何RouteMap的配置了,则执行RouteMap的隐藏动作deny everything。)


也许可以这样理解:

绑定一张空表等于没有绑定。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: