一.前缀列表其实是访问列表的一个升级版本,主要是为了解决访问控制列表的子网难以准确的匹配,造成的难以准确地定位要控制的数据包。和其修改起来的非常的麻烦。但是 prefix-list 一般不用于对数据流的过滤,而用于对其他高级列表和 bgp 的支持。
 
二.匹配原则:(其本质上和 acl 的是否匹配原则的相似)
1.     从序列号较小的开始匹配到序列号比较大的。如果匹配则进行下一步的处理,
2.     若不匹配这丢弃。因此最精确的条件应该放到前面。
3.     因为 prefix-list 也有一条默认的 deny any ,所以若没有符合条件的 prefix-list 语句,则直接丢弃。
4.     其网段的匹配有点特殊,因为下面会加以解释所以在这里就不做解释。
 
三.前缀列表的配置
Route config #ip prefix-list{list-name|list-number}[seq seq-value]{deny|permit}network/length[eg ge-value][le le-value]
1.list-name|list-number
前缀列表的名字或者前缀列表的表号
2. seq seq-value (可选)
前缀列表的序列号,若不加序列号则默认序列号为 5 倍数,而且序列号会以 5 的倍数递增,即第一个为 5 接下来以 5 的倍数递增。
3. deny|permit
允许或者拒绝,默认情况下有一 deny any
4. network/length [eg ge-value] (可选), [le le-value] (可选)
15.5.0 .0/A ge B le C
(make sure:len < ge-value <= le-value)
            A      B           C
记得清路由表 clear ip route
例子 1
如果 A/B/C
15.5.0 .0/16 ge 20 le 30
表示 15.5.*.*( 16 位相同
而且满足路由掩码长度是大于等于 /20 ,小于等于 /30 的所有路由
 
例子 2
如果只有 A/B ,没有 C
15.5.0 .0/16 ge 20 (le 32) 默认的
表示: 15.5.*.* 16 位相同 , 而且满足路由掩码长度是大于等于 /20, 小于等于 /32 的所有路由
 
例子 3
如果只有 A/C
15.5.0 .0/16 (ge 16) le 30
表示: 15.5.*.* 16 位相同,而且满足路由掩码长度大于等于 16 ,小于等于 30 的所有路由
 
例子 4
如果只有 A
15.5.0 .0/16 (ge 16)(le 16)
表示: 15.5.*.* 相同,满足路由掩码长度是 16 位的路由
 
例子 5
0.0.0 .0/0 le 32=any
 
例子 6
0.0.0 .0/0 = 默认路由 0.0.0.0
 
 
四.前缀列表的修改
 1. 要删除整个前缀列表,可用命令 no ip prefix-list list-name
2. 若要删除相应条目的前缀列表则可用 no ip prefix-list list-name seq seq-value
3.no ip prefix-list sequence-number (此条命令书本上说可以用来关闭自动编号功能,但是本人试过并不能达到这个目的)
4, Clear ip prefix-list
重置前缀列表命中的次数。
五.前缀列表的查看
1.show ip prefix-list[detail|summary]
显示所有的前缀了表,指定关键字 detail 可以输出完整的 prefix-list 信息。
2.show ip prefix-list prefix list-name
只显示相应名称的前缀列表。
3.show ip prefix-list prefix-list-name [seq number]
显示相应名称的相应序列号的前缀列表。
     show ip prefix-list prefix-list-name [network/length]
显示前缀列表中完全符合指定网络和长度或更具体的所有条目
6.show ip prefix-list prefix-list-name [network/length] first-match 显示前缀列表中完全符合指定网络和长度的路由条目。