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

排除 Azure VM 网络连接问题

本文有助于管理员诊断和解决影响 Azure 虚拟机 (VM) 的连接问题。

问题

若要解决这些问题,请按以下部分的步骤操作。

注意

您可以使用以下内容:

  • netstat -an,可列出 VM 正在侦听的端口
  • PowerShell 中的 Test-NetConnection 模块,可显示连接的诊断信息,例如 ping 测试和 tcp 测试
  • 确保使用 tcping 或其他基于 TCP 的测试工具,因为许多网络设备降低了 ICMP 流量的优先级。 使用 TCP 测试可提供更一致且更可靠的结果,尤其是在 Azure 环境中。

决议

Azure VM 无法连接到同一虚拟网络中的另一个 Azure VM

步骤 1:验证 VM 可以互相通信。

  1. 将 TCping 下载到源 VM。

  2. 打开“命令提示”窗口。

  3. 导航到 TCping 所下载到的文件夹。

  4. 使用以下命令从源 VM 发起 ping 目标操作:

    屏幕截图显示一个连续对 IP 地址执行 ping 操作的命令提示符窗口。

    tcping64.exe -t <destination VM address> 3389
    

提示

如果 ping 测试成功,请转到步骤 3。 否则,请转到下一步。

步骤 2:检查“网络安全组”设置。

对于每个 VM,请检查 “允许 VNet 入站 ”和 “允许负载均衡器入站”的默认入站端口规则。 确保还检查在优先级较低的规则下没有列出匹配的阻止规则。

注意

首先匹配包含的数字较小的规则。 例如,如果你有优先级为 1000 和 6500 的规则,则首先匹配优先级为 1000 的规则。

然后,尝试再次从源 VM ping 目标:

tcping64.exe -t <destination VM address> 3389

步骤 3:检查是否可以通过远程桌面或 SSH 连接到目标 VM。

若要通过远程桌面进行连接,请执行以下步骤。

Windows

  1. 登录到 Azure 门户。
  2. 在左侧菜单中,选择“虚拟机” 。
  3. 在列表中选择虚拟机。
  4. 在虚拟机的页面上,选择“连接” 。

有关详细信息,请参阅如何连接并登录到运行 Windows 的 Azure 虚拟机

Linux :

有关详细信息,请参阅连接到 Azure 中的 Linux VM

如果远程桌面或 SSH 连接成功,请转到下一步。

步骤 4:执行连接性检查。

在源 VM 上运行连接性检查,检查响应。

Windows使用 PowerShell 通过 Azure 网络观察程序检查连接性

Linux :使用 Azure CLI 2.0 通过 Azure 网络观察程序检查连接性

以下是示例响应:

ConnectionStatus : Unreachable
AvgLatencyInMs   :
MinLatencyInMs   :
MaxLatencyInMs   :
ProbesSent       : 100
ProbesFailed     : 100
Hops             : [
                     {
                       "Type": "Source",
                       "Id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
                       "Address": "10.1.1.4",
                       "ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
                   ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurat
                   ions/ipconfig1",
                       "NextHopIds": [
                         "bbbbbbbb-1111-2222-3333-cccccccccccc"
                       ],
                       "Issues": []
                     },
                     {
                       "Type": "VirtualAppliance",
                       "Id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
                       "Address": "10.1.2.4",
                       "ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
                   ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/fwNic/ipConfiguratio
                   ns/ipconfig1",
                       "NextHopIds": [
                         "cccccccc-2222-3333-4444-dddddddddddd"
                       ],
                       "Issues": []
                     },

步骤 5:修复连接性检查结果中的问题。

  1. 在收到的连接性检查响应的“跃点”部分,检查列出的问题。

    连接性响应

  2. 在下表中找到相应的解决方法,按指示的步骤解决问题。

    问题类型 解决措施
    网络安全规则 阻止 NSG 的名称 可以删除 NSG 规则,也可以按此处的说明修改该规则。
    用户自定义路由 阻止 UDR 的名称 如果不需要此路由,请删除 UDR。 如果无法删除该路由,请使用相应的地址前缀和下一个跃点更新它。 也可调整“网络虚拟设备”,以适当方式转发流量。 有关详细信息,请参阅:虚拟网络流量路由使用 PowerShell 通过路由表路由网络流量
    中央处理器 使用情况 运行 Linux 或 Windows 的 Azure 虚拟机常规性能故障排除中介绍的这些建议操作。
    内存 使用情况 运行 Linux 或 Windows 的 Azure 虚拟机常规性能故障排除中介绍的建议操作。
    来宾防火墙 防火墙阻止的名称 按照以下步骤作: 打开或关闭 Windows 防火墙
    DNS 解析 DNS 的名称 执行以下步骤:Azure DNS 故障排除指南Azure 虚拟网络中资源的名称解析
    套接字错误 不适用 指定的端口已由另一应用程序使用。 请尝试使用另一端口。
  3. 再次运行连接性检查,确定问题是否已解决。

Azure VM 无法连接到同一虚拟网络中 Azure VM 的第二个网络适配器

步骤 1:确保启用第二个网络适配器,以便在子网外部通信。

默认情况下,辅助网络适配器(也称为网络接口卡或网络适配器)未配置为具有默认网关。 因此,辅助适配器上的通信流会限制在同一子网内。

IP 配置

如果用户要启用辅助网络适配器,以在自己的子网外部通信,则必须在路由表中添加一个条目来配置网关。 为此,请执行以下步骤:

  1. 在配置了第二个网络适配器的 VM 上,以管理员身份打开一个命令提示符窗口。

  2. 运行以下命令,在路由表中添加此条目:

    Route add 0.0.0.0 mask 0.0.0.0 -p <Gateway IP>
    

    例如,如果第二个 IP 地址为 192.168.0.4,则网关 IP 应该为 192.168.0.1。 必须运行以下命令:

    Route add 0.0.0.0 mask 0.0.0.0 -p 192.168.0.1
    
  3. 运行路由打印。 如果成功添加条目,你将看到如下所示的条目:

    IP 路由

现在,尝试连接到辅助网络适配器。 如果连接仍未成功,请转到下一步。

步骤 2:检查网络适配器的 NSG 设置。

对于主网络适配器和辅助网络适配器,请检查两个网络适配器上的默认“入站端口规则”(“允许 VNet 入站”、“允许负载均衡器入站”)。 还应确保优先级较低的规则下不存在匹配的阻止规则。

屏幕截图显示虚拟机的网络设置,可以在其中看到“允许 Vnet 入站”和“允许 Vnet 出站”。

步骤 3:运行针对辅助网络适配器的连接性检查。

  1. 运行针对辅助网络适配器的连接性检查。
  2. 对整个环境运行连接性检查,确保进程能够端到端运行。

若要详细了解如何运行连接性检查,请参阅以下文章:

Windows使用 PowerShell 通过 Azure 网络观察程序检查连接性

Linux :使用 Azure CLI 2.0 通过 Azure 网络观察程序检查连接性

以下是示例响应:

ConnectionStatus : Unreachable
AvgLatencyInMs   : 
MinLatencyInMs   : 
MaxLatencyInMs   : 
ProbesSent       : 100
ProbesFailed     : 100
Hops             : [
                     {
                       "Type": "Source",
                       "Id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
                       "Address": "10.1.1.4",
                       "ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
                   ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurat
                   ions/ipconfig1",
                       "NextHopIds": [
                         "bbbbbbbb-1111-2222-3333-cccccccccccc"
                       ],
                       "Issues": []
                     },
                     {
                       "Type": "VirtualAppliance",
                       "Id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
                       "Address": "10.1.2.4",
                       "ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
                   ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/fwNic/ipConfiguratio
                   ns/ipconfig1",
                       "NextHopIds": [
                         "cccccccc-2222-3333-4444-dddddddddddd"
                       ],
                       "Issues": []
                     },

步骤 4:参阅步骤 5 下的表,按这些步骤解决问题。

Azure VM 无法连接到 Internet

步骤 1:检查网络适配器是否处于失败状态。

请按照以下步骤检查 NIC 的状态:

  1. 登录到资源浏览器门户。

  2. 在左侧窗格中选择“订阅”。

  3. 在左侧窗格中,选择受影响的网络适配器或 VM 所属的资源组。

  4. 转到“Microsoft 网络”。

  5. 选择“网络接口”选项。

  6. 选择受影响的的网络接口。

  7. 选择门户顶部的“读取/写入”选项。

  8. 选择“编辑”选项。

    网卡 1

    注意

    选择“编辑”选项后,“Get”选项将更改为“Put”选项

    网卡 2

  9. 选择受影响的网络接口,然后选择“Put”选项。

    注意

    完成选择后,“ProvisioningState”将会显示为“正在更新”。 在常规 Azure 资源管理器门户上显示的结果相同。 如果操作成功完成,“ProvisioningState”值将更改为“Succeeded”,如上所示 。

  10. 刷新门户。 网络适配器应处于成功状态。

步骤 2:按照步骤 4 运行连接性检查。

步骤 3:参阅步骤 5 下的表,按这些步骤解决问题。

后续步骤

排查 Azure VM 间的连接问题