排查 Azure 路由服务器问题

了解如何排查一些常见的 Azure 路由服务器问题。

连接问题

为什么我的网络虚拟设备 (NVA) 在将默认路由 (0.0.0.0/0) 播发到路由服务器后失去了 Internet 连接?

当 NVA 播发默认路由时,路由服务器会针对虚拟网络中的所有虚拟机 (VM)(包括 NVA 本身)进行编程。 此默认路由将 NVA 设置为所有 Internet 绑定流量的下一个跃点。 如果 NVA 需要 Internet 连接,则需要配置用户定义的路由 (UDR) 来替代 NVA 中的此默认路由,并将 UDR 附加到托管 NVA 的子网。 否则,NVA 主机将继续发送 Internet 绑定流量,包括由 NVA 发送回 NVA 本身的流量。 有关详细信息,请参阅用户定义的路由

路由 下一跃点
0.0.0.0/0 Internet

使用 GatewaySubnet 上用户定义的路由 (UDR) 强制所有流量发往防火墙后,NVA 为何会失去与路由服务器的连接?

如果要使用防火墙检查本地流量,可以使用 GatewaySubnet 上的用户定义的路由 (UDR)(与具有 UDR 的 GatewaySubnet 关联的路由表)强制所有本地流量流向防火墙。 但是,此 UDR 可能会通过将控制平面流量 (BGP) 强制发送到防火墙来中断路由服务器和网关之间的通信(如果你正在检查发往具有路由服务器的虚拟网络的流量,则会出现此问题)。 为了避免此问题,你需要向 GatewaySubnet 路由表添加另一个 UDR,以排除控制平面流量被强制发送到防火墙(以防不需要/不可能向防火墙添加 BGP 规则):

路由 下一跃点
10.0.0.0/16 10.0.2.1
10.0.1.0/27 VirtualNetwork

10.0.0.0/16 是虚拟网络的地址空间,10.0.1.0/27 是 RouteServerSubnet 的地址空间。 10.0.2.1 是防火墙的 IP 地址。

我添加了一个用户定义路由 (UDR),其下一跃点类型为虚拟网络网关,但此 UDR 未生效。 这是正常情况吗?

是的,这是预期的行为。 路由服务器的虚拟网络和对等互连虚拟网络中的子网不支持下一跃点类型为“虚拟网络网关”的用户定义的路由。 但是,如果要将下一跃点配置为网络虚拟设备 (NVA) 或 Internet,则支持添加下一跃点类型为 VirtualAppliance 或 Internet 的用户定义路由。

在 VM 的网络接口的有效路由中,为什么我有一个下一个跃点类型设置为“无”的用户定义的路由 (UDR)

如果你从 NVA 向路由服务器播发一个与另一个用户定义的路由前缀完全匹配的路由,则已播发路由的下一个跃点必须有效。 如果已播发的下一个跃点是没有配置的后端池的负载均衡器,则此无效路由将优先于用户定义的路由。 在网络接口的有效路由中,无效的已播发路由将显示为下一个跃点类型设置为“无”的用户定义的路由

将服务终结点策略关联到 RouteServerSubnet 或 GatewaySubnet 后,为什么会失去连接?

如果将服务终结点策略关联到 RouteServerSubnet 或 GatewaySubnet,则 Azure 的基础管理平台与这些各自的 Azure 服务(路由服务器和 VPN/ExpressRoute 网关)之间的通信可能会中断。 这可能会导致这些 Azure 资源进入不正常状态,从而导致本地工作负荷与 Azure 工作负荷之间的连接丢失。

为什么在路由服务器虚拟网络使用自定义 DNS 而不是默认 DNS(Azure 提供的 DNS)后会失去连接?

对于部署路由服务器的虚拟网络,如果你没有使用默认(Azure 提供的)DNS,请确保你的自定义 DNS 配置能够解析公共域名。 这可确保 Azure 服务(路由服务器和 VPN/ExpressRoute 网关)能够与 Azure 的基础管理平面通信。 请参阅 Azure DNS 专用解析程序文档中有关通配符规则的说明。

在路由服务器和 NVA 之间设置 BGP 对等互连后,为什么无法通过 TCP 从我的 NVA ping 通路由服务器的 BGP 对等 IP?

在某些 NVA 中,需要将静态路由添加到路由服务器子网,以便能够从 NVA 对路由服务器进行 TCP ping 操作并避免 BGP 对等互连发生波动。 例如,如果路由服务器在 10.0.255.0/27 中,而 NVA 在 10.0.1.0/24 中,则需要将以下路由添加到 NVA 中的路由表:

路由 下一跃点
10.0.255.0/27 10.0.1.1

10.0.1.1 是托管 NVA(或者,更准确地说是 NIC 之一)的子网中的默认网关 IP。

为什么我在将路由服务器部署到已具有 ExpressRoute 网关和/或 Azure VPN 网关的虚拟网络后,无法通过 ExpressRoute 和/或 Azure VPN 连接到本地网络?

将路由服务器部署到虚拟网络后,需要更新网关和虚拟网络之间的控制平面。 在此更新过程中,虚拟网络中的 VM 会在一段时间内失去与本地网络的连接。 我们强烈建议你安排维护时段,以便在生产环境中部署路由服务器。

控制平面问题

连接到 Azure VPN 网关的本地网络为何未收到路由服务器播发的默认路由?

虽然 Azure VPN 网关可以从其 BGP 对等节点(包括路由服务器)接收到默认路由,但它不会向其他对等节点播发默认路由

为什么即使 BGP 对等互连处于开启状态,我的 NVA 也无法收到来自路由服务器的路由?

路由服务器使用的 ASN 为 65515。 请确保为 NVA 配置其他 ASN,以便在 NVA 和路由服务器之间建立“eBGP”会话,从而实现自动传播路由。 请确保在 BGP 配置中启用“多跃点”,因为 NVA 和路由服务器位于虚拟网络的不同子网中。

我的 NVA 与路由服务器之间的 BGP 对等互连处于开启状态。 我可以看到它们之间正确交换了路由。 为什么 NVA 路由未出现在 VM 的有效路由表中?

  • 如果你的 VM 与 NVA 和路由服务器位于同一虚拟网络中:

    路由服务器会公开托管在两个 VM 上的两个 BGP 对等 IP,这两个 VM 共同负责将路由发送到虚拟网络中运行的所有其他 VM。 每个 NVA 都必须为两个 VM 设置两个相同的 BGP 会话(例如,使用相同的 AS 编号和相同的 AS 路径,并播发一组相同的路由),以便虚拟网络中的 VM 可以从 Azure 路由服务器获取一致的路由信息。

    显示带有 Azure 路由服务器的网络虚拟设备 (NVA) 的图示。

    在有两个或更多 NVA 实例时,如果要将一个 NVA 实例指定为活动实例,将其他实例指定为被动实例,可以为来自不同 NVA 实例的相同路由播发不同的路径。

  • 如果 VM 所在的虚拟网络与托管 NVA 和路由服务器的虚拟网络不同。 请检查是否在两个 Vnet 之间启用了 VNet 对等互连,以及是否在 VM 的虚拟网络中启用了“使用远程路由服务器”。

为何在将路由服务器部署到虚拟网络后,ExpressRoute 的等价多路径 (ECMP) 功能关闭了?

通过多个 ExpressRoute 连接将同一路由从本地网络播发到 Azure 时,通常 ECMP 默认处于启用状态,以便发往这些路由的流量从 Azure 返回本地网络。 目前,在部署路由服务器时,ExpressRoute 与路由服务器之间的 BGP 交换中会丢失多路径信息,因此来自 Azure 的流量只会遍历其中一个 ExpressRoute 连接。

下一步

要了解如何创建和配置 Azure 路由服务器,请参阅: