route-policy和ACL组合时permit和deny的做用

Route-policy 实验node

1、 拓扑ide

重分布图.png

拓扑中的路由器,左边运行着RIP,右边运行着OSPF。在R2上作重分布,将RIP路由引入OSPF,并进行控制spa


2、 在R2上作重分布,而且作route-policyrouter

R2:blog

ospf 110 router-id 2.2.2.2
 import-route rip 1 route-policy liuqing ip



  1. route-policy为permit,ACL有permit也有denyci

acl number 2001 路由

rule 10 permit source 1.1.0.0 0.0.0.255get

rule 20 permit source 1.1.1.0 0.0.0.255it

rule 30 deny source 1.1.2.0 0.0.0.255

route-policy liuqing permit node 10

if-match acl 2001

结果: R3上只有1.1.0.0和1.1.1.0两条路由,被拒绝的1.1.2.0这条路由没有;

分析: 1.1.0.0和1.1.1.0这两条路由,在route-policy的节点10是permit,在ACL上也是permit,因此容许经过;1.1.2.0这条路由,在route-policy的节点10是permit,在ACL上是deny,因此在这个节点上被拒绝经过,可是会进入下一个节点再进行匹配;其余的路由没有找到合适的匹配项,进入下一个节点再匹配,若是最终没被匹配上,被拒绝经过


2. Route-policy为permit,ACL有permit也有deny


route-policy liuqing permit node 10

if-match acl 2001

route-policy liuqing permit node 20

if-match acl 2002

acl number 2001 

rule 10 permit source 1.1.0.0 0.0.0.255

rule 20 permit source 1.1.1.0 0.0.0.255

rule 30 deny source 1.1.2.0 0.0.0.255

acl number 2002 

rule 10 permit source 1.1.2.0 0.0.0.255

结果: 1.1.0.0 1.1.1.0 1.1.2.0这三条路由都被容许经过

分析: 对于节点10,上面已经分析过了,1.1.0.0和1.1.1.0被容许经过,1.1.2.0这条路由在节点10被拒绝经过,但会继续匹配下一个节点,1.1.2.0这条路由在route-policy的节点20被容许经过


3. Route-policy为deny,ACL为有permit也有deny


acl number 2001 

rule 10 permit source 1.1.0.0 0.0.0.255

rule 20 permit source 1.1.1.0 0.0.0.255

rule 30 deny source 1.1.2.0 0.0.0.255

route-policy liuqing deny node 10

if-match acl 2001

#

route-policy liuqing permit node 20

结果: 只有1.1.0.0和1.1.1.0被拒绝经过,其余的路由都被容许

分析: route-policy的节点是deny,而ACL是permit的,对于这种路由被拒绝,而且匹配结束; 对于route-policy的节点是deny,ACL也是deny的,对于这种路由在本节点被拒绝,会到下一个节点进行匹配,因为节点20是空的,因此1.1.2.0会被容许经过;其余没有被ACL 2001匹配的路由会被空的节点20匹配,得以经过。


4. Route-policy为deny,ACL为DENY


route-policy liuqing deny node 10

if-match acl 2001

acl number 2001 

rule 10 deny source 1.1.0.0 0.0.0.255

rule 20 deny source 1.1.1.0 0.0.0.255

rule 30 deny source 1.1.2.0 0.0.0.255

结果:全部被重分布的路由都不能经过

分析:因为route-policy为deny,ACL为deny,因此ACL中的这三条路由在route-policy的这个节点都被拒绝,并进入route-policy的下一个节点进行匹配,因为在这个案例中没有下一个节点,因此路由被拒绝。


5. Route-policy为deny,ACL为DENY和permit


acl number 2001 

rule 10 deny source 1.1.0.0 0.0.0.255

rule 20 deny source 1.1.1.0 0.0.0.255

rule 30 deny source 1.1.2.0 0.0.0.255

acl number 2002 

rule 10 permit source 1.1.2.0 0.0.0.255

route-policy liuqing deny node 10

if-match acl 2001

#

route-policy liuqing permit node 20

if-match acl 2002

结果: 只有1.1.2.0这条路由被经过

分析:对于route-policy的节点10,因为route-policy为deny,ACL也是deny,因此ACL中这三条路由在本节点被拒绝,而且继续进入下一个节点进行匹配;在节点20,route-policy的规则是permit,ACL的规则也是permit,因此ACL 2002中的这条路由1.1.2.0被容许经过;其余的路由没有被ACL匹配到,默认被拒绝了。


6. 对于一个route-policy的一个节点有多个if-match时


route-policy liuqing permit node 10

if-match cost 1

if-match acl 2002

acl number 2002 

rule 10 permit source 1.1.2.0 0.0.0.255

结果:1.1.2.0这条路由被容许

分析:route-policy的节点为permit,acl的规则也是permit,被ACL匹配的这条路由会被经过;但在这个案例中,route-policy有两个条件,一个是匹配cost为1,一个是匹配ACL2002,这须要两个条件同时知足才能被route-policy放通。


华为设备对于route-policy和ACL/ip-prefix的解释

Rule

Mode

匹配结果

permit

permit

l 匹配该节点if-match子句的路由在本节点容许经过Route-Policy,匹配结束。

l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配。

permit

deny

l 匹配该节点if-match子句的路由在本节点不容许经过Route-Policy,匹配结束。

l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配。

deny

permit

l 匹配该节点if-match子句的路由在本节点不容许经过Route-Policy,继续进行Route-Policy下一个节点的匹配。

l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配

deny

deny

l 匹配该节点if-match子句的路由在本节点不容许经过Route-Policy,继续进行Route-Policy下一个节点的匹配。

l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配

注1:Rule表示if-match子句中包含的匹配模式是permit仍是deny。

注2:Mode表示Route-Policy中node节点对应的匹配模式permit仍是deny。


总结:

    1. 在使用route-policy过滤路由时,若是容许路由经过,则在route-policy中使用permit,ACL中也使用permit; 

    2. 在使用route-policy过滤路由时,若是要拒绝路由经过,则在route-policy中使用deny,ACL中使用permit; 

    3. 无论route-policy的节点是permit仍是deny,只要ACL是DENY的,在route-policy的这个节点被ACL deny掉的这些路由是被拒绝的,可是会进入到route-policy的下一个节点去匹配。

    4. 只要ACL是permit的,被ACL的permit规则匹配的路由,匹配结束,不会再进入到route-policy的下一个节点再进行匹配了。

相关文章
相关标签/搜索