Cisco ASA RRI 和 OSPF 重新分配

网络工程 思科 路由 思科 思科-ios ospf
2021-07-23 02:42:14

这是基于这个原始问题的后续问题

存在以下拓扑:

拓扑

Cisco ASA 是我们的互联网防火墙,也是 VPN 网关,可终止 VPN 连接。ASA 执行 RRI,将这些 VPN 路由添加到 OSPF 域中。ASA 和 MLS 都在 OSPF 进程 2 区域 0 中,并交换路由。OSPF 设置正确。

RRI 的默认行为是将生成的静态路由的下一跳设置为应用加密映射的 ASA 接口的默认网关(在我们的示例中为外部)。在我们的例子中,它是 xx.xx.192.21,它是 MLS 的接口。因此,ASA 上的路由如下所示:

S xx.xx.202.13 255.255.255.255 [1/0] via xx.xx.192.21, outside

这些路由通过 中的redistribute static命令重新分配到 OSPFrouter ospf 2

然而,在 MLS 中,路由在数据库中,但不在路由表中。类型 5 LSA 如下所示:

  Routing Bit Set on this LSA
  LS age: 1887
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: xx.xx.202.5 (External Network Number )
  Advertising Router: xx.xx.192.20
  LS Seq Number: 80000001
  Checksum: 0x8147
  Length: 36
  Network Mask: /32
        Metric Type: 2 (Larger than any link state path)
        TOS: 0
        Metric: 20
        Forward Address: xx.xx.192.21
        External Route Tag: 0

因此,ASA 将转发地址设置为外部接口的下一跳。根据Cisco 文档,如果满足以下条件,则会设置非零转发地址:

在 ASBR 的下一跳接口上启用 OSPF 并且 ASBR 的下一跳接口在 OSPF 下是非被动的并且 ASBR 的下一跳接口不是点对点的并且 ASBR 的下一跳接口不是点对多点的并且 ASBR 的下一跳接口地址属于router ospf 命令指定的网络范围。

由于我们需要 ASA 和 MLS 参与 OSPF 路由,如果我理解正确的话,我们不能禁止 ASA 设置转发地址。

然而,MLS 不会将 LSA 安装到路由表中,因为转发地址不是 OSPF O 或 O IA 路由,它是它自己的接口。

ASA 的配置

 router ospf 2
  ! External Routing Process
  router-id xx.xx.192.20
  network xx.xx.192.0 255.255.255.224 area 0
  area 0 authentication message-digest
  log-adj-changes
  redistribute static subnets route-map STATIC->OSPF2

 route-map STATIC->OSPF2 permit 10
  match ip address prefix-list STATIC->OSPF2

 ! Both prefixes are used in the VPN pools
 prefix-list STATIC->OSPF2 seq 5 permit xx.xx.202.0/24 ge 32
 prefix-list STATIC->OSPF2 seq 15 permit xx.xx.37.0/24 ge 32

 crypto dynamic-map VPN-dynamic 10 set reverse-route
 crypto map VPN 111 ipsec-isakmp dynamic VPN-dynamic
 crypto map VPN interface outside

那么现在的问题是:如何解决这种情况,让MLS将路由加入路由表?

1个回答

冒着另一个被否决的答案的风险,因为我无法发表评论,我将提出一个可能的解决方案。

问题:
Type5 LSA 的转发地址非零。根据 Cisco 文档和RFC2328

如果转发地址不为零,则在路由表中查找转发地址。 [24] 匹配的路由表项必须指定区域内或区域间路径;如果不存在这样的路径,则不对 LSA 做任何事情并考虑列表中的下一个。

因为:

[24]当转发地址非零时,它应该指向属于另一个自治系统的路由器。

我相信当它进行查找并看到下一跳地址是连接的路由时,它会跳过 LSA 而不会将其安装到路由表中。我认为这是字面解释;我会将连接的路由视为区域内。然而,由于它是一个单一区域,它仍然会将 LSA 泛洪到您的外部路由器,在那里它将 LSA 的下一跳视为 MLS 通告的 OSPF 路由,因此将 LSA 安装到路由表中。

根据您的帖子和Cisco 文档

这些条件将转发地址字段设置为非零地址:
在 ASBR 的下一跳接口上启用 OSPF 并且 ASBR 的下一跳接口
在 OSPF 下是非被动的并且
ASBR 的下一跳接口不是点对点和
ASBR 的下一跳interface不是点对多点 AND
ASBR 的下一跳接口地址在 router ospf 命令中指定的网络范围内。

可能的解决方案:
因此,根据此信息,如果 ospf 网络类型设置为point-to-pointASA 与 MLS 之间,则 LSA 的下一跳设置为零。这可以通过以下方式事先检查show ip ospf interface它可能是broadcast目前。

在两台设备上,您都需要将接口 OSPF 网络类型设置为点对点,并在 OSPF 配置下静态定义邻居。

然后您应该看到 Type5 LSA 下一跳地址设置为零,并且

如果转发地址设置为 0.0.0.0,则数据包应该发送到 ASBR 本身。