- route-policy配置实例
- (1)route-policy为permit,ACL有permit也有deny
- (2)route-policy为permit,ACL有permit也有deny
- (3)route-policy为deny,ACL有permit也有deny
- (4)route-policy为deny,ACL也为deny
- (5)route-policy为deny,ACL为deny和permit
- (6)对于一个route-policy节点有多个if-match
- 华为设备对route-policy和ACL/ip-prefix的解释
- 总结
route-policy和ACL、ip-prefix组合时permit和deny的作用
一、route-policy配置实例
1.拓扑
在拓扑中的路由器,R1所在区域运行RIP,R3所在区域运行OSPF。在R2上做重分布,将RIP路由引入到OSPF,并进行控制
2.在R2上做重分布,并且做route-policy
[R2]ospf 1 route-id 2.2.2.2
[R2-ospf-1]import-route rip 1 route-policy test
(1)route-policy为permit,ACL有permit也有deny
# 配置ACL匹配源IP
[R2]acl number 2001
[R2-acl-basic-2001]rule 10 permit source 1.1.0.0 0.0.0.255
[R2-acl-basic-2001]rule 20 permit source 1.1.1.0 0.0.0.255
[R2-acl-basic-2001]rule 30 deny source 1.1.2.0 0.0.0.255
# 配置route-policy,名称为test,节点10
[R2]route-policy test permit node 10
[R2-route-policy]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
# 配置ACL匹配源IP
[R2]acl number 2001
[R2-acl-basic-2001]rule 10 permit source 1.1.0.0 0.0.0.255
[R2-acl-basic-2001]rule 20 permit source 1.1.1.0 0.0.0.255
[R2-acl-basic-2001]rule 30 deny source 1.1.2.0 0.0.0.255
[R2]acl number 2002
[R2-acl-basic-2002]rule 10 permit source 1.1.2.0 0.0.0.255
#
[R2]route-policy test permit node 10
[R2-route-policy]if-match acl 2001
#
[R2]route-policy test permit node 20
[R2-route-policy]if-match acl 2002
结果:1.1.0.0 、1.1.1.0、 1.1.2.0这三条路由都被允许通过
分析:对于route-policy节点10,上边已经分析,1.1.0.0和1.1.1.0被允许通过,1.1.2.0这条路由在节点10被拒绝通过,但是会继续匹配下一个节点,在节点20被允许通过。
(3)route-policy为deny,ACL有permit也有deny
# 配置ACL匹配源IP
[R2]acl number 2001
[R2-acl-basic-2001]rule 10 permit source 1.1.0.0 0.0.0.255
[R2-acl-basic-2001]rule 20 permit source 1.1.1.0 0.0.0.255
[R2-acl-basic-2001]rule 30 deny source 1.1.2.0 0.0.0.255
#
[R2]route-policy test deny node 10 #节点10为deny
[R2-route-policy]if-match acl 2001
#
[R2]route-policy test 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会被允许通过,其他没有被ACL2001匹配的路由会被空节点20匹配通过。
(4)route-policy为deny,ACL也为deny
# 配置ACL匹配源IP,ACL为deny
[R2]acl number 2001
[R2-acl-basic-2001]rule 10 deny source 1.1.0.0 0.0.0.255
[R2-acl-basic-2001]rule 20 deny source 1.1.1.0 0.0.0.255
[R2-acl-basic-2001]rule 30 deny source 1.1.2.0 0.0.0.255
#
[R2]route-policy test deny node 10 #节点10为deny
[R2-route-policy]if-match acl 2001
结果:所有路由都不能通过。
分析:由于route-policy节点10为deny,ACL为deny,所以ACL中的三条路由在节点10被拒绝,并进入下一个节点匹配,由于没有下一个节点,所以默认路由被拒绝。
(5)route-policy为deny,ACL为deny和permit
# 配置ACL匹配源IP,ACL为deny
[R2]acl number 2001
[R2-acl-basic-2001]rule 10 deny source 1.1.0.0 0.0.0.255
[R2-acl-basic-2001]rule 20 deny source 1.1.1.0 0.0.0.255
[R2-acl-basic-2001]rule 30 deny source 1.1.2.0 0.0.0.255
# ACL为permit
[R2]acl number 2002
[R2-acl-basic-2002]rule 10 permit source 1.1.2.0 0.0.0.255
#节点10为deny
[R2]route-policy test deny node 10
[R2-route-policy]if-match acl 2001
#节点20为permit
[R2]route-policy test permit node 20
[R2-route-policy]if-match acl 2002
结果:只有1.1.2.0这条路由通过。
分析:对于route-policy的节点10,由于route-policy为deny,ACL也是deny,所以ACL 2001中的三条路由在本节点被拒绝,并且进入下一个节点进行匹配;在节点20,route-policy为permit,ACL也是permit没所以ACL 2002中的1.1.2.0被允许通过,其他路由没有被ACL匹配,默认被拒绝。
(6)对于一个route-policy节点有多个if-match
[R2]acl number 2002
[R2-acl-basic-2002]rule 10 permit source 1.1.2.0 0.0.0.255
#
[R2]route-policy test permit node 10
[R2-route-policy]if-match cost 1
[R2-route-policy]if-match acl 2002
结果:1.1.2.0 这条路由被允许通过。
分析:route-policy的节点为permit,ACL也为permit,被ACL匹配的这条路由会被通过;但在本实例中,route-policy有两个条件,一个是cost为1,另一个是匹配ACL 2002,这两个条件需要同时满足才会被允许通过。
二、华为设备对route-policy和ACL/ip-prefix的解释
Rule:表示if-match子句中包含的匹配模式是permit还是deny(也就是ACL的模式)
Mode:表示route-policy中node节点对应的模式是permit还是deny
Rule | Mode | 匹配结果 |
permit | permit | 匹配该节点if-match子句的路由在本节点允许通过route-policy,匹配结束。 不匹配if-match子句的路由进行route-policy下一个节点的匹配。 |
permit | deny | 匹配该节点if-match子句的路由在本节点不被允许通过route-policy,匹配结束。 不匹配if-match子句的路由进行route-policy下一个节点的匹配。 |
deny | permit | 匹配该节点if-match子句的路由在本节点不允许通过route-policy,继续进行route-policy下一个的匹配。 不匹配if-match子句的路由进行route-policy下一个节点的匹配 。 |
deny | deny | 匹配该节点if-match子句的路由在本节点不允许通过route-policy,继续进行route-policy下一个的匹配。 不匹配if-match子句的路由进行route-policy下一个节点的匹配 。 |
三、总结
- 在使用route-policy过滤路由时,如果允许路由通过,则在route-policy中使用permit,ACL中也使用permit。
- 在使用route-policy过滤路由时,如果要拒绝路由通过,则在route-policy中使用deny,ACL中使用permit。
- 不管route-policy的节点是deny还是permit,只要ACL是deny的,在route-policy的这个节点被ACL deny掉的这些路由都是被拒绝的,但是会进入到route-policy的下一个节点匹配。
- 只要ACL是permit的,被ACL的permit匹配的路由,匹配结束,不会进入到route-policy的下一个节点继续匹配了。
- route-policy默认隐含拒绝通过,没有被匹配的路由默认拒绝。
评论(0)