Prefix-list路由前缀列表

其实说白话讲,和ACL 的做用是一样的,就是能够更加精准的,更加方便的匹配路由条目

它同样可以和distribute-list  以及route-map ,做路由重分发策略时使用,

角色也是相同的,和distribute-list相结合使用时,prefix占有决定权

而和route-map结合使用时,由route-map决定是生是死,

再有就是prefix-list 相对于acl而言,只有当出现很多很多条路由时,才会显得那么出众,如果一两条而言,完全没有必要的。

从这一点看出来,route-map在不管是路由策略,还是策略路由中,都占有很重要的一席之地

命令解释

(conifg)#ip prefix-list xx permit\deny  x.x.x.x/x  ge  x  le x

           不支持数字编号,只可以命名,默认以5递增

x.x.x.x/x 的意思就是要求去匹配的前缀 以及相同的掩码位。什么意思?

比如 192.168.0.0 /24

        192.168.1.0 /24

这两个条目有哪些前缀部份是肯定相同的?

192.168部份相同,不相同的我都用0来代替。

那么我就可以这样写

192.168.0.0/16 ge 24 le 24

抓取路由前缀为192.168.0.0的条目,/16的意思是前面16位必须相同,

Ge/le 标记为掩码位的长度,GE是≥,LE是≤,此时我写的是大于等于24,且小于等于24,其意思就是我只匹配为/24长度掩码的条目。

这条命令的意思就是

我要匹配带有192.168.0.0前16位一模一样的条目,并且掩码为24位的。

几种常用的prefix-list命令,适用于抓取不同类型的路由条目前缀

#ip prefix-list wfy permit 192.168.0.0/24 ge 24

// 匹配某一条特定的路由条目 //掩码大于等于24位

#ip prefix-list wfy permit 0.0.0.0/0

//匹配默认路由条目 全0

#ip prefix-list wfy permit 0.0.0.0/0 ge 32

// 匹配所有主机条目,因为主机条目都是255.255.255.255,掩码大于32位

#ip prefix-list wfy permit 0.0.0.0/0 le 32

// 匹配所有条目,因为条件是小于等于32,这是所有路由条目都能满足的

Ok

来看个实例

 

Prefix-list路由前缀列表_第1张图片

 如图中所示,

R1—R2运行eigrp

R2—R3运行ospf

由R2负责将两端的协议进行重分发

但是要应用路由策略

要求1 ,在R2上拒收来自于/24网段的条目,使用+prefix-list+distribute

ACL可以实现吗?

Access-list 1 per 192.168.0.0 ????完了,没有了?    //至此1条

那这样儿的话,

你说,是192.168.0.0---192.168.6.0以 /16的形式抓取的,还是以/24的形式抓取的?

如果是/24的类型抓取,请问,我是不是只抓取了192.168.0.1这一个地址?

如果是/16的类型抓取,请问,我是不是把0.0-6.0的所有网段都抓取了?

当然也不是不能分着写,也可以针对于精确的掩码输入,但是不要忘了,如果路由条目很多呢?几百条,你也要一条一条的写吗?我们是干什么的?能省事儿,绝对不费事儿,干完就走......

所以,这个时候,一个针对于路由前缀的列表,出现了,

对于抓取路由条目方面,它要强ACL几条街。

我们来具体的看一下它的一个命令格式,来分析一下为什么

(实验一会儿再说)

(config)# ip   prefix-list   xx    permit/deny    x.x.x.x/x    ge x    le x

                     名称   抓取/拒绝       具体的网段和掩码   

最后ge 大于等于   le 小于等于

回到实例中

要求1 ,在EIGRP重分布到ospf时,只保留4.0/5.0/6.0三个条目,

思路,先要将0.0 1.0 2.0 3.0 这三个网段进行汇总,此时用到的就是cidr

4个子网,那就是2的2次方,也就是上两位,原24 变成了22

那么在prefix-list中,后面还有一个选项,就是大于等于, 和小于等于,

我们该用哪个呢~

由于其它网段都是/24的,为了不扩大范围而影响其它网段,那么我们就限制在24喽~

具体配置

R2(config)#ip prefix-list 22 permit 192.168.0.0/22 ge 24 le 24

   //名字为22 网段为/22 掩码控制在24(必须=24)

 (192.168.0.0/24 192.168.1.0/24 192.168.2.0/24 192.168.3.0/24)这4个地址如果汇总成/22的,是一个超网,如果有/25的条目我不管,当然这里可以写成le 32,有可能会更好理解一些.

R2(config)#route-map 22 deny 10     //route-map定义确认还是拒绝条目

R2(config-route-map)#match ip add prefix-list 22    //关联prefix前缀列表

R2(config-route-map)#exit

R2(config)#route-map 22 permit 20     //允许其它所有

R2(config-router)#redistribute eigrp 1 subnets route-map 22   //重分布调用route-map

OK ,到R3上看一下具体的条目变化

  

Prefix-list路由前缀列表_第2张图片

 可以看到,只有4.0/5.0/6.0这三个条目了,其它的全部干掉了

 

Prefix-list路由前缀列表_第3张图片

 这些条目在R2上可都是有的,是在分发的过程中被干掉的。

 

Prefix-list路由前缀列表_第4张图片

 要求2 在R3 上配置分发列表,不要4.0、5.0只保留6.0条目,使用prefix-list来实现

要求一条命令抓取条目

 分析,4.0 5.0 两个条目,可以看做是两个子网, 2的1次方=2,那么就等于是借了1位,

由原来的/24 变成了 /23 也就是192.168.4.0 /23,包含了这两个子网,那么配置如下

R3(config)#ip prefix-list r1 deny 192.168.4.0/23 le 24

    //义拒绝条目 /23超网,但是要求 只能小于等于/24的条目

R3(config)#ip prefix-list r1 per 0.0.0.0/0 le 32   //允许其它小于等于/32的条目

R3(config)#router ospf 1

R3(config-router)#distribute-list prefix r1 in    //distribute,挂接prefix-list

再次提醒,prefix-list 和acl,这两者与distribute-list的组合使用效果是一样的,起到决策的都distribute-list, acl 和prefix-list,只有当这两个技术遇到route-map 之后才变成小弟,因为确实没有人家牛Route-map永远占据主导地位不可撼动

 

OK ,再反来,

 要求3

Ospf进eigrp 后,只保留 172.16.1.0/24、2.0、3.0、6.0 但   4.0和5.0不

 

分析,

0.0/1.0/2.0/3.0/22为一组,

继续走,

C       172.16.4.0/25 is directly connected, Loopback4

C       172.16.5.0/26 is directly connected, Loopback5

C       172.16.6.0/24 is directly connected, Loopback6

 我擦嘞,什么情况,这两个掩码长度不一样啊~

不一样又能怎么样呢?干就完了,

分析

 4.0/25   5.0/26

如果写成这样行不行 

Ip prefix-list r3 permit 172.16.4.0/24 ge 25

不行,为什么?

因为条件无法满足,172.16.4.0/24里面无法包含 172.16.5.0 明白?

那么就只能这样儿了,

 Ip prefix-list r3 permit 172.16.4.0/23 ge 24

抓取/23的掩码,然后别外条件就是大于等于/24,这样其它网段就不受影响了,

只有/26的那条 5.0会受影响,6.0是/24的,不会受到影响

配置如下

R2(config)#ip prefix-list r2 permit 172.16.4.0/23 ge 24 le 32

 //其实最后的LE 32 写不写都无所谓的,不过这是一个好习惯 ,可以规定范围

R2(config)#route-map r2 deny 10

R2(config-route-map)#match ip address prefix-list r2

R2(config-route-map)#exit

R2(config)#route-map

R2(config)#route-map r2 per 20

R2(config-router)#$e ospf 1 metric 10000 100 255 1 1500 route-map r2   

   //重分布调用route-map

看到了吧

Prefix-list路由前缀列表_第5张图片

其实并不难,只是你如何去计算更为准确的子网cidr地址,以及它的范围

 最后再提问一下,

像上面最后一个要求 ,可以有几种实现的方法?

1 acl+distribute-list

2 acl+route-map

3 prefix-list+distribute-list

4 prefix-list+route-map

而且有时也完全没有必须要进行CIDR,只要你匹配前面一样的,知道多少位就可以了,最主要的是在/X后面的这个/上,以及合理使用GE 和LE

你可能感兴趣的:(Networking,网络协议)