前缀列表prefix-list

 不同于用于匹配流量的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为最大的子网掩码的值
使用GELE,必须满足下面的条件:
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类地址
--------------------------------
 
 
下面是一条标准的prefix-list,我们着重对之进行分析:

ip prefix-list 100 permit 128.0.0.0/2 ge 16 le 24
ge=greater or equal   le=less or equal

1、R1(config)#ip prefix-list ?
  WORD             Name of a prefix list
  sequence-number  Include/exclude sequence numbers in NVGEN

R1(config)#ip prefix-list 100 ?
  deny         Specify packets to reject
  description  Prefix-list specific descriptin
  permit       Specify packets to forward
  seq          sequence number of an entry
基本的格式上和ACL还是差不多的。


2、关键的对于128.0.0.0/2的这个/2代表了什么含义?
128.0.0.0 换成2进制数为10 000000  00000000  00000000 00000000
/2代表只对前面的2位必须match,即,前2位是不变的,在不带ge 16 le 24的情况下,prefix-list里的128.0.0.0/2 代表的是一个范围,是从128.0.0.0/7到223.255.255.252/30,而加上ge 16 le 24,的意思就是ip地址mask从 /16到/24

下面是几个例:

prefix-list 100 permit 0.0.0.0/0 代表的是所有路由
prefix-list 100 permit 0.0.0.0/32 代表的是默认路由
prefix-list 100 permit 0.0.0.0/0 ge 32代表的是所有host路由

3、在ACL里,128.0.0.0/2是什么含义?
下面是128.0.0.0的2进表达表示
10 000000  00000000  00000000 00000000
在ACL里,permit 128.0.0.0/2,那就没意义了,要使得128.0.0.0,最小的mask位数为7位(2的7次是128)

4、其实ACL也有方法定义一个范围,以实现类似prefix-list的功能。
access-list 10 permit 199.172.0.0 0.0.3.0,这里这个0.0.3.0,即起了一个定义范围的作用,0表示match,1表示不关心。这样的话,199.172.0.0 这个被定义物里,前16个bit和最后8个bit都是被定死的
,唯独第三段的最后2bit是不关心的,可以变换,所以结果就是:

199.172.0.0
199.172.1.0 
199.172.2.0
199.172.3.0

 per 199.172.1.0 0.0.254.0  奇数路由
 per 199.172.0.0 0.0.254.0  偶数路由

A bit mask used in access rules, IPSec rules, and NAT rules to specify which portions of the packet's IP address must match the IP address in the rule 


例:
1.1.1.1/8 ge 16 le 32  前缀列表的意思是
意义是 /8表示必须从参考的IP中匹配前8个2进位,因此所匹配的路由是1开头实际匹配的是00000001,刚好8位。但是后头定义的是路由前缀的范围,意义是,如果有路由是1.1.1.0/8 那这样的情况是不符合定义的,为什么因为他的前缀 是8,而不是大于16 小于32 的范围。所以它不能通过,那1.1.1.0/9呢?一样也不是范围内的,那1.1.1.0/17呢?这条路由可以pass理由是他的前缀大于了16,小于 32,那如果是2.2.2.0/17呢,这样的情况虽然你的前缀符合了定义,但是你的路由是2.x.x.x的不符合我的参考IP,前8个2进,必须以 00000001,即等于1.x.x.x,然后才有资格看前缀是否符合了,因此总结:前缀列表由2个部分组成,1是参考的IP,以及匹配参考IP位数的掩码,比如刚才你要想匹配住2.x.x.x 那我们只需要
写1.1.1.0/6 ge 7 le 32这样的话,就是匹配了,参考IP1.1.1.0中的前6个2进即,00000001中的000000xx.x.x 即可以是00000000,00000001,00000002,00000003开头的IP路由。再来就是前缀范围,这次的前缀范围也变大了,是大于 7,这样的话。很多路由都会被匹配如2.2.2.2/8 这个路由也会PASS了。

你可能感兴趣的:(职场,休闲,路由过滤,prefix-list,前缀列表)