排查 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 地址。

在路由服务器和 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 路由服务器获取一致的路由信息。

    Diagram showing a network virtual appliance (NVA) with Azure Route Server.

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

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

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

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

下一步

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