路由映射

本章介绍如何为 ASA 配置和自定义路由映射。

关于路由映射

在将路由重新分发到 OSPF、RIP、EIGRP 或 BGP 路由进程时会使用路由映射。在为 OSPF 路由进程生成默认路由时也会使用路由映射。路由映射定义了允许将来自指定路由协议的哪些路由重新分发到目标路由进程。

路由映射与广为人知的 ACL 具有许多相同功能。以下是两者共有的一些特征:

  • 它们都是单独语句的有序序列,各自具有允许或拒绝结果。ACL 或路由映射的评估包括采用预先确定顺序的列表扫描,以及每条语句匹配条件的评估。一旦找到第一个语句匹配即中止列表扫描,并且会执行与语句匹配相关联的操作。

  • 它们是通用机制。条件匹配和匹配解释由它们的应用方式和使用它们的功能决定。应用于不同功能的相同路由映射可能以不同方式进行解释。

以下是路由映射与 ACL 之间的一些差异:

  • 路由映射比 ACL 更加灵活,可以根据 ACL 无法验证的条件对路由进行验证。例如,路由映射可以验证路由的类型是否为内部路由。

  • 每个 ACL 按照设计约定以隐式拒绝语句结尾。如果在匹配尝试期间到达路由映射的结尾,则结果取决于路由映射的特定应用。应用于重新分发的路由映射与 ACL 的行为方式相同:如果路由与路由映射中的任何子句不匹配,则会拒绝路由重新分发,就如同路由映射的结尾包含拒绝语句一样。

Permit 和 Deny 子句

路由映射可以具有 permit 和 deny 子句。deny 子句可拒绝来自重新分发的路由匹配。您可以使用 ACL 作为路由映射中的匹配标准。由于 ACL 还有 permit 和 deny 子句,因此数据包与 ACL 匹配时会应用以下规则:

  • ACL permit + route map permit:重新分发路由。

  • ACL permit + route map deny:重新分发路由。

  • ACL deny + route map permit or deny:不匹配 route map 子句,并且对下一个 route-map 子句进行评估。

Match 和 Set 子句值

每个路由映射子句均具有两种类型的值:

  • match 值用于选择应将此子句应用于的路由。

  • set 值用于修改将重新分发到目标协议的信息。

对于要重新分发的每个路由,路由器首先评估路由映射中子句的匹配条件。如果匹配条件成功,则按照 permit 或 deny 子句的指示重新分发或拒绝路由,其某些属性可能会通过 set 命令设置的值修改。如果匹配条件失败,则此子句不适用于路由,软件会根据路由映射中下一个子句继续评估路由。路由映射扫描将继续,直到发现匹配路由的子句或达到路由映射的结尾。

如果存在下列条件中的一个,则每个子句中的 match 值或 set 值可能会缺失或多次重复:

  • 如果一个子句中存在多个匹配条目,则对于给定路由而言,所有这些条目必须都符合,该路由才与该子句匹配(也即,为多个 match 命令应用逻辑 AND 算法)。

  • 如果一个 match 条目引用了一个条目中的多个对象,那么其中任何一个对象都应匹配(应用逻辑 OR 算法)。

  • 如果匹配条目不存在,则所有路由都匹配子句。

  • 如果一个 set 条目在 route map permit 子句中不存在,则该路由将被重新分发,而不修改其当前属性。



请勿在 route map deny 子句中配置 set 条目,因为 deny 子句会禁止路由重新分发 - 没有要修改的信息。


没有 match 或 set 条目的 route map 子句需要执行操作。空 permit 子句允许重新分发剩余路由而不进行修改。空 deny 子句不允许重新分发其他路由(如果路由映射在经过完整扫描后,未发现明确的匹配项,此为默认操作)。

路由映射准则

防火墙模式

仅在路由防火墙模式下受支持。不支持透明防火墙模式。

其他准则

路由映射不支持其中包含用户、用户组和完全限定域名对象的 ACL。

定义路由映射

当指定允许将来自指定路由协议的哪些路由重新分发到目标路由进程时,必须定义路由映射。

过程


创建路由映射条目:

route-map name {permit | deny} [sequence_number]

示例:


ciscoasa(config)# route-map name {permit} [12]

路由映射条目按顺序读取。可使用 sequence_number 参数标识顺序,否则 ASA 将使用添加路由映射条目的顺序。


自定义路由映射

本节介绍如何自定义路由映射。

定义路由以匹配特定的目标地址

过程


步骤 1

创建路由映射条目:

route-map name {permit | deny} [sequence_number]

示例:


ciscoasa(config)# route-map name {permit} [12]

路由映射条目按顺序读取。可使用 sequence_number 选项标识顺序,否则 ASA 会使用添加路由映射条目的顺序。

步骤 2

匹配包含目标网络并与标准 ACL 或前缀列表相匹配的所有路由:

match ip address {acl_id [acl_id] [...] | prefix-list prefix_list_id [prefix_list_id] [...]}

示例:


ciscoasa(config-route-map)# match ip address acl1 acl2 acl3

如果指定多个 ACL 或前缀列表,则路由可以匹配任何 ACL 或前缀列表。

 

OSPF 不支持前缀列表。

步骤 3

匹配具有指定指标的任何路由:

match metric metric_value

示例:


ciscoasa(config-route-map)# match metric 200

metric_value 范围可在 0 到 4294967295 之间。

步骤 4

匹配包含下一跳路由器地址并与标准 ACL 相匹配的任何路由:

match ip next-hop acl_id [acl_id] [...]

示例:


ciscoasa(config-route-map)# match ip next-hop acl2

如果指定多个 ACL,则路由可以匹配任何 ACL。

步骤 5

匹配带有指定下一跳接口的任何路由:

match interface if_name

示例:


ciscoasa(config-route-map)# match interface if_name

如果指定多个接口,则路由可以匹配任一接口。

步骤 6

匹配已由与标准 ACL 相匹配的路由器通告的任何路由:

match ip route-source acl_id [acl_id] [...]

示例:


ciscoasa(config-route-map)# match ip route-source acl_id [acl_id] [...]

如果指定多个 ACL,则路由可以匹配任何 ACL。

步骤 7

匹配路由类型:

match route-type {internal | external [type-1 | type-2]}


为路由操作配置度量值

如果路由与 match 命令匹配,则以下 set 命令会确定在重新分发路由之前要对路由执行的操作。

要为路由操作配置指标值,请执行以下步骤:

过程


步骤 1

创建路由映射条目:

route-map name {permit | deny} [sequence_number]

示例:


ciscoasa(config)# route-map name {permit} [12]

路由映射条目按顺序读取。可使用 sequence_number 参数标识顺序,否则 ASA 将使用添加路由映射条目的顺序。

步骤 2

为路由映射设置指标值:

set metric metric_value

示例:


ciscoasa(config-route-map)# set metric 200

metric_value 参数范围可在 0 到 294967295 之间。

步骤 3

为路由映射设置指标类型:

set metric-type {type-1type-2}

示例:


ciscoasa(config-route-map)# set metric-type type-2

metric-type 参数可能是 type-1 或 type-2。


路由映射示例

以下示例显示如何将跳数等于 1 的路由重新分发到 OSPF。

ASA 将这些路由作为外部接口进行重新分发,其中指标为 5,指标类型为类型 1。


ciscoasa(config)# route-map 1-to-2 permit
ciscoasa(config-route-map)# match metric 1
ciscoasa(config-route-map)# set metric 5
ciscoasa(config-route-map)# set metric-type type-1

以下示例显示如何使用配置的指标值将 10.1.1.0 静态路由重新分发到 eigrp 进程 1:


ciscoasa(config)# route outside 10.1.1.0 255.255.255.0 192.168.1.1
ciscoasa(config-route-map)# access-list mymap2 line 1 permit 10.1.1.0 255.255.255.0
ciscoasa(config-route-map)# route-map mymap2 permit 10
ciscoasa(config-route-map)# match ip address mymap2
ciscoasa(config-route-map)# router eigrp 1
ciscoasa(config-router)# redistribute static metric 250 250 1 1 1 route-map mymap2

路由映射的历史记录

表 1. 路由映射的功能历史记录

功能名称

平台版本

功能信息

路由映射

7.0(1)

引入了此功能。

引入了以下命令:route-map

增强了对静态和动态路由映射的支持

8.0(2)

添加了对动态和静态路由映射的增强支持。

支持动态路由协议(EIGRP、OSPF 和 RIP)的状态故障转移以及常规路由相关操作的调试

8.4(1)

引入了以下命令:debug routeshow debug route

修改了以下命令:show route

多情景模式下的动态路由

9.0(1)

在多情景模式下支持路由映射。

支持 BGP

9.2(1)

引入了此功能。

引入以下命令:router bgp

IPv6 支持前缀规则

9.3.2

引入了此功能。