排查 Azure 路由服务器问题
了解如何排查一些常见的 Azure 路由服务器问题。
当 NVA 播发默认路由时,路由服务器会针对虚拟网络中的所有虚拟机 (VM)(包括 NVA 本身)进行编程。 此默认路由将 NVA 设置为所有 Internet 绑定流量的下一个跃点。 如果 NVA 需要 Internet 连接,则需要配置用户定义的路由 (UDR) 来替代 NVA 中的此默认路由,并将 UDR 附加到托管 NVA 的子网。 否则,NVA 主机将继续发送 Internet 绑定流量,包括由 NVA 发送回 NVA 本身的流量。 有关详细信息,请参阅用户定义的路由。
路由 | 下一跃点 |
---|---|
0.0.0.0/0 | Internet |
如果要使用防火墙检查本地流量,可以使用 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) 或 Internet,则支持添加下一跃点类型为 VirtualAppliance 或 Internet 的用户定义路由。
如果你从 NVA 向路由服务器播发一个与另一个用户定义的路由前缀完全匹配的路由,则已播发路由的下一个跃点必须有效。 如果已播发的下一个跃点是没有配置的后端池的负载均衡器,则此无效路由将优先于用户定义的路由。 在网络接口的有效路由中,无效的已播发路由将显示为下一个跃点类型设置为“无”的用户定义的路由。
如果将服务终结点策略关联到 RouteServerSubnet 或 GatewaySubnet,则 Azure 的基础管理平台与这些各自的 Azure 服务(路由服务器和 VPN/ExpressRoute 网关)之间的通信可能会中断。 这可能会导致这些 Azure 资源进入不正常状态,从而导致本地工作负荷与 Azure 工作负荷之间的连接丢失。
对于部署路由服务器的虚拟网络,如果你没有使用默认(Azure 提供的)DNS,请确保你的自定义 DNS 配置能够解析公共域名。 这可确保 Azure 服务(路由服务器和 VPN/ExpressRoute 网关)能够与 Azure 的基础管理平面通信。 请参阅 Azure DNS 专用解析程序文档中有关通配符规则的说明。
在某些 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。
将路由服务器部署到虚拟网络后,需要更新网关和虚拟网络之间的控制平面。 在此更新过程中,虚拟网络中的 VM 会在一段时间内失去与本地网络的连接。 我们强烈建议你安排维护时段,以便在生产环境中部署路由服务器。
虽然 Azure VPN 网关可以从其 BGP 对等节点(包括路由服务器)接收到默认路由,但它不会向其他对等节点播发默认路由。
路由服务器使用的 ASN 为 65515。 请确保为 NVA 配置其他 ASN,以便在 NVA 和路由服务器之间建立“eBGP”会话,从而实现自动传播路由。 请确保在 BGP 配置中启用“多跃点”,因为 NVA 和路由服务器位于虚拟网络的不同子网中。
Azure 路由服务器会删除 AS-Path 中的 ASN 为 0 的路由。 为了确保这些路由成功播发到 Azure 中,AS-Path 不应包含 0。
如果你的 VM 与 NVA 和路由服务器位于同一虚拟网络中:
路由服务器会公开两个 BGP 对等节点 IP,它们共同负责将路由发送到虚拟网络中运行的所有其他 VM。 每个 NVA 都必须为两个 BGP 对等节点 IP 设置两个相同的 BGP 会话(例如,使用相同的 AS 编号和相同的 AS 路径,并播发一组相同的路由),以便虚拟网络中的 VM 可以从 Azure 路由服务器获取一致的路由信息。
在有两个或更多 NVA 实例时,如果要将一个 NVA 实例指定为活动实例,将其他实例指定为被动实例,可以为来自不同 NVA 实例的相同路由播发不同的路径。
如果 VM 所在的虚拟网络与托管 NVA 和路由服务器的虚拟网络不同。 请检查是否在两个 Vnet 之间启用了 VNet 对等互连,以及是否在 VM 的虚拟网络中启用了“使用远程路由服务器”。
通过多个 ExpressRoute 连接将同一路由从本地网络播发到 Azure 时,通常 ECMP 默认处于启用状态,以便发往这些路由的流量从 Azure 返回本地网络。 目前,在部署路由服务器时,ExpressRoute 与路由服务器之间的 BGP 交换中会丢失多路径信息,因此来自 Azure 的流量只会遍历其中一个 ExpressRoute 连接。
要了解如何创建和配置 Azure 路由服务器,请参阅: