本文档说明多种过滤路由的方法和应用过滤器的影响。本文档中所涵盖的过滤器是通过路由器接口防止更新的过滤器、控制路由更新中路由通告的过滤器和控制路由更新处理的过滤器。
由于路由过滤通过调控输入或通告路由表的路由起作用,因此路由过滤对链路状态路由协议和距离矢量协议的影响不同。运行距离矢量协议的路由器根据路由表中的内容通告路由。因此,路由过滤器会影响路由器向其相邻路由器通告的路由。
另一方面,运行链路状态协议的路由器根据其链路状态数据库中的信息(而不是其相邻通告路由项中的信息)确定其路由。路由过滤器对链路状态通告或链路状态数据库没有影响。为此,本文档中的信息只适用于距离矢量 IP 路由协议,例如路由信息协议 (RIP)、RIP 版本 2、内部网关路由协议 (IGRP) 和增强的 IGRP (EIGRP)。
本文档没有任何特定的前提条件。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
使用 passive interface 命令可以防止路由器通过路由器接口发送路由更新。防止路由更新消息通过路由器接口发送可以避免该网络上的其他系统动态获知路由。有关使用 passive interface 命令的示例,请参阅配置 IP 路由协议独立功能的“Passive Interface 示例”部分。
对于 RIP 和 IGRP,passive interface 命令可以防止路由器发送更新到特定邻居,但是路由器继续监听和使用从该邻居处获取的路由更新;然而,在 EIGRP 上,passive interface 命令会对协议产生不同的影响,如 Passive Interface 功能如何在 EIGRP 中 工作?中所述。
要在路由更新中控制路由的通告和处理,请使用 distribute-list 命令。有两个 distribute-list 命令:distribute-list in 和 distribute-list out。这两个命令在语法上类似,但是每个命令的可用选项及其行为却完全不同。
distribute-list in 命令用于控制传入的路由更新中处理的路由。有关此命令的示例,请参阅使用 distribute-list in 部分。
distribute-list out 命令用于控制传出的路由更新中包括的路由。有关示例,请参阅使用 distribute-list out 部分。
distribute-list in 命令的语法是:
distribute-list access-list-number in [interface-name]
其中 access-list-number 是传入的路由更新的内容匹配的标准 IP 访问列表。[interface-name] 参数为选填,用于指定希望进行更新的接口。请注意,所参阅的 access-list-number 中的访问列表应用于更新的内容,而不是路由更新数据包的源或目标,这很重要。路由器根据访问列表决定是否将内容包括在路由表中。例如:
access-list 1 permit 1.0.0.0 0.255.255.255 router rip distribute-list 1 in !--- The distribute-list command is given !--- under the router configuration mode.
所有入站 RIP 更新都要根据 access-list 1 进行检查并且仅将匹配 1.xxx.xxx.xxx 格式的路由放置在路由表中。
对于指定的路由进程,可以为每个接口定义一个入站接口特定的 distribute-list 和一个全局定义的 distribute-list。例如,可以使用以下组合:
access-list 1 permit 1.0.0.0 0.255.255.255 access-list 2 permit 1.2.3.0 0.0.0.255 router rip distribute-list 2 in ethernet 0 distribute-list 1 in
在这种情况下,路由器检查更新进入的接口。如果是以太网 0,access-list 2 则在放置到路由表中之前应用。如果根据此检查,网络被拒绝,则不对此网络进行进一步检查。然而,如果 distribute-list 2 允许该网络,则同时检查 distribute-list 1。如果两个 distribute-list 均允许网络,则放置在表中。当使用多个 distribute-list 时,遵守以下算法。
从入站更新中提取下一个网络。
检查进入的接口。
是否存在应用于该接口的分配列表?
Yes:网络是否被该列表拒绝?
Yes:网络不将其放置在路由表中;返回到第 1 步
否:允许网络;继续执行第 4 步。
否:转到第 4 步。
是否存在全局分配列表?
Yes:网络是否被该列表拒绝?
Yes:网络不将其放置在路由表中;返回到第 1 步。
否:网络将其放置在路由表中;返回到第 1 步。
否:网络将其放置在路由表中;返回到第 1 步。
distribute-list out 命令的语法是:
distribute-list access-list-number out [interface-name|routing process|autonomous-system-number]
其中 access-list-number 是传出的路由更新内容匹配的标准 IP 访问列表。[interface-name] 参数为选填,用于指定更新传出的接口。当从另一个路由进程或自治系统编号重分发时,会使用[routing process|autonomous-system-number]参数。列表应用于从指定进程导入当前进程的全部路由。
例如:
access-list 1 permit 1.0.0.0 0.255.255.255 router rip default-metric 1 redistribute igrp 20 distribute-list 1 out igrp 20
这时,来自 igrp 20 的路由正在重分配到 RIP。根据access-list 1检查最初源自igrp 20的所有出站路由更新。仅发送与1.xxx.xxx.xx格式匹配的路由。
请注意,如果多个分配列表应用于不同的接口或全局使用,则可以为指定的路由进程指定多个分配列表。对于所有指定的路由协议,可以为每个接口定义一个接口特定的 distribute-list,也可为每个过程/自治系统对定义一个协议特定的 distribute-list。
注:您可以为每个接口每个方向定义一个接口特定分发列表。即对于同一接口,可以在入站方向定义一个 distribute-list in (distribute-list in) 并在出站方向定义一个 distribute-list in (distribute-list out)。
access-list 1 permit 1.0.0.0 0.255.255.255 access-list 2 permit 1.2.3.0 0.0.0.255 router rip distribute-list 2 out ethernet 0 distribute-list 1 out
在这种情况下,路由器只发送关于以太网 0 外 1.2.3.0 子网的路由,并且所有关于 1.0.0.0 中的网络的更新都充斥到其余接口,包括 1.2.3.0 子网。使用多个 distribute-list 时,应用以下算法。
选择下一个网络接收出站更新。
检查正在传出的接口。
是否存在应用于该接口的分配列表?
Yes:网络是否被该列表拒绝?
Yes:网络不传出;返回到第 1 步。
否:网络传出;继续执行第 4 步。
否:转到第 4 步。
检查我们获取路由的路由进程或 AS。
是否存在应用于该进程或 AS 的分配列表?
Yes:网络是否被该列表拒绝?
Yes:网络不传出;返回到第 1 步。
否:网络传出;继续到第 6 步。
否:转到第 6 步。
是否存在全局分配列表?
Yes:网络是否被该列表拒绝?
Yes:网络不传出;返回到第 1 步。
否:网络传出;返回到第 1 步。
否:网络传出成功;转到第 1 步。
请注意,检查分配列表只是许多检查中的一项,这些检查是在路由器将距离矢量路由包括在路由表或更新中之前进行该距离矢量路由检查的。同时,检查旨在符合满意度、策略、水平分割等其他要素。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
10-Aug-2005 |
初始版本 |