ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 华为:路由策略与ACL

华为:路由策略与ACL

原创 Linux操作系统 作者:道仙 时间:2009-04-11 15:48:02 0 删除 编辑

关于路由策略与ACL匹配时的注意事项

 

相关理论注意点:

 

1、如果定义了一个以上的Route-policy节点,Route-policy的各个节点中至少应该有一个节点的匹配模式是permit。当一个Route-policy用于路由信息过滤时,如果某路由信息没有通过任一节点,则认为该路由信息没有通过该Route-policy。当Route-policy的所有节点都是deny模式时,所有路由信息都不会通过该Route-policy

 

 

 

2、如不指定if-match子句,则所有路由信息都会通过该节点的过滤。

 

 

 

规则详解

    在实际工程中经常用到route-policy的情况,下面对route-policyACL的详细匹配规则做以说明:

一、        标准访问列表:

#

acl number 2000

rule 0 permit source 192.168.1.0 0.0.0.255

 

此类ACL用于route-policy时做前缀匹配,即路由条目和规则条目做 AND 运算,结果落在反掩码的包含范围之内的则匹配成功。

对于上述配置:192.168.1.0/24  192.168.1.0 /25 192.168.1.0/30 等均可匹配,但是192.168.1.0/16 等则匹配不成功。

二、        扩展访问列表:

#

acl number 3000

rule 0 permit ip source 192.168.1.0 0 destination 255.255.255.0 0

acl number 3001

rule 0 deny ip source 192.168.1.0 0 destination 255.255.255.0 0

 

此类ACL比较特殊,源和目的的掩码均要为0 。用于route-policy 是要做严格的匹配,即前缀要和source 匹配,前缀的掩码部分要和destination匹配。

对于上述配置3000来说,则只有192.168.1.0/24可与之匹配。此类列表和Route-policy配合可用于严格的匹配一条路由条目。

三、        permit+permitroute-policy

#

route-policy t1 permit node 10

if-match acl 3000

apply local-preference 1300              

route-policy t1 permit node 20

 

对于route-policypermit规则来说,凡是能够匹配ACL permit规则的条目就执行node 10中的apply 规则,并不再继续匹配下面的规则。不能够匹配ACL permit规则的条目,就继续执行下一个 node 20中的相应规则。

对于上述配置的结果是192.168.1.0/24匹配node 10 被修改LP属性为1300 ,而192.168.2.0/24 则匹配node 20 不做任何修改。2个条目都可以通告。

 

[AR2810-B]dis bgp routing

 

Flags:  # - valid       ^ - active      I - internal

        D - damped      H - history     S - aggregate suppressed

 

 

    Dest/Mask          Next-Hop        Med        Local-pref Origin Path

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

#^I 192.168.1.0        10.0.0.2        0          1300        IGP  

#^I 192.168.2.0        10.0.0.2        0          100         IGP  

 

  Routes total: 2

 

[AR2810-B]

 

四、        permit+deny route-policy

#

route-policy t2 permit node 10

if-match acl 3001

apply local-preference 2300

route-policy t2 permit node 20

 

 

对于route-policy permit规则来说,凡是明确和ACL deny 规则匹配的则不执行node 10中的apply规则。并且会继续执行下一个node 20 进行匹配

对于上述配置的结果是:192.168.1.0/24 node 10 匹配,被 DENY 。但是会继续和后面的nod 20 匹配。上述规则192.168.1.0/24 192.168.2.0/24条目都可被通告。

[AR2810-B]dis bgp routing

 

Flags:  # - valid       ^ - active      I - internal

        D - damped      H - history     S - aggregate suppressed

 

 

    Dest/Mask          Next-Hop        Med        Local-pref Origin Path

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

#^I 192.168.1.0        10.0.0.2        0          100         IGP  

#^I 192.168.2.0        10.0.0.2        0          100         IGP  

 

  Routes total: 2

 

[AR2810-B]

 

五、        deny+permit route-policy

#

route-policy t3 deny node 10

if-match acl 3000

apply local-preference 1300             

route-policy t3 permit node 20

 

对于route-policydeny规则来说,凡是和ACLpermit规则匹配的条目都被DENY掉。未匹配的条目则继续向下匹配。

对于上述配置的结果是:192.168.1.0/24node 10 匹配,被DENY 掉。而192.168.2.0/24则和node 20 匹配。上述规则只有192.168.2.0/24可被通告。

 

[AR2810-B]dis bgp routing

 

Flags:  # - valid       ^ - active      I - internal

        D - damped      H - history     S - aggregate suppressed

 

 

    Dest/Mask          Next-Hop        Med        Local-pref Origin Path

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

#^I 192.168.2.0        10.0.0.2        0          100         IGP  

 

  Routes total: 1

 

[AR2810-B]

六、        deny+deny route-policy

#

route-policy t4 deny node 10

if-match acl 3001

apply local-preference 2300

route-policy t4 permit node 20

 

对于route-policyDeny规则来说,凡是和ACL deny规则明确匹配的条目被node 10 Deny,并且向下继续匹配后续的规则。这就产生了双重DENY 变成 permit的效果。

对于上述配置的结果是:192.168.1.0/24 192.168.2.0/24 都和node 20匹配。即都可发布。

[AR2810-B]dis bgp routing

 

Flags:  # - valid       ^ - active      I - internal

        D - damped      H - history     S - aggregate suppressed

 

 

    Dest/Mask          Next-Hop        Med        Local-pref Origin Path

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

#^I 192.168.1.0        10.0.0.2        0          100         IGP  

#^I 192.168.2.0        10.0.0.2        0          100         IGP  

 

  Routes total: 2

 

[AR2810-B]

 

 

对于上述论述总结如下如下:

1route-policy 中的DENY applay配合无任何意义。

2、凡是在ACL 中被DENY过的条目,可以继续向下匹配。

3、在route-policy中被DENY 匹配过的条目则被DENY 不会继续匹配。

4Route-policy用于路由策略时有一个隐含的规则为DENY ALL ,而用于策略路由时则是PERMIT ALL

 

 

个人归纳总结

 

1、也就是说如果route-policy的结点多的时候,route-policy中的deny才会有用,如果就一个结点,完全可以用Acl中的denypermit来控制路由的过滤。比如,想引入123网段但别的都过滤掉,那么ACL中许可1.0.0.02,及3网段别的都DENY S ANY。这样做一条路由策略结点。然后这样写

route-policy A permit  10

if-match acl 2000

apply COST 2300

这样就行了,acl中许可的直接被路由策略许可,不会往下再和别的结点匹配,但ACL中拒绝的DENY S ANY会继续和路由策略中下一条结点匹配,但我们就一个结点,所以路由策略默认最后结点就是拒绝一切,所以就是拒绝了ACL中拒绝的。其实这是一种假像类似于ACL拒绝掉了不想要的路由,其实不是,而是由路由策略默认结点拒绝掉的。

 

2、为什么路由策略只有一个结点的时候,路由策略用deny,无论ACL中是否许可都会被拒绝。也是因为下面的例子

acl 2000

rule permit s 1.0.0.0 0.255.255.255

rule permit s any

 

route-policy A deny  10

if-match acl 2000

apply COST 2300

因为ACL2000中都是许可,而路由策略中是拒绝,当ACL中许可的路由匹配遇到路由策略的拒绝时,直接被拒绝。但下面的例子也是被拒绝,即第三个路由器也无法得到1.0.0.0的路由。想想为什么?

acl 2000

rule deny s 1.0.0.0 0.255.255.255

rule permit s any

 

route-policy A deny  10

if-match acl 2000

apply COST 2300

 

上例按常规来说,路由策略的拒绝遇到ACL中的拒绝时,应该不执行相关APPLY但必须和下一条结点匹配,而本例中只有一个结点10所以直接匹配了路由策略默认结点,于是也被拒绝。

 

 

结合上例怎么能让路由策略还得用DENY1.0.0.0还会通过路由策略的过滤,就得再加一条路由策略结点,比如下例

 

acl 2000

rule deny s 1.0.0.0 0.255.255.255

rule permit s any

 

route-policy A deny  10

if-match acl 2000

apply COST 2300

route-policy A permit  20

也就是说在多条路由策略结点的环境中,路由策略的deny可以使用 比如说明确想过滤掉123网络的路由,在多条路由策略结点的环境中只能用路由策略的DENY,像如下设置

 

acl 2000

rule permit s 1.0.0.0 0.255.255.255

rule permit s 2.0.0.0 0.255.255.255

rule permit s 3.0.0.0 0.255.255.255

rule deny s any

 

acl 2001

rule permit s 4.0.0.0 0.255.255.255

rule permit s 5.0.0.0 0.255.255.255

rule deny s any

 

route-policy a deny 10

if-match acl 2000

apply cost 1000(此条其实毫无意义)

route-policy a permit 20

if-match acl 2001

apply cost 2000

route-policy a permit 30

上例的意思是先明确拒绝掉123网段的路由,然后,45网段的路由要通过过滤而且要细节化的是改变其COST,其余的路由都通过过滤但不改变任何属性。换句话说上述的配置目的就是为了在拒绝通过路由过滤的条目少的时候,用路由策略中的deny先明确拒绝,接下来再设置有特殊要求的45网段的路由。最后放行大多数的路由通过过滤。但如果想让通过过滤的路由少而不是拒绝通过过滤的路由少,那就得用路由策略中的permit了。如下例

 

acl 2000

rule permit s 1.0.0.0 0.255.255.255

rule permit s 2.0.0.0 0.255.255.255

rule permit s 3.0.0.0 0.255.255.255

rule deny s any

 

acl 2001

rule permit s 4.0.0.0 0.255.255.255

rule permit s 5.0.0.0 0.255.255.255

rule deny s any

 

route-policy a permit 10

if-match acl 2000

apply cost 1000(此条在此有意义)

route-policy a permit 20

if-match acl 2001

apply cost 2000

最后这里没有第30号结点,默认是deny all

 

所以这个例子说的是在只引入5条路由,而且有改COST1000,有改2000的时候,并且其他路由全通不过路由过滤的情况。

 

综上所术,路由策略里如果就一个结点,不能用deny这个路由策略选项,因为这样一来不会有任何的路由通过过滤,因为路由策略中默认最后结点为deny all.

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21173334/viewspace-588681/,如需转载,请注明出处,否则将追究法律责任。

下一篇: SAMBA
请登录后发表评论 登录
全部评论

注册时间:2009-03-21

  • 博文量
    33
  • 访问量
    36979