了解如何排查一些常见的 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 实例的相同路由发布不同的 AS 路径。
如果 VM 所在的虚拟网络与托管 NVA 和路由服务器的虚拟网络不同。 请检查是否在两个 Vnet 之间启用了 VNet 对等互连,以及是否在 VM 的虚拟网络中启用了“使用远程路由服务器”。
当通过多个 ExpressRoute 连接从本地网络向 Azure 广播相同路由时,通常默认启用 ECMP,以便来自 Azure 的流量可以通过这些路由返回至本地网络。 目前,在部署路由服务器时,ExpressRoute 与路由服务器之间的 BGP 交换中会丢失多路径信息,因此来自 Azure 的流量只会遍历其中一个 ExpressRoute 连接。
如果看到以下格式的错误,请确保已配置以下权限:路由服务器角色和权限
错误消息格式:“对象 ID 为 {} 的客户端无权对范围 {} 执行操作 {},或者该范围无效。 如果最近已授予访问权限,请刷新凭据。”
要了解如何创建和配置 Azure 路由服务器,请参阅: