到目前为止我们学习了路由与交换基础,路由协议有静态、RIP、OSPF、IS-IS等,但是根据实际组网需求,往往需要实施一些路由策略对路由信息进行过滤、属性设置等操作,通过对路由的控制,可以影响数据流量转发。
因此我们开始学习一些针对路由进行过滤修改的工具,以便更好地实现组网需求。
一、路由控制
路由控制可以通过路由策略(Route-Policy)实现,路由策略应用灵活而广泛,有以下几种常见方式:
-
控制路由的发布:通过路由策略对发布的路由进行过滤,只发布满足条件的路由。 -
控制路由的接收:通过路由策略对接收的路由进行过滤,只接收满足条件的路由。 -
控制路由的引入:通过路由策略控制从其他路由协议引入的路由条目,只有满足条件的路由才会被引入。
路由策略可以对路由的产生、发布和选择进行控制,进而影响数据包的转发路径。
简单说就是通过路由匹配工具匹配到对应的路由或者前缀,然后通过路由策略工具过滤、修改路由的属性(tag、下一跳等等)。
二、路由匹配工具
路由匹配工具主要用于识别和“抓取”特定的路由信息,可以根据预设的条件匹配路由,从而对路由信息进行过滤或选择。
2.1 ACL访问控制列表
ACL我们前面其实已经学习过了,那时候也大致讲了一些作用和使用场景,ACL一般结合其它工具实现具体需求。
访问控制列表(Access Control List,ACL)是一个匹配工具,能够对报文及路由进行匹配和区分。
ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作。
组成 | 作用 |
---|---|
ACL编号 | 不同的编号范围代表不同的ACL类别 |
规则编号 | 默认从小到大,默认步长是5 |
动作 | deny/permit执行允许或拒绝动作 |
匹配项 | 根据五元组等信息进行匹配 |
当进行IP地址匹配的时候,后面会跟着32位掩码位,这32位称为通配符。
通配符 (Wildcard) ,通配符是一个32比特长度的数值,用于指示IP地址中哪些比特位需要严格匹配,哪些比特位无需匹配。通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同。
通配符,也是点分十进制格式,换算成二进制后,“0”表示“匹配”,“1”表示“不匹配”。通配符中的1或者0可以不连续。
两个特殊的通配符:
-
当通配符全为0来匹配IP地址时,表示精确匹配某个IP地址; -
当通配符全为1来匹配0.0.0.0地址时,表示匹配了所有IP地址。
基于编号的ACL分类:
分类 | 编号范围 | 规则定义描述 |
---|---|---|
基本ACL | 2000~2999 | 仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则。 |
高级ACL | 3000~3999 | 可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。 |
二层ACL | 4000~4999 | 使用报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址、二层协议类型等。 |
用户自定义ACL | 5000~5999 | 使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则。 |
用户ACL | 6000~6999 | 既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。 |
最常用的是基本ACL和高级ACL,基本ACL匹配全部流量,高级ACL匹配源目信息。
ACL匹配机制:
-
顺序匹配 -
一旦命中立即停止 -
默认最后有一条拒绝所有的匹配规则
ACL技术总是与其他技术结合在一起使用的,因此,所结合的技术不同,“允许 (permit)”及“拒绝 (deny)”的实际作用也会不同。例如,当ACL技术与路由过滤技术结合使用时,permit就是“匹配该条路由条目”的意思,deny就是“不匹配该条路由条目”的意思。
2.2 IP前缀列表(IP-Prefix List)
ACL只能匹配路由的前缀,无法匹配路由的网络掩码,也就是只能匹配网络地址,而不能对掩码位进行匹配,因此有了另外一个工具。
IP前缀列表(IP-Prefix List) 是将路由条目的网络地址、掩码长度作为匹配条件的过滤器,可在各路由协议发布和接收路由时使用。不同于ACL,IP-Prefix List能够同时匹配IP地址前缀长度以及掩码长度,增强了匹配的精确度。
组成部分:
-
ip-prefix-name:地址前缀列表名称 -
序号:本匹配项在地址前缀列表中的序号,匹配时根据序号从小到大进行顺序匹配 -
动作:permit/deny,地址前缀列表的匹配模式为允许/拒绝,表示匹配/不匹配 -
IP网段与掩码:匹配路由的网络地址,以及限定网络地址的前多少位需严格匹配 -
掩码范围:匹配路由前缀长度,掩码长度的匹配范围 mask-length<=greater-equal-value<=less-equal-value<=32
IP-Prefix的匹配机制:
-
按照节点顺序匹配 -
末尾默认拒绝所有
配置示例:
# 多节点匹配,相同前缀列表aa下面有10和20节点,隐含末尾deny所有
ip ip-prefix aa index 10 deny 10.1.1.0 24
ip ip-prefix aa index 20 permit 10.1.1.1 32
# 单节点匹配,前缀列表bb,在10.1.1.0 24 中进行匹配,掩码大于等于26小于32才匹配,隐含末尾拒绝所有
ip ip-prefix bb index 10 permit 10.1.1.0 24 greater-equal 26 less-equal 32
# 配置前缀列表
[Huawei] ip ip-prefix ip-prefix-name [ index index-number ] { permit | deny } ipv4-address mask-length [ match-network ] [ greater-equal greater-equal-value ] [ less-equal less-equal-value ]
# 配置项说明
ip-prefix-name:指定地址前缀列表的名称。
index index-number:指定本匹配项在地址前缀列表中的序号。
permit:指定地址前缀列表的匹配模式为允许。
deny:指定地址前缀列表的匹配模式为拒绝。
ipv4-address mask-length:指定IP地址和指定掩码长度。
greater-equal greater-equal-value:指定掩码长度匹配范围的下限。
less-equal less-equal-value:指定掩码长度匹配范围的上限。
前缀列表就是在一个网段范围内精确匹配,最低掩码多少位,最大掩码多少位的方式进行匹配。
本文由 mdnice 多平台发布