排查 Azure VM 连接性问题
本文有助于管理员诊断和解决影响 Azure 虚拟机 (VM) 的连接问题。
若要解决这些问题,请按以下部分的步骤操作。
备注
可以使用:
netstat -an
,可列出 VM 正在侦听的端口- PowerShell 中的 Test-NetConnection 模块,可显示连接的诊断信息,例如 ping 测试和 tcp 测试
将 TCping 下载到源 VM。
打开“命令提示”窗口。
导航到 TCping 所下载到的文件夹。
使用以下命令从源 VM ping 目标:
tcping64.exe -t <destination VM address> 3389
提示
如果 ping 测试成功,请转到步骤 3。 否则,请转到下一步。
针对每个 VM,检查默认的“入站端口规则”(“允许 VNet 入站”和“允许负载均衡器入站”)。 确保还检查在优先级较低的规则下没有列出匹配的阻止规则。
备注
编号较小的规则会先进行匹配。 例如,如果有优先级为 1000 和 6500 的规则,则优先级为 1000 的规则会先进行匹配。
然后,尝试再次从源 VM ping 目标:
tcping64.exe -t <destination VM address> 3389
若要通过远程桌面进行连接,请执行以下步骤。
Windows:
- 登录到 Azure 门户。
- 在左侧菜单中,选择“虚拟机” 。
- 在列表中选择虚拟机。
- 在虚拟机的页面上,选择“连接” 。
有关详细信息,请参阅如何连接并登录到运行 Windows 的 Azure 虚拟机。
Linux :
有关详细信息,请参阅连接到 Azure 中的 Linux VM。
如果远程桌面或 SSH 连接成功,请转到下一步。
在源 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": []
},
在收到的连接性检查响应的“跃点”部分,检查列出的问题。
在下表中找到相应的解决方法,按指示的步骤解决问题。
问题类型 Value 解决操作 NetworkSecurityRule 阻止 NSG 的名称 可以删除 NSG 规则,也可以按此处的说明修改该规则。 UserDefinedRoute 阻止 UDR 的名称 如果不需要此路由,请删除 UDR。 如果不能删除此路由,请使用相应的地址前缀和下一跃点更新此路由。 也可调整“网络虚拟设备”,以适当方式转发流量。 有关详细信息,请参阅:虚拟网络流量路由和使用 PowerShell 通过路由表路由网络流量。 CPU 使用情况 按运行 Linux 或 Windows 的 Azure 虚拟机常规性能故障排除中介绍的这些建议操作。 内存 使用情况 按运行 Linux 或 Windows 的 Azure 虚拟机常规性能故障排除中介绍的建议操作。 来宾防火墙 防火墙阻止的名称 执行以下步骤:打开或关闭 Windows Defender 防火墙。 DNS 解析 DNS 的名称 执行以下步骤:Azure DNS 故障排除指南和 Azure 虚拟网络中资源的名称解析。 套接字错误 不适用 指定的端口已由另一应用程序使用。 请尝试使用另一端口。 再次运行连接性检查,确定问题是否已解决。
默认情况下,辅助网络适配器(也称为网络接口卡或网络适配器)未配置为拥有默认网关。 因此,辅助适配器上的通信流会限制在同一子网内。
如果用户要启用辅助网络适配器,以在自己的子网外部通信,则必须在路由表中添加一个条目来配置网关。 为此,请执行以下步骤:
在配置了第二个网络适配器的 VM 上,以管理员身份打开一个命令提示符窗口。
运行以下命令,在路由表中添加此条目:
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
运行 route print。 如果条目已成功添加,则会看到一个如下所示的条目:
现在,尝试连接到辅助网络适配器。 如果连接仍未成功,请转到下一步。
针对主网络适配器和辅助网络适配器,检查两个网络适配器上的默认“入站端口规则”(“允许 VNet 入站”、“允许负载均衡器入站”)。 还应确保优先级较低的规则下没有匹配的阻止规则。
- 运行针对辅助网络适配器的连接性检查。
- 对整个环境运行连接性检查,确保进程能够端到端运行。
若要详细了解如何运行连接性检查,请参阅以下文章:
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": []
},