前缀列表ip prefix-list

前缀列表ip prefix-list

转载 2017年09月20日 09:34:19

前缀列表书写规范:


ip prefix-list 1 permit 192.168.16.0/[mask] ge [value] le [value]

Len(mask)<ge-value<=le-value

前缀列表会先根据掩长度码范围进行匹配(也就是说,不看IP,先看掩码)

ge[value] 表示 大于等于 [value]
le[value] 表示 小于等于 [value]

再按期望的mask值进行匹配(使IP与MASK进行比较匹配)
len=mask(期望的mask值)

mask是如何进行匹配的?

192.168.00010000.0

192.168.00010010.0

255.255.11111101.0

mask = 22
我们只需把两个ip不同的位 置0,所得的结果就是我们所期待的前缀掩码
比如我们希望匹配
192.168.16.0 /24和192.168.18.0/24两条路由
那么我们的前缀列表应写为
ip prefix-list 1 permit 192.168.16.0/22 ge 24 le 24 
以上命令的意思表示先把/24掩码的路由筛选出来,然后再按照mask值/22进行匹配

如果范围空着不写的话会有一些缺省值:

不写ge和le那么ge=le=mask

只写le不写ge那么ge=mask

只写ge不写le那么le=32

例:/24 le 32 表示掩码在24-32之间
      /24 ge 26 表示掩码在26到32之间
      /24 ge 26 le 30 表示掩码在 26到30之间
      /24  表示掩码等于24的路由去匹配/24的掩码

和ACL比Prefix-list的好处:

access-list 1 permit 192.168.16.0 0.0.2.0

以上ACL可以过滤192.168.16.0和18.0两条路由,但ACL不能准确的描述掩码

比如我们还有一条192.168.16.0/30的路由
那么ACL会把/24和/30的一起过滤掉
而前缀列表只会过滤掉/24的路由

附:在router-map里匹配前缀列表的写法

map# match ip address prefix-list [list num]

比如我们希望匹配

192.168.16.0 /24和192.168.18.0/24

那么我们的前缀列表应写为

ip prefix-list 1 permit 192.168.16.0/22 ge 24 le 24


匹配A类地址,且掩码大于16小于24(A类前缀0~127是0,B类128~191是10,C类是110,D类是1110)

ip pre 1 per 0.0.0.0/1 ge 16 le 24

不同于用于匹配流量的IP访问列表,IP前缀列表主要是用来指定具体的网络可达的。前缀列表用来匹配前缀(网段)和前缀长度(子网掩码)。前缀列表有两个参数很难理解。

下面是普通的前缀列表的参数:
ip prefix-list [name] [permit | deny] [prefix]/[len]
name为任意的名字或者数字,prefix是指定的路由前缀(网段),len是指定的前缀长度(子网掩码)。例子如下:
ip prefix-list LIST permit 1.2.3.0/24
上面的例子中指定匹配网段1.2.3.0,并且指定子网掩码为255.255.255.0,这个列表不匹配1.2.0.0/24,也不匹配1.2.3.4/32

ip prefix-list LIST permit 0.0.0.0/0
上面的例子指定匹配网段0.0.0.0和子网掩码0.0.0.0。这个列表用来匹配默认路由。

通常情况下,在使用前缀列表的时候加上“GE”(大于或等于)和“LE”(小于或等于)时比较容易发生混淆。这是因为当使用“GE”和“LE”时,列表的长度(len)发生了改变。

另外一种前缀列表的参数:

ip prefix-list [name] [permit | deny] [prefix]/[len] ge [min_length] le [max_length]

name为任意的名字或者数字,prefix是将要进行比较的路由前缀(网段),len是指从最左边开始的比特位,min_length为最小的子网掩码的值,max_length为最大的子网掩码的值

使用GE和LE,必须满足下面的条件:


len < GE <= LE
上面的参数很容易混淆,简单的说就是一个匹配前缀或子网的地址的范围。
看下面的例子:

ip prefix-list LIST permit 1.2.3.0/24 le 32

上面的例子表示前缀1.2.3.0前面的24位必须匹配。此外,子网掩码必须小于或等于32位

ip prefix-list LIST permit 0.0.0.0/0 le 32
上面的例子意味着0位需要匹配,此外子网掩码必须小于或等于32位。一位所有的网段的掩码都小于或等于32位,并且一位都不用匹配,所以这句话等于permit any

ip prefix-list LIST permit 10.0.0.0/8 ge 21 le 29

上面的例子说明网段10.0.0.0的前8位必须匹配,此外子网掩码必须在21位和29位之间。


注意


使用前缀列表不能像访问列表那样匹配具体的应用流。
前缀列表也不能用来具体匹配奇数或偶数的前缀,或什么可以被15整除的前缀
在前缀列表中,比特位必须是连续的,并且从左边开始
ip prefix-list fuck permit 0.0.0.0/0 ge 1            表示除了默认路由外的所有路由
ip prefix-list test16 seq 5 permit 0.0.0.0/1 ge 8 le 8                配置A类地址
ip prefix-list test16 seq 10 permit 128.0.0.0/2 ge 16 le 16      配置B类地址
ip prefix-list test16 seq 15 permit 192.0.0.0/3 ge 24 le 24      配置C类地址

猜你喜欢

转载自blog.csdn.net/yq90125/article/details/79471555