在复杂的数据通信网络中,根据实际组网需求,往往需要实施一些路由策略对路由信息进行过滤、属性设置等操作,通过对路由的控制,可以影响数据流量转发。
⦁ 路由策略并非单一的技术或者协议,而是一个技术专题或方法论,里面包含了多种工具及方法。
⦁ 主要介绍网络中常用的路由选择工具以及路由策略的原理与配置。
⦁ ACL的组成:
⦁ ACL编号:在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同,这个后面具体讲。
⦁ 规则:前面提到了,一个ACL通常由若干条“permit/deny”语句组成,每条语句就是该ACL的一条规则。
⦁ 规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识ACL规则。可以自定义,也可以系统自动分配。ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。
⦁ 动作:每条规则中的permit或deny,就是与这条规则相对应的处理动作。permit指“允许”,deny指“拒绝”,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同。
⦁ 比如:ACL如果与流量过滤技术结合使用(即流量过滤中调用ACL),permit就是“允许通行”的意思,deny就是“拒绝通行”的意思。
⦁ 匹配项:ACL定义了极其丰富的匹配项。例子中体现的源地址,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。
⦁ 当进行IP地址匹配的时候,后面会跟着32位掩码位,这32位称为通配符。
⦁ 通配符,也是点分十进制格式,换算成二进制后,“0”表示“匹配”,“1”表示“不匹配”。通配符中的1或者0可以不连续。
⦁ 具体看下这2条规则:
⦁ rule 5: 拒绝源IP地址为10.1.1.1报文通过——因为通配符为全0,所以每一位都要严格匹配,因此匹配的是主机IP地址10.1.1.1;
⦁ rule 15:允许源IP地址为10.1.1.0/24网段地址的报文通过——因为通配符:0.0.0.11111111,后8位为1,表示不关心,因此10.1.1.xxxxxxxx 的后8位可以为任意值,所以匹配的是10.1.1.0/24网段。
⦁ 例子:如果要精确匹配192.168.1.1/24这个IP地址对应的网段地址,通配符是多少?
⦁ 可以得出:网络位需要严格匹配,主机位无所谓,因此通配符为“0.0.0.255”。
⦁ 两个特殊的通配符:
⦁ 当通配符全为0来匹配IP地址时,表示精确匹配某个IP地址;
⦁ 当通配符全为1来匹配0.0.0.0地址时,表示匹配了所有IP地址。
对于使用ACL进行路由匹配的场景,用户只能使用基本ACL
⦁ ACL的匹配机制概括来说就是:
⦁ 配置ACL的设备接收报文后,会将该报文与ACL中的规则逐条进行匹配,如果不能匹配上,就会继续尝试去匹配下一条规则。
⦁ 一旦匹配上,则设备会对该报文执行这条规则中定义的处理动作,并且不再继续尝试与后续规则匹配。
⦁ 匹配流程:首先系统会查找设备上是否配置了ACL。
⦁ 如果ACL不存在,则返回ACL匹配结果为:不匹配。
⦁ 如果ACL存在,则查找设备是否配置了ACL规则。
⦁ 如果规则不存在,则返回ACL匹配结果为:不匹配。
⦁ 如果规则存在,则系统会从ACL中编号最小的规则开始查找。
⦁ 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。
⦁ 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
⦁ 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。
⦁ 从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。
⦁ 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。
⦁ 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。以上三种情况,都叫做“不匹配”。
匹配原则:一旦命中即停止匹配。
⦁ 一条ACL可以由多条“deny或permit”语句组成,每一条语句描述一条规则,这些规则可能存在包含关系,也可能有重复或矛盾的地方,因此ACL的匹配顺序是十分重要的。
⦁ 华为设备支持两种匹配顺序:自动排序(auto模式)和配置顺序(config模式)。缺省的ACL匹配顺序是config模式。
⦁ 自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。——这个比较复杂
⦁ 配置顺序,系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。——这个就是前面提到的匹配顺序。
⦁ 如果后面又添加了一条规则,则这条规则会被加入到相应的位置,报文仍然会按照从小到大的顺序进行匹配。
注意:ACL技术总是与其他技术结合在一起使用的,因此,所结合的技术不同,“允许 (permit)”及“拒绝 (deny)”的实际作用也会不同。例如,当ACL技术与路由过滤技术结合使用时,permit就是“匹配该条路由条目”的意思,deny就是“不匹配该条路由条目”的意思。
ACL基础命令
⦁ 创建基本ACL
⦁ [Huawei] acl [ number ] acl-number [ match-order config ]
⦁ acl-number:指定访问控制列表的编号。
⦁ match-order config:指定ACL规则的匹配顺序,config表示配置顺序。
⦁ [Huawei] acl name acl-name { basic | acl-number } [ match-order config ]
⦁ acl-name:指定创建的ACL的名称。
⦁ basic:指定ACL的类型为基本ACL。
⦁ 配置基本ACL规则
⦁ [Huawei-acl-basic-2000] rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | time-range time-name ]
⦁ rule-id:指定ACL的规则ID。
⦁ deny:指定拒绝符合条件的报文。
⦁ permit:指定允许符合条件的报文。
⦁ source { source-address source-wildcard | any }:指定ACL规则匹配报文的源地址信息。如果不配置,表示报文的任何源地址都匹配。其中:
⦁ source-address:指定报文的源地址。
⦁ source-wildcard:指定源地址通配符。
⦁ any:表示报文的任意源地址。相当于source-address为0.0.0.0或者source-wildcard为255.255.255.255。
⦁ time-range time-name:指定ACL规则生效的时间段。其中,time-name表示ACL规则生效时间段名称。如果不指定时间段,表示任何时间都生效。