1.6-路由的控制②

路由过滤/控制的常用工具:
1、访问控制列表ACL(Access-List):
其开发本意不是用于路由的控制,而是用于数据包的过滤;
在路由过滤中此方法比较繁琐落后,实际应用中并不推荐;
 
2、前缀列表(Prefix-List):
本身就是为控制路由而设计的专业工具,先进的,推荐的;
 
3、Route-Map:
高级综合操作工具,可以实现多种功能,可以应用于路由控制。
 
路由过滤的基本方法:
分布列表(Distribute-List):
1.通过Distribute-List可以调用Access-List实现路由过滤
2.通过Distribute-List可以调用Prefix-List实现路由过滤
 
按路由过滤级别分类
1.接口级别过滤
实现基于接口级别的过滤(只可在DV协议中实现,LS协议因为泛洪无法实现);
2.协议级别的控制
是在路由协议的重分布中实现的重分布时的路由过滤。
 
LAB7:对用户数据包的过滤
721057-20161210100100241-1018094793.png
在R3上,对从本机S1进入路由器的
访问目标网络是13.0.0.0/24的数据包,进行过滤/DENY
 
step1.通过ACL列表,定义需要进行过滤的数据包
r3#Access-list 3 deny 15.1.0.0 0.0.255.255
   Access-list 3 permit 5.0.0.0 0.255.255.255(可省略)
   Access-list 3 permit any
 
step2.
r3#int s1
   ip access-group 3 in
 
LAB8:在DV协议(RIP/EIGRP)中,实现基于接口的路由过滤:
 
8-1:Distribute-list调用ACL,比较落后:
721057-20161210100100460-2064285591.png
step1:通过ACL,定义所需要过滤的路由:
r3#access-list 11 deny 10.0.0.0(这里的deny跟数据包过滤是一样的意思,都是拒绝的意思)
   access-list 11 permit any(这里的permit跟数据包过滤是一样的意思,都是允许的意思)
step2:在DV协议路由进程中,使用distribute-list 调用ACL 11
R3(config)#router eigrp 90
R3(config-router)#distribute-list        11                           out                          serial 1                                                    
                                   IP access list number     in   Filter incoming routing updates
                                                             out  Filter outgoing routing updates
 
clear ip route *
 
8-2:Distribute-list调用前缀列表,比较先进
721057-20161210100100835-1326810765.png
(用RIP举例,也可用于EIGRP)ACL的缺陷,无法定义路由的长度
 
Step1:使用prefix-list定义所需要过滤的路由:(SEQ5为首,预留空间方便编辑)
R3(config)#ip prefix-list R-5 seq 5  deny 20.0.0.0/24
R3(config)#ip prefix-list R-5 seq 10 permit 0.0.0.0/0 le 32
                                              (any)
 
Step2:在EIGRP进程中,使用distribute-list,调用Prefix-list,进行基于接口级别的过滤:
R3(config)#router rip
           distribute-list prefix R-5 in serial 1(调用了整个R-10的访问列表,往下匹配)
 
distribute-list(可以调用访问列表,也可以调用前缀列表!!)
 
out方向的控制:
只在路由出口方向进行控制,影响路由下游方向的路由器,而不影响本路由器.
 
 
In方向的控制:
在路由器的入口方向进行控制,直接影响到本路由器.
 
LAB09:前缀列表的详细描述
prefix-list的语法
 
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
 
LAB10:在路由协议之间的重分布中,实现路由重分布时的基于协议的路由过滤:
在OSPF和RIP之间做双向重分布:
 
R1(config)#router ospf 110
R1(config-router)#redistribute rip subnets
 
R1(config)#router rip
R1(config-router)#redistribute ospf 110 metric 1
 
10-1:通过ACL,实现路由控制:
721057-20161210100101444-1143247015.png
Step1:通过ACL,定义所需要控制的路由:
R1(config)#access-list 5 deny 15.5.16.0
R1(config)#access-list 5 permit any
 
Step2:在OSPF进程中:
R1(config)#router ospf 110
R1(config)#distribute-list                          5                          out rip          (理解成rip out)
         Filter networks in routing updates  IP access list number    in   Filter incoming routing updates
                                                                      out  Filter outgoing routing updates
 
意思是:禁止把rip中的15.5.16.0路由重分布到OSPF里面,也就是说除了R1之外,其它的ospf的路由器都没有15.5.16.0的路由!!!!
 
10-2:通过prefix-list ,实现路由控制:
721057-20161210100101632-102681251.png
Step1:通过Prefix-list,定义所需要控制的路由:
 
R1(config)#ip prefix-list xxx seq 5 deny 12.0.0.0/24
           ip prifix-list xxx seq 10 deny 141.0.0.0/24
           ip prifix-list xxx seq 15 permit 0.0.0.0/0 le 32
 
Step2:
R1(config)#router rip
R1(config-router )#distribute-list prefix xxx out ospf 110
 
调用一个空的,不存在的prefix-list,相当是permit any:
R1(config-router)#distribute-list prefix xxx out ospf 110
0 - O小心字符相同
1 - l
 
prefix-list 命名,都是大小写敏感的:
R1(config-router)#distribute-list prefix XXX out ospf 110
 
 
 
route-map
 
route-map的特征:
 
1.route-map 由一组statements/声明,所组成,
每句声明中,可能包含了Match,set语句.
 
每句statements有个编号,10/20/30...............
路由器就按照statements的编号,按自小到大(自上而下)顺序执行.
 
2.
match commands specify criteria to be matched
一旦匹配/符合特定某些条件(match语句)
 
set commands modify matching routes.
就立刻执行由set所定义的参数/操作,并且离开route-map.(而不再往下执行)
 
3:
the first match found for a route is applied.
once there is a match, leave the route map.
路由器在向下检查匹配条件时,不断地与每个statements中的匹配条件进行比较,
如果不匹配,则向下继续检查下一个statements;
如果匹配,则按照set所定义的参数,进行操作,然后立刻离开route-map
(即使下面还有statements没有进行匹配检查,也不往下检查了)
 
4:route-map 的逻辑关系:
in the same line uses a logical OR(水平方向:或关系)
vertical match uses a logical AND (垂直方向:与关系)
 
 
5:在route-map中:
如果没有match,表示:match any (上面statements剩余的any)
如果没有set,表示: set nothing !!(保留其原始的默认值)
 
LAB11:通过route-map,实现路由协议之间的路由过滤/控制:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Step1:通过前缀列表定义所需控制的路由:(通过ACL也可以,但比较落后)
 
R1(config)#ip prefix-list R-15 permit 15.0.0.0/8
R1(config)#ip prefix-list R-25 permit 25.5.0.0/16
R1(config)#ip prefix-list R-35 permit 35.0.0.0/24
 
注意:这里的permit是表示:"匹配",而不是"允许".
 
Step2:创建用于重分布的路由控制的route-map:
 
R1(config)#route-map RP-SPF permit 10(permit:允许)
R1(config)#match ip address prefix-list R-15 R-25
R1(config-route-map)#set metric 100
R1(config-route-map)#set metric-type type-1
 
R1(config)#route-map RP-SPF deny 20 (deny 不允许重分布)
R1(config-router-map)#match ip address prefix-list R-35 没有Set:Set nothing!)
 
R1(config)#router-map RP-SPF permit 30
 
step3:在重分布的协议进程中,调用route-map RP-SPF:
 
R1(config)#router ospf 110
R1(config-rouiter)#redistribute rip route-map RP-SPF subnets
 
Step 4 :如果没有最后的这句空的route-map,将有什么效果?
R1(config)#route-map RP-SPF permit 30
 
剩余的部分路由,都将被Deny.
 
Step5:在调用时出错:
 
router ospf 110
redistribute rip route-map RP-SP subnets
 
空的route-map,意味着deny any.