route-policy和ACL、ip-prefix组合时permit和deny的作用

数通
  • 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.拓扑

route-policy和ACL、ip-prefix组合时permit和deny的作用-下一朵云
图1 route-policy配置实例拓扑

在拓扑中的路由器,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

RuleMode匹配结果
permitpermit匹配该节点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下一个节点的匹配 。

三、总结

  1. 在使用route-policy过滤路由时,如果允许路由通过,则在route-policy中使用permit,ACL中也使用permit。
  2. 在使用route-policy过滤路由时,如果要拒绝路由通过,则在route-policy中使用deny,ACL中使用permit。
  3. 不管route-policy的节点是deny还是permit,只要ACL是deny的,在route-policy的这个节点被ACL deny掉的这些路由都是被拒绝的,但是会进入到route-policy的下一个节点匹配。
  4. 只要ACL是permit的,被ACL的permit匹配的路由,匹配结束,不会进入到route-policy的下一个节点继续匹配了。
  5. route-policy默认隐含拒绝通过,没有被匹配的路由默认拒绝。
版权声明:本文为下一朵云发布文章,转载请附上原文出处链接和本声明。
本文链接:https://www.orcy.net.cn/3253.html

​ 广告:HCIE-Security认证课程辅导资料(付费)

1 条评论

  • 头像
    老王
    2022-10-30

    清晰透彻,终于搞明白这两的关系了!谢谢

发表评论

电子邮件地址不会被公开。 必填项已用*标注