下面是一条标准的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/excludesequence numbers in NVGEN
R1(config)#ip prefix-list 100 ?
deny Specify packets toreject
description Prefix-listspecific descriptin
permit Specify packets toforward
seq sequence number of anentry
基本的格式上和ACL还是差不多的。
2、关键的对 於128.0.0.0/2的这个/2代表了什麼含义?
128.0.0.0 换成2进制数为10 00000000000000 0000000000000000
/2代表只对前面的2位必须match,即,前2位是不变的,在不带ge 16 le 24的情况下,
prefix-list裏的128.0.0.0/2代表的是一个范围,是从128.0.0.0/7到191.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 00000000000000 0000000000000000
在ACL裏,permit128.0.0.0/2,那就没意义了,要使用128.0.0.0,最小的mask位数为7位(2的7次是128)
4、其实ACL也有方法定义一个范围,以实现类似prefix-list的功能。
access-list 10 permit 199.172.0.00.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 NATrules
to specify which portions of the packet's IP address must match theIP 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个部分组成,一个是参考的IP,一个是匹配的 mask,
比如你要想匹配住2.x.x.x,
那我们只需要写1.1.1.0/6 ge 7 le 32这样的话,就是匹配了,
参考IP 1.1.1.0中的前6个2, 即是: 00000001中的000000xx.x.x即可以是00000000,00000001,00000002,00000003开头的IP路由。
再来就是首码范围,这次的首码范围也变大了,是大於7。很多路由都会被匹配,如2.2.2.2/8 这个路由也会PASS了。
在进行路由过滤和位址限制方面,Prefix-list占用CPU的资源比采用access-list要少很多,
它提供更快的访问列表装入速度,目前IOS版本11.1CC(17),11.3(3)和12.0都提供该项特性。
Prefix-list保存了access-list的多项重要特性:
1、Permit和Deny;
2、最先匹配法则;
3、基於Prefix长度的过滤(精确匹配或range匹配)
然而,与Route-map搭配使用的Prefix-list不支援包过滤。
Sequence Number 用於内部正确标识“真正”的match(以最小的Sequence Num为准)。
解释如下:
1、Prefix-list可以采用增量方式从新定义,也就是说,它裏面的条目可以单独增加或删除,而无需像access-list一样,一删就得将整个access-list删掉重写。
2、To_DCC_Routes 是这个prefix-list增量表的名字。
3、Seq 10用於内部正确标识“真正”的match(以最小的Sequence Num为准)。
4、Match的工作原理与Access-list十分类似。
空的Prefix-list允许所有的首码;
当Prefix-list中的任何一条都不满足的话,就认为隐含拒绝;
当Prefix-list中的多项条目均满足时,以最小的SequenceNum的那条作为匹配。
这裏有一个例子,如果有以下这样的Prefix-list:
ip prefix-list abc deny 10.0.0.0/8 le 32
ip prefix-list abc permit 0.0.0.0/0 le 32
则10.1.0.0/16满足上述两条,但该Prefix会被拒绝,因为第一条才是真正的匹配。
ACL , prefix , route-map共同特点:
1>
一个空的/不存在 的acl& prefix预设是permit all ,
一个不存在的 route-map 预设是denyall
一个空的route-map 是 deny 还是 permit就应该看 route-map 定义是 permit 序号,还是 deny 序号,因为空的 route-map 就是没有调用ACL,也可以认为调用了不存在的空 ACL,match 所有,所以是允许所有还是阻止所有就应该看 配置route-map是permit 还是deny 。
2> 一个acl如果配置一条以上permit或deny语句,最后一笔为隐藏的deny all(必须要至少写一条语句最后的拒绝所有才会生效)
3> route-map 预设deny all(即使为空)????是吗??
-----------------------------------------------------------------------
以下为各种例子,以如下的网路架构为网路环境:
R1 (s1/0,192.168.1.1)===============(s1/0,192.168.1.2) R2
Case Study: ACL
R1#conft
R1(config)#line vty 0 4
R1(config-line)#password cisco
R1(config-line)#login
R1(config-line)#access-class 3 in
R2#telnet 192.168.1.1
Password:
R1>没有阻挡可以直接进去
Summary: 空的(未定义的)acl预设允许所有的主机。
-----------------------------------------------------------------------
Case Study: Route-map
R1(config)#router ospf 100
R1(config-router)#default-information originate route-map sense
R1(config-router)#exit
R2#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 2 subnets
O 172.16.1.0 [110/65] via192.168.1.1, 00:32:38, Serial1/0
C 172.16.2.0 is directlyconnected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directlyconnected, Serial1/0
注: 不存在的route-map预设denyall。所以这个case的route-map永远返回不满足要求。
-----------------------------------------------------------------------
R1(config)#router ospf 100
R1(config-router)#default-information originate route-map sense
R1(config-router)#exit
R1(config)#route-map sensepermit 10
R2#sh ip route
Gateway of last resort is 192.168.1.6 to network 0.0.0.0
172.16.0.0/24 is subnetted, 2 subnets
O 172.16.1.0 [110/65] via192.168.1.1, 00:32:38, Serial1/0
C 172.16.2.0 is directlyconnected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directlyconnected, Serial1/0
O*E2 0.0.0.0/0 [110/1] via 192.168.1.6, 00:00:12, Serial1/1
-----------------------------------------------------------------------
R1(config)#router ospf 100
R1(config-router)#default-information originate route-map sense
R1(config-router)#exit
R1(config)#route-map sensepermit 10
R1(config-route-map)#match ipadd 1
R2#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 2 subnets
O 172.16.1.0 [110/65] via192.168.1.1, 00:32:38, Serial1/0
C 172.16.2.0 is directlyconnected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directlyconnected, Serial1/0
-----------------------------------------------------------------------
R1(config)#router ospf 100
R1(config-router)#default-information originate route-map sense
R1(config-router)#exit
R1(config)#route-map sense deny10
R2#sh ip route
Gateway of last resort is 192.168.1.6 to network 0.0.0.0
172.16.0.0/24 is subnetted, 2 subnets
O 172.16.1.0 [110/65] via192.168.1.1, 00:32:38, Serial1/0
C 172.16.2.0 is directlyconnected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directlyconnected, Serial1/0
O*E2 0.0.0.0/0 [110/1] via 192.168.1.6, 00:00:12, Serial1/1
-----------------------------------------------------------------------
R1(config)#router ospf 100
R1(config-router)#default-information originate route-map sense
R1(config-router)#exit
R1(config)#route-map sense deny10
R1(config-route-map)#match ipadd 1
R2#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 2 subnets
O 172.16.1.0 [110/65] via192.168.1.1, 00:32:38, Serial1/0
C 172.16.2.0 is directlyconnected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directlyconnected, Serial1/0
-----------------------------------------------------------------------
Case Study:Prefix-list
R1(config)#int lo0
R1(config-if)#ip add 172.16.33.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#ip ospf network point-to-point
R1(config-if)#exit
R1(config)#router ospf 100
R1(config-router)#redistribute connected subnets
R1(config-router)#distribute-list prefix sense out connected
R1(config)#
R2#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 4 subnets
O 172.16.44.0 [33/65] via192.168.1.1, 00:07:54, Serial1/0
O E2 172.16.33.0 [55/20] via 192.168.1.1, 00:00:01, Serial1/0
O IA 172.16.1.0 [44/65] via 192.168.1.1, 00:07:54, Serial1/0
C 172.16.2.0 is directlyconnected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directlyconnected, Serial1/0
R1(config)#ip prefix-list sense seq 5 deny 172.16.33.0/24
rtb#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 3 subnets
O 172.16.44.0 [33/65] via192.168.1.1, 00:09:15, Serial1/0
O IA 172.16.1.0 [44/65] via 192.168.1.1, 00:09:15, Serial1/0
C 172.16.2.0 is directlyconnected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directlyconnected, Serial1/0
Summary:空的prefix-list预设允许所有的路由。
-----------------------------------------------------------------------
Case Study: Integrate Route-map andACL
R1(config)#router ospf 100
R1(config-router)#default-information originate route-map sense
R1(config-router)#exit
R1(config)#route-map sense deny5
R1(config-route-map)#match ipaddress 33
R1(config-route-map)#
R2#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 2 subnets
O 172.16.1.0 [110/65] via192.168.1.1, 00:32:38, Serial1/0
C 172.16.2.0 is directlyconnected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directlyconnected, Serial1/0
Summary:至少定义一条permit或deny语句才能使用acl或route-map的隐含deny功能。空的acl预设允所有的路由。