路由选择工具——IP-Prefix
一.IP-Prefix介绍
IP前缀列表匹配路由的可控性比ACL高得多,也更为灵活。
IP前缀列表可匹配路由前缀中的网络地址及网络掩码(前缀长度),增强了匹配的精确度。
IP前缀列表除了能够匹配具体的网络掩码长度,还能够匹配掩码长度范围,非常灵活。
一个IP前缀列表可以包含一个或多个表项(语句),在匹配过程中依序进行计算。表项中的索引号(序号)决定了每个表项在整个IP前缀列表中的位置。
不能用于数据包过滤。
二.IP-Prefix原理
每个地址前缀列表可以包含多个 IP-Prefix 条目,每个IP-Prefix条目对应一个索引号(index)。路由将按照索引号从小到大依次检查 IP-Prefix 列表,任意一个 IP-Prefix 匹配成功,将不再检查其余项。若所有IP-Prefix 都匹配失败,路由信息将被过滤。
根据匹配的前缀不同,前缀过滤列表可以进行精确匹配,也可以进行在一定掩码长度范围内匹配。
前缀过滤列表可以进行精确匹配或者在一定掩码长度范围内匹配,可以通过配置头键字 greater-equal 和 less-equal 指定待匹配的前缀掩码长度范围。如果没有配置关键字greater-equal或 less-equal,前缀过滤列表进行精确匹配,即只匹配掩码长度为前缀过滤列表掩码长度的相同P 地址路由:如果只配置了关键字 greater-equal,则待匹配的掩码长度范围为从 greater-equal 指定值到 32 位长度:如果只匹配了关键字 less-equal,则待匹配的掩码长度范围为从指定的掩码到关键字 less-equal 指定值。
三.ip-prefix 特点
当所有前缀过滤列表均未匹配时,缺省情况下,存在最后一条默认匹配模式为 deny。
当引用的前缀过滤列表不存在时,默认匹配模式为 permit。
四.IP前缀列表的配置
创建一个IP前缀列表的配置如下
[Huawei]ip ip-prefix name [ index index-number] { permit | deny } ip-address mask-length [greater-equal greater-equal-value ][less-equal less-equal-value ],
Name参数是本IP前缀列表的名称。
Index关键字及参数指示本表项在本|P前缀列表中的序号( 或索引号)该关键字及参数是可选的。缺省情况下,该序号值按照配置先后顺序依次递增,每次加10,第一个序号值为10.
Permit及deny关键字用于配置本表项的匹配模式。
ip-address mask-length参数用于分别制定IP地址及掩码长度。
[ greater-equal greater-equal-value][less-equal less-equal-value]是可选配置,用于指定掩码长度的范围。
如果在命令中只指定了greater-equal,则前缀范围为[greater-equal-value,32];
如果在命令中只指定了less-equal,则前缀范围为[mask-length,less-equal-value]。
IP前缀列表由列表名称进行标识,每个IP前缀列表可以包含多个表项。下面的配置展示了一个名为abcd它包含两个表项:
[Huawei] ip ip-prefix abcd index 10 deny 1.0.0.0 8
[Huawei] ip ip-prefix abcd index 20 permit 2.0.0.0 8
在IP前缀列表的匹配过程中,设备按索引号升序依次检查各个表项,只要有一个表项满足条件,就不再去匹配后续表项。
以ip ip-prefix abcd index 10 deny 1.0.0.0 8为例,这个表项属于IP前缀列表abcd,它的索引号为10并且匹配模式为拒绝,在该表项中IP前缀为1.0.0.0,掩码长度为8,因此这个表项用于匹配路由1.0.0.0/8只有该路由才会被匹配,并且该路由将会被该表项过滤( deny )。这个命令中没有定义掩码长度范围,如果一条路由无法被一个!P前缀列表中的所有表项匹配,那么这条路由被视为被该前缀列表拒绝通过。也就是说,一个IP前缀列表的末尾,隐含着一条拒绝所有的表项。
五.IP-Prefix 示例
1) ip ip-prefix FlLTER index 10 permit 1.1.1.0 24
该 ip-prefix 为精确匹配,只有 1.1.1.1/24 才能 permit
2)ip ip-prefix FlLTER index 10 permit 1.1.1.0 24 less-equal 32
掩码范围在 24-32 之间的网络 1.1.1.0 才能 permit
3)ip ip-prefix FlLTER index 10 permit 1.1.1.0 24 greater-equal 26
掩码范围在 26-32 之间的网络 1.1.10 才能 permit
4)ip ip-prefix FlLTER index 10 permit 1.1.10 24 greater-equal 26 less-equal 32
掩码范围在 26-32 之间的网络 1.1.1.0 才能 permit
5)ip ip-prefix FlLTER index 10 permit 0.0.0.0 0 greater-equal 8 less-equal 32
所有掩码长度在 8到 32 的路由都被 permit
6)匹配以下路由(用最精确最简洁的方式)
192.168.4.0/24
192.168.5.0/24
192.168.6.0/24
192.168.7.0/24
ip ip-prefix abcd permit 192.168.4.0 22 greater-equal 24 less-equal 24
上面这条命令的意思是,允许那些网络地址的前22bit与192.168.4.0的前22bit相同,并且网络掩码长度为24的路由。注意此处"greater-equal 24less-equal24"要求网络掩码长度既大于或等于24又小于或等于24,因此只能是24。
特殊实例
1)匹配默认路由0.0.0.0/0:
ip ip-prefix FlLTER permit 0.0.0.0 0
注意:IP前缀为0.0.0.0时表示通配地址。此时不论掩码指定为多少,都表示掩码长度范围内的所有
路由全被匹配。
2)匹配所有/32主机路由:
ip ip-prefix FlLTER permit 0.0.0.0 0 greater-equal 32
3)匹配任意路由(any):
ip ip-prefix FlLTER permit 0.0.0.0 0 less-equal 32
六.IPv6-Prefix
IPv6-Prefix根据配置的规则对 IPv6 报文进行分类,其实现原理和IP-Prefix基本相同。
IPv6 地址前缀列表用于过滤 IPv6 地址。同一个地址前缀列表可包含多个表项,每个表项指定一个地址前缀范围。此时,各表项之间是“或”的关系,即只要通过其中一个表项就认为已通过该地址前缀列表的过滤,所有表项都没有通过则意味着没有通过该地址前缀列表的过滤。
默认所有未匹配的路由将被拒绝通过过滤列表。如果所有表项都配置成 deny 模式则任何路由都不能通过该过滤列表。因此,需要在多条 deny 模式的表项后定义一条 permit ::0 less-equal 128 的表项,以允许其它所有 IPv6 路由信息通过。
七.IPv6-Prefix示例
允许掩码长度在 32 位到 64 位之间的地址通过。
[Huaweil ip ipv6-prefix abc permit . 0 greater-equal 32 less-equal 64
拒绝前缀为 3FFE:D00::/32,且前缀长度大于 32 位的地址通过,允许其他的 IPv6 路由通过。
[Huaweil ip ipv6-prefix abc deny 3FFE:D00:: 32 less-equal 128[Huaweil ip ipv6-prefix abc permit :: 0 less equal 128
配置名为 p3 的地址前缀列表,拒绝::1~::FFFF:FFFF 范围内的所有路由通过,允许其他路由通过。
[Huaweil ip ipv6-prefix p3 index 10 deny :: 96 match-network[Huawei] ip ipv6 prefix p3 index 20 permit :: 0 less-equal 128