你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

验证 ExpressRoute 连接

本文可帮助验证 Azure ExpressRoute 连接并对其进行故障排除。 ExpressRoute 可通过由连接提供商提供的专用连接将本地网络扩展到 Microsoft Cloud 中。 ExpressRoute 连接涉及三个不同的网络区域:

  • 客户网络
  • 提供商网络
  • Microsoft 数据中心

注意

在 ExpressRoute Direct 连接模型中,可以直接连接到 Microsoft Enterprise Edge (MSEE) 路由器的端口。 此模型仅包括你的网络和 Microsoft 网络区域。

本文可帮助你确定连接问题,并寻求相应团队的支持以解决它们。

重要

本文旨在帮助诊断和修复简单问题。 它不是 Microsoft 支持的替代项。 如果无法使用本指导解决问题,请通过 Microsoft 支持部门开立支持票证。

概述

下图显示了客户网络通过 ExpressRoute 连接到 Microsoft 网络时的逻辑连接。 1

在关系图中,数字表示关键网络点:

  1. 客户计算设备(例如服务器或电脑)。
  2. 客户边缘路由器 (CE)。
  3. 面向客户边缘路由器的提供商边缘路由器/交换机 (PE)。
  4. 面向 Microsoft Enterprise Edge ExpressRoute 路由器 (MSE) 的 PE,称为 PE-MSEE。
  5. MSEE。
  6. 虚拟网络网关。
  7. Azure 虚拟网络上的计算设备。

这些网络点在整篇文章中按其关联的数字进行引用。

根据 ExpressRoute 连接模型,网络点 3 和 4 可能是交换机(第 2 层设备)或路由器(第 3 层设备)。 连接模型是云交换场地租用、点对点以太网连接或任意互连 (IPVPN)。

在直接连接模型中,不存在网络点 3 和 4。 相反,CE (2) 通过暗光纤直接连接到 MSEE。

如果使用云交换场地租用、点对点以太网或直接连接模型,则 CE (2) 将会与 MSEE (5) 建立边界网关协议 (BGP) 对等互连。

如果使用任意互连 (IPVPN) 连接模型,则 PE-MSEE (4) 将与 MSEE (5) 建立 BGP 对等互连。 PE-MSEE 通过 IPVPN 服务提供商网络将从 Microsoft 收到的路由传播回到客户网络。

注意

为了实现高可用性,Microsoft 将在 MSEE 和 PE-MSEE 对之间建立完全冗余的并行连接。 另外,建议在客户网络和 PE/CE 对之间建立完全冗余的并行网络路径。 有关高可用性的详细信息,请参阅使用 ExpressRoute 进行高可用性设计

以下部分介绍了对 ExpressRoute 线路进行故障排除的逻辑步骤。

验证线路预配和状态

预配 ExpressRoute 线路可在 CE/PE-MSEE (2/4) 与 MSEE (5) 之间建立冗余的第 2 层连接。 如需详细了解如何创建、修改、预配和验证 ExpressRoute 线路,请参阅创建和修改 ExpressRoute 线路

提示

服务密钥可以唯一地标识 ExpressRoute 线路。 如果需要 Microsoft 或 ExpressRoute 合作伙伴的帮助来排查问题,请提供服务密钥以轻松确定线路。

通过 Azure 门户进行验证

在 Azure 门户中,导航到 ExpressRoute 线路的页面。 该页面的 3 部分列出了 ExpressRoute 概要,如以下屏幕截图所示:

4

在 ExpressRoute 概要中,“线路状态”指示 Microsoft 端线路的状态,“提供商状态”则指示服务提供商是否已预配该线路。

若要确保 ExpressRoute 线路正常运行,“线路状态”必须为“已启用”,“提供商状态”必须为“已预配”。

注意

如果“线路状态”停留在“未启用”状态,请联系 Microsoft 支持部门。 如果“提供商状态”停留在“未预配”状态,请联系服务提供商

通过 PowerShell 进行验证

要列出资源组中的所有 ExpressRoute 线路,请使用以下命令:

Get-AzExpressRouteCircuit -ResourceGroupName "Test-ER-RG"

提示

要查找资源组的名称,请使用 Get-AzResourceGroup 命令列出订阅中的所有资源组。

要获取资源组中特定 ExpressRoute 线路的详细信息,请使用以下命令:

Get-AzExpressRouteCircuit -ResourceGroupName "Test-ER-RG" -Name "Test-ER-Ckt"

下面是示例响应:

Name                             : Test-ER-Ckt
ResourceGroupName                : Test-ER-RG
Location                         : westus2
Id                               : /subscriptions/***************************/resourceGroups/Test-ER-RG/providers/***********/expressRouteCircuits/Test-ER-Ckt
Etag                             : W/"################################"
ProvisioningState                : Succeeded
Sku                              : {
                                    "Name": "Standard_UnlimitedData",
                                    "Tier": "Standard",
                                    "Family": "UnlimitedData"
                                   }
CircuitProvisioningState         : Enabled
ServiceProviderProvisioningState : Provisioned
ServiceProviderNotes             :
ServiceProviderProperties        : {
                                    "ServiceProviderName": "****",
                                    "PeeringLocation": "******",
                                    "BandwidthInMbps": 100
                                   }
ServiceKey                       : **************************************
Peerings                         : []
Authorizations                   : []

要确认 ExpressRoute 线路是否正常运行,请确保正确设置以下字段:

CircuitProvisioningState         : Enabled
ServiceProviderProvisioningState : Provisioned

注意

如果“线路状态”停留在“未启用”状态,请联系 Microsoft 支持部门。 如果“提供商状态”停留在“未预配”状态,请联系服务提供商

验证对等互连配置

在服务提供商预配 ExpressRoute 线路后,可以通过 CE/MSEE-PE (2/4) 和 MSE (5) 之间的线路使用外部 BGP (eBGP) 创建多个路由配置。 每个 ExpressRoute 线路可以具有以下一种或两种对等互连配置:

  • Azure 专用对等互连:适用于流向 Azure 中专用虚拟网络的流量
  • Microsoft 对等互连:适用于流向平台即服务 (PaaS) 和服务型软件 (SaaS) 的公共终结点的流量

有关创建和修改路由配置的详细信息,请参阅创建和修改 ExpressRoute 线路的路由

通过 Azure 门户进行验证

注意

在 IPVPN 连接模型中,服务提供商负责处理对等互连(第 3 层服务)的配置。 如果在服务提供商配置对等互连后,门户中的对等互连处于空白状态,请尝试使用门户上的“刷新”按钮刷新线路配置。 此操作会从线路中提取当前路由配置。

在 Azure 门户中,可以在该线路的页面上检查 ExpressRoute 线路的状态。 3 部分列出了 ExpressRoute 对等互连,如以下屏幕截图所示:

5

在前面的示例中,已预配 Azure 专用对等互连,但尚未预配 Azure 公共对等互连和 Microsoft 对等互连。 已成功预配的对等互连上下文还会列出主要和辅助点到点子网。 /30 子网用于 MSEE 和 CE/PE-MSEE 的接口 IP 地址。 该列表还指示上次修改配置的人员。

注意

如果对等互连启用失败,请检查分配的主要子网和辅助子网是否与链接的 CE/PE-MSEE 上的配置相匹配。 此外,请验证 MSEE 上的值 VlanIdAzureASNPeerASN 是否与链接的 CE/PE-MSEE 上的值匹配。

如果选择了 MD5 哈希,请确保 MSEE 和 CE/PE-MSEE 对上的共享密钥相同。 出于安全原因,将不会显示以前配置的共享密钥。

如果需要在 MSEE 路由器上更改其中的任何配置,请参阅创建和修改 ExpressRoute 线路的路由

注意

在为接口分配的 /30 子网中,Microsoft 将使用第二个可用的 IP 地址作为 MSEE 接口。 请务必将第一个可用 IP 地址分配给对等互连的 CE/PE-MSEE。

通过 PowerShell 进行验证

若要获取 Azure 专用对等互连的配置详细信息,请使用以下命令:

$ckt = Get-AzExpressRouteCircuit -ResourceGroupName "Test-ER-RG" -Name "Test-ER-Ckt"
Get-AzExpressRouteCircuitPeeringConfig -Name "AzurePrivatePeering" -ExpressRouteCircuit $ckt

下面是已成功配置的专用对等互连的示例响应:

Name                       : AzurePrivatePeering
Id                         : /subscriptions/***************************/resourceGroups/Test-ER-RG/providers/***********/expressRouteCircuits/Test-ER-Ckt/peerings/AzurePrivatePeering
Etag                       : W/"################################"
PeeringType                : AzurePrivatePeering
AzureASN                   : 12076
PeerASN                    : 123##
PrimaryPeerAddressPrefix   : 172.16.0.0/30
SecondaryPeerAddressPrefix : 172.16.0.4/30
PrimaryAzurePort           :
SecondaryAzurePort         :
SharedKey                  :
VlanId                     : 200
MicrosoftPeeringConfig     : null
ProvisioningState          : Succeeded

已成功启用的对等互连上下文会列出主要和辅助地址前缀。 /30 子网用于 MSEE 和 CE/PE-MSEE 的接口 IP 地址。

要获取 Microsoft 对等互连的配置详细信息,请使用以下命令:

$ckt = Get-AzExpressRouteCircuit -ResourceGroupName "Test-ER-RG" -Name "Test-ER-Ckt"
Get-AzExpressRouteCircuitPeeringConfig -Name "MicrosoftPeering" -ExpressRouteCircuit $ckt

如果未配置对等互连,将会收到一条错误消息。 下面是未在电路中配置所述对等互连时的示例响应:

Get-AzExpressRouteCircuitPeeringConfig : Sequence contains no matching element
At line:1 char:1
    + Get-AzExpressRouteCircuitPeeringConfig -Name "MicrosoftPeering ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : CloseError: (:) [Get-AzExpr...itPeeringConfig], InvalidOperationException
        + FullyQualifiedErrorId : Microsoft.Azure.Commands.Network.GetAzureExpressRouteCircuitPeeringConfigCommand

注意

如果对等互连启用失败,请检查分配的主要子网和辅助子网是否与链接的 CE/PE-MSEE 上的配置相匹配。 此外,请验证 MSEE 上的值 VlanIdAzureASNPeerASN 是否与链接的 CE/PE-MSEE 上的值匹配。

如果选择了 MD5 哈希,请确保 MSEE 和 CE/PE-MSEE 对上的共享密钥相同。 出于安全原因,将不会显示以前配置的共享密钥。

如果需要在 MSEE 路由器上更改其中的任何配置,请参阅创建和修改 ExpressRoute 线路的路由

注意

在为接口分配的 /30 子网中,Microsoft 将使用第二个可用的 IP 地址作为 MSEE 接口。 请务必将第一个可用 IP 地址分配给对等互连的 CE/PE-MSEE。

验证 ARP

地址解析协议 (ARP) 表为特定的对等互连提供 IP 地址和 MAC 地址的映射。 用于 ExpressRoute 线路对等互连的 ARP 表为每个接口(主接口和辅助接口)提供以下信息:

  • 将本地路由器接口的 IP 地址映射到 MAC 地址
  • 将 ExpressRoute 路由器接口的 IP 地址映射到 MAC 地址(可选)
  • 映射的使用期限

ARP 表可帮助验证第 2 层配置,并可针对第 2 层的基本连接问题进行排除故障。

注意

ARP 结果可能会因硬件平台而有所不同,并且仅显示本地接口。

若要了解如何查看 ExpressRoute 对等互连的 ARP 表,以及如何使用这些信息来排查第 2 层连接问题,请参阅在资源管理器部署模型中获取 ARP 表

验证 BGP 以及 MSEE 上的路由

要在专用路由上下文的主要路径上从 MSEE 检索路由表,请使用以下命令:

Get-AzExpressRouteCircuitRouteTable -DevicePath Primary -ExpressRouteCircuitName <CircuitName> -PeeringType AzurePrivatePeering -ResourceGroupName <ResourceGroupName>

示例响应:

Network : 10.1.0.0/16
NextHop : 10.17.17.141
LocPrf  :
Weight  : 0
Path    : 65515

Network : 10.1.0.0/16
NextHop : 10.17.17.140*
LocPrf  :
Weight  : 0
Path    : 65515

Network : 10.2.20.0/25
NextHop : 172.16.0.1
LocPrf  :
Weight  : 0
Path    : 123##

注意

如果 MSEE 与 CE/PE-MSEE 之间的 eBGP 对等互连状态为“活动”或“空闲”,请验证主要和辅助对等子网是否与链接的 CE/PE-MSEE 上的配置相匹配。 确保 MSEE 上的 VlanIdAzureASNPeerASN 值正确,并匹配链接的 CE/PE-MSEE 上的值。 如果使用 MD5 哈希,则 MSEE 和 CE/PE-MSEE 对上的共享密钥必须相同。 有关 MSEE 路由器上的配置更改,请参阅创建和修改 ExpressRoute 线路的路由

注意

如果无法通过对等互连访问某些目标,请检查相应对等互连上下文的 MSEE 路由表。 如果存在匹配的前缀,请确保没有防火墙、网络安全组或 ACL 阻止流量。

不存在的对等互连的示例响应:

Get-AzExpressRouteCircuitRouteTable : The BGP Peering AzurePublicPeering with Service Key <ServiceKey> is not found.
StatusCode: 400

确认流量流

要获取对等互连上下文的流量统计信息(传入和传出字节数),请使用以下命令:

Get-AzExpressRouteCircuitStats -ResourceGroupName <ResourceGroupName> -ExpressRouteCircuitName <CircuitName> -PeeringType 'AzurePrivatePeering'

示例输出:

PrimaryBytesIn PrimaryBytesOut SecondaryBytesIn SecondaryBytesOut
-------------- --------------- ---------------- -----------------
    240780020       239863857        240565035         239628474

不存在的对等互连的示例输出:

Get-AzExpressRouteCircuitRouteTable : The BGP Peering AzurePublicPeering with Service Key <ServiceKey> is not found.
StatusCode: 400

测试专用对等互连

通过计算在 MSEE 设备上到达和离开 ExpressRoute 线路的 Microsoft 边缘的数据包来测试专用对等互连连接。 此诊断工具使用 ACL 对命中特定规则的数据包进行计数,以确认连接。

运行测试

  1. 在 Azure 门户中,从 ExpressRoute 线路中选择“诊断和解决问题”

    “诊断和解决问题”按钮。

  2. 选择“连接性和性能问题”。

    连接问题选项。

  3. 在“告诉我们你遇到问题的详细信息”下拉列表中,选择“专用对等互连问题”。

    “告诉我们更多信息”下拉列表。

  4. 展开“测试专用对等互连连接”部分。

    测试专用对等互连选项。

  5. 运行从本地 IP 到 Azure IP 的 PsPing 测试,并在测试期间使它保持运行状态。

  6. 使用步骤 5 中使用的相同 IP 地址填写表单字段,然后选择“提交”并等待显示结果。

    用于调试 ACL 的表单。

解释结果

查看主要和辅助 MSEE 设备的结果:

  • 已在两个 MSEE 上发送和收到匹配项:指示正常的流量入站和出站。 任何损失都是 MSE 的下游。

  • 已收到匹配项但未发送匹配项:流量正在到达 Azure,但不会返回。 检查返回路径路由问题。

  • 已发送匹配项但未收到匹配项:流量正在到达本地,但不会返回到 Azure。 请与提供商合作以进行解析。

  • 一个 MSEE 显示无匹配项,另一个显示良好匹配:指示一个 MSEE 未接收或传递流量。 它可能处于脱机状态。

  • 如果正在测试从本地到 Azure 的 PsPing,收到的结果显示匹配,但发送的结果显示不匹配:该结果表明流量进入 Azure,但未返回本地。 检查返回路径路由问题。 例如,是否向 Azure 播发了相应的前缀? 用户定义的路由 (UDR) 是否覆盖前缀?

  • 如果正在测试从 Azure 到本地的 PsPing,发送的结果显示匹配,但接收的结果显示不匹配:该结果表明流量进入本地,但未返回 Azure。 请与提供商合作,找出流量未通过 ExpressRoute 线路路由到 Azure 的原因。

  • 某个 MSEE 显示没有匹配,但另一个显示匹配良好:此结果表明该 MSEE 没有接收或传递任何流量。 它可能处于脱机状态(例如 BGP/ARP 已关闭)。

    • 可以通过在此路径上的 BGP 会话上播发唯一的 /32 本地路由来运行其他测试以确认不正常的路径。
    • 使用作为本地目标地址播发的唯一 /32 运行“测试专用对等互连连接”,并查看结果以确认路径运行状况。

每台 MSEE 设备的测试结果如以下示例所示:

src 10.0.0.0 dst 20.0.0.0 dstport 3389 (received): 120 matches
src 20.0.0.0 srcport 3389 dst 10.0.0.0 (sent): 120 matches

验证虚拟网络网关的可用性

ExpressRoute 虚拟网络网关管理与 Azure 虚拟网络中专用链接服务和专用 IP 的连接。 Microsoft 会管理此基础结构,并可能执行维护,从而降低性能。

要排查连接问题并检查最近的维护,请:

  1. 在 Azure 门户中,从 ExpressRoute 线路中选择“诊断和解决问题”

    “诊断和解决问题”按钮。

  2. 选择“性能问题”。

    性能问题选项。

  3. 等待诊断运行并解读结果。

    诊断结果。

如果在数据包丢失或延迟期间发生维护,可能会导致连接问题。 请遵循建议的步骤,并考虑升级虚拟网络网关 SKU 以支持更高的吞吐量和避免将来出现问题。

后续步骤

有关详细信息或帮助,请查看以下链接: