作用
- 控制路由的传播与生成
-
路由过滤方法
路由过滤主要有以下两种方法
(1)路由引入过滤。
路由协议在引入其它路由协议发现的路由时,只引入了满足条件的路由信息。
(2)路由发布或接收过滤。
路由协议在发布或接收路由信息时,对路由信息进行过滤,只接收或发布满足给定条件的路由信息。
在进行路由过滤时,通常有以下几种过滤方法,如图13-2所示。
图13-2 路由过滤方法
(3)过滤路由协议报文。
路由器间通过交换路由协议报文而学习路由。如果将路由协议报文过滤,则路由器间无法学习路由,也就达到过滤路由的的目的。过滤路由协议报文后,所有的路由信息都被过滤了。
(4)过滤路由协议报文中携带的部分路由信息。
路由协议报文中包含了路由信息,路由信息携带了路由属性(如目的地址、下一跳等)。可以采取适当的过滤器来对其中某些路由信息进行过滤,而允许其他路由信息通过。
(5)对从LSDB计算出的路由信息进行过滤。
链路状态型路由协议(如OSPF协议)首先交换LSA而生成本地LSDB数据库,再通过SPF算法计算出路由,然后把路由加人到路由表中。所以,可以对从 LSDB计算出的路由信息进行过滤。路由过滤工具
可以通过在路由器上使用静默接口来使路由器不发出协议报文,从而达到路由过滤的目的;也可以配置路由协议使用一些过滤器,来对协议报文中的路由信息进行过滤。
常见的过滤器有以下4种。
(1) ACL(访问控制列表)。通过使用ACL,可以指定IP地址和子网范围,用于匹配路由信息的目的网段地址或下一跳地址。
(2)地址前缀列表。地址前缀列表(ip-prefix)的作用类似于 ACL,但更为灵活,且更易于被用户理解。使用地址前缀列表过滤路由信息时,其匹配对象为路由信息的目的地址信息域;另外,用户可以指定gateway选项,指明只接收某些路由器发布的路由信息。
(3)Filter-policy。通过配置Filter-policy,可以制定入口或出口过滤策略,从而对接收和发布的路由进行过滤。在接收路由时,还可以指定只接收来自某个邻居的RIP报文。Filter-policy可以使用地址前缀列表来定义自己的匹配规则。
(4)Routepolicy。Route-policy是一种比较复杂的过滤器,它不仅可以匹配路由信息的某些属性,还可以在条件满足时改变路由信息的属性。Routepolicy可以使用前面ACL、地址前缀列表等过滤器来定义自己的匹配规则。通常,ACL和地址前缀列表仅对路由信息进行匹配,也就是指明哪些路由信息符合过滤的要求;而Filter-policy和Route-policy用来指明对符合过滤条件的路由信息执行过滤动作,并指明是对接收还是发送的路由进行过滤。配置静默接口过滤全部路由
![S(MGSE483)YCUXH1`4{KX3.png
图13-3
静默接口(silent-interface),又称为被动接口( passive interface)。在路由器上配置静默接口是一种简单易用的过滤路由手段。在局域网内,通常主机并不需要接收路由器发出的协议报文;而且为了安全起见,管理员也不希望路由器发送协议报文给不相关的设备或区域。此时,可以通过在路由器上配置静默接口来使路由器不发送协议报文。
如图13-3所示,通过将RTB与ISP间的接口配置为静默接口,使RTB在接口上不发送路由协议报文,也就意味着过滤了全部路由。
在RIP协议中,接口被配置为静默接口后,此接口不会发送路由更新;而在OSPF协议和IS-IS 协议中,配置为静默接口的接口不发送 Hello报文,即不建立邻居关系。
可以在 RIP,OSPF视图下用如下命令配置静默接口。silent-interface { all || interface-type interface-number }
而在IS-IS协议中,可以通过在接口视图下禁止接口发送和接收IS-IS报文来达到相同的效果。其配置命令如下:isis silent
说明:某接口配置为静默接口后,协议仍然把该接口直连网络的路由信息从其他接口宣告出去。地址前缀列表
地址前缀列表是常用的路由过滤工具,其配置简单易用,功能强大。通过使用地址前缀列表,可以很轻易地从大量的路由表项中区别出需要过滤的路由表项,从而配合其他的过滤工具而实施过滤。
地址前缀列表匹配流程
一个地址前缀列表由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个索引号来标识。索引号指明了在地址前缀列表中进行匹配检查的顺序,如图13-4所示。
图13-4
每个表项之间是“或”的关系,在匹配的过程中,路由器按升序依次检查由索引号标识的各个表项,只要有某一表项满足条件,就意味着通过该地址前缀列表的过滤,而不再去匹配其他表项。
每一个表项都指定了相应的匹配模式,包括允许模式(Permit)和拒绝模式(Deny)。当指定为允许模式并且待过滤的IP地址在该表项指定的前缀范围内时,通过该表项的过滤而不需要再进入下一个节点的测试;如待过滤的IP地址不在该表项指定的前缀范围内,则进行下一表项测试。当指定为拒绝模式并且待过滤的IP地址在该表项指定的前缀范围内时,则该IP地址不能通过该表项的过滤,并且不会进行下一个表项的测试;否则,进入下一表项的测试。
从以上规则中可以看出,如果所有表项都是deny模式,则任何路由都不能通过该过滤列表。这种情况下,需要在多条deny模式的表项后定义一条permit 0.0.0.0 0 less-equal 32表项,允许其它所有IPv4路由信息通过配置地址前缀列表
配置地址前缀列表,需要在系统视图下使用如下命令。
ip ip-prefix ip-prefix-name [ index index-number ] { permit / deny || ip-address mask-length [ greater-equal min-mask-length ] [less-equal mar-mask-length ]
其中,各参数含义如下。
(1) ip-prefix-name :地址前缀列表名。
(2) inder-number:标识地址前缀列表中的一条表项。
(3) permit:指定所定义的地址前缀列表表项的匹配模式为允许模式。
(4) deny:指定所定义的地址前缀列表表项的匹配模式为拒绝模式。
(5) ip-address mask-length:指定IP地址前缀和前缀长度。mask-length 的取值范围为0~32
(6) min-mask-length ,max-mask-length:如果IP地址和前缀长度都已匹配,则使用该参数来指定地址前缀范 围。greater-equal的含义为“大于等于”, less-equal的含义为“小于等于”,其取值范围为mask-length <= min-mask-length <= max-mask-length <= 32。如果只指定 min-mask-length时,则前缀长度范围为[min-mask-length,32];如果只指定max-mask-length时,则前缀长度范围为[mask-length, max-mask-length];如果二者都指定,则前缀长度范围为[min-mask-length. max-mask-length]。
表13-1中列出了一些地址前缀列表配置后的匹配结果。
![KUJAL9E9J[WPV151(Y@X6T.png
以下为地址前缀列表配置示例及相应的匹配结果。
(1)当配置如下时:
[Router] ip ip-prefix test permit 10.0.0.0 24 less-equal 32
匹配的结果是所有10.0.0.0/24范围内的路由能够通过过滤,其他路由则不能通过。
(2)当配置如下时:
[Router] ip ip-prefix test index 10 permit10.0.0.0 24[Router] ip ip-prefix test index 20 permit11.0.0.0 16
匹配的结果是只有路由10.0.0.0/24和11.0.0.0/16能够通过过滤,其他路由则都不能通过。
(3)当配置如下时:
[Router] ip ip-prefix test index 10 deny 10.0.0.0 24
[Router] ip ip-prefix test index 20 permit 0.0.0.0 0 less-equal 32
匹配的结果是只有10.0.0.0/24路由不能通过过滤。其他所有路由则能够通过过滤。
(4)当配置如下时:
[Router] ip ip-prefix test index 10 deny 10.0.0.0 30
[Router] ip ip-prefix test index 20 permit 10.0.0.0 24 less-equal 32
匹配的结果是除了10.0.0.0/30外,10.0.0.0/24区间内的其他路由则能够通过过滤。10.0.0.0/24区间外的路由不能通过过滤。配置Filter-policy过滤RIP路由
使用Filter-policy进行路由过滤时,要注意对于不同的路由协议,Filter-policy的过滤原理不同。
对于距离矢量型路由协议,协议内路由过滤可以在以下两个阶段实施。
(1)接收路由信息的时候进行过滤。
(2)发送路由信息的时候进行过滤。
对于RIP协议,因接收到的路由需要放到RIP路由表中,所以接收路由过滤是对进入RIP路由表的路由信息进行过滤;而发送路由过滤是对所发送的所有RIP路由信息进行过滤,如图13-6所示。配置RIP对接收的路由进行过滤
[H3C-rip-1] filter-policy { acl-number | gatewayprefix-list-name | prefix-list prefix-list-name [ gatewayprefix-list-name ] } import [ interface-type interface-number ]
其中,各参数含义如下。
(1) acl-number :用于过滤接收的路由信息的访问控制列表号,取值范围为2000~3999.
(2) ip-prefix ip-prefix-name:指定用于过滤接收路由信息的IP地址前缀列表名称。
(3) gateway ip-prefir-name:基于发布网关过滤路由。
( 4) inter face-type inter face-number:接口类型和接口号。
(5)import:表示对接收路由进行过滤。配置RIP对发送的路由进行过滤
[H3C-rip-1] filter-policy { acl-number l prefix-listprefix-list-name } export [ protoco/ [ process-id ] | interface-type interface-number ]
(1)export:表示对发送的路由进行过滤。
(2) protocol:被过滤路由信息的路由协议,如 bgp, direct , isis , ospf ,rip和 static等。如果指定了protocol参数,则只对从指定路由协议引人的路由信息进行过滤;否则,将对所有要发布的路由信息进行过滤。
(3) process-id:被过滤路由信息的路由协议的进程号。
( 4) inter f ace-type interface-number:接口类型和接口号。
如果指定了interface-type interface-number 参数,则只对从指定接口发布的路由信息进行过滤;否则,将对所有RIP接口发布的路由信息进行过滤。配置 Filter-policy过滤RIP路由示例
在图13-7所示网络中,RTA向RTB发布了路由更新,包含了10.0.0.0/24,10.0.1.0/24和10.0.2.0/24路由信息。在RTB上配置Filter-policy,并使用地址前缀列表,使RTB拒绝接收其中的10.0.1.0/24和10.0.2.0/24路由,但是可以接收其他路由。
RTB 配置如下:[RTB] ip ip-prefix abc index 10 deny 10.0.1.0 24[RTB] ip ip-prefix abc index 20 deny 10.0.2.0 24
[RTB]ip ip-prefix abc index 30 permit0.o.0.0 0 less-equal 32
[RTB] rip 100
[RTB-rip-100] filter-policy ip-prefix abc import
如果用 Filter-policy来过滤发送路由来达到相同的效果,则相应的配置如下:
[RTB] acl number 2000
[RTB-acl-basic-2000] rule deny source 10.0.1.0 0.0.0.255
[RTB-acl-basic-2000]rule deny source 10.0.2.0 0.0.0.255
[RTB-ac1-basic-2000] rule permit
[RTB] rip 100
[RTB-rip-100] filter-policy 2000 export
以上配置中,使用ACL来过滤发送的路由信息,拒绝10.0.1.0/24和 10.0.2.0/24的路由信息,但是其他路由信息能够被RTB发送出去。
配置Filter-policy过滤 OSPF和 IS-IS路由
OSPF 和IS-IS是链路状态型路由协议﹐协议间交换的是LSA而非路由信息﹐所以无法对协议接收和发送的路由信息进行过滤。由于LSDB必须同步,因而也不能过滤LSA,只能对依据LSDB计算出来的路由进行过滤。通过过滤的路由被添加到路由表中,如图13-8所示。
不过,如果路由器是ABR(区域边界路由器),则可以通过在ABR 上配置Type3 LSA来,对进入ABR所在区域或ABR向其他区域发布的 Type3 LSA进行过滤。
说明:虽然链路型状态路由协议无法过滤接收和发送的LSA,但可以对通过路由引入方式产生的路由进行过滤。
在OSPF视图下,配置对OSPF计算出的路由进行过滤,其命令如下:对OSPF通过接收到的LSA计算出来的路由信息进行过滤
[H3C-ospf-1] filter-policy { acl-number [ gatewayprefix-list-name ] | gateway prefix-list-name | prefix-list prefix-list-name [ gateway prefix-list-name ] | route-policy route-policy-name } import
其中,各参数含义如下。
(1) acl-number:用于过滤路由信息目的地址的基本或高级访问控制列表编号。
(2) gateway ip-prefix-name:指定的地址前缀列表基于要加人到路由表的路由信息的下一跳进行过滤。
(3) ip-prefix ip-prefix-name:指定的地址前缀列表基于要加人到路由表的路由信息的目的地址进行过滤。配置IS-IS对接收的路由在加入IP路由表时进行过滤
[H3C-isis-1]filter-policy { acl-number | prefix-listprefix-list-name | route-policy route-policy-name }import
也是使用ACL或地址前缀列表对加入到路由表中的路由信息进行过滤。
配置Filter-policy过滤OSPF 路由示例
在图13-9所示网络中,RTA向RTB发送了192.168.0.0/24、192.168.1.0/24,192.168.2.0/24和192.168.3,0/24这4条5类LSA。出于安全性的考虑,RTB的路由表中只能存在192.168.0.0/24这条路由。所以,在 RTB上配置对计算出的路由进行过滤。
RTB 上配置如下:
[RTB] acl number 2000
[RTB-acl-basic-2000] rule 0 permit source 192.168.0.0 0.0.0.255
[RTB] ospf 1 router-id 2.2.2.2
[RTB-ospf-1] filter-policy 2000 import
此时RTB的LSDB中存在所有的4条LSA。[RTB]display ospf ldsb
AS External Database
Type LinkState ID AdvRouter Age
External 192.168.2.0 1.1.1.1 188
External 192.168.3.0 1.1.1.1 188
External 192.168.0.0 1.1.1.1 186
External 192.168.1.o 1.1.1 .1 184
但是,在RTB的路由表中仅存在1条新学习到的路由。
[RTB]display ip routing-table
Destination/Mask Proto Pre Cost NextHop Interface
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0. 1 InLoop0
192.168.0.0/24 O_ASE 150 1 10.0.0.1 GEO/0
要注意的是,因为这种过滤方法仅能够对计算出的路由进行过滤,不能过滤LSA,所以LSA还在相应区域内传播。也就是说,这种过滤方法仅能够对本路由器的路由表过滤,而无法对其他路由器的路由表产生影响。
总结
利用路由过滤可控制路由在网络内传播。
- ACL和地址前缀列表可用于路由信息的识别。地址前缀列表比 ACL更加灵活。
- 可利用Filter-policy工具在 RIP.OSPF、IS-IS等协议内过滤路由。