教程:使用 Azure 门户诊断虚拟机网络路由问题

在本教程中,我们使用 Azure 网络观察程序下一个跃点工具来排查和诊断 VM 路由问题,从而阻止它与其他资源正确通信。 下一个跃点显示自定义路由导致了路由问题。

Diagram shows the resources created in the tutorial.

在本教程中,你将了解如何执行以下操作:

  • 创建虚拟网络
  • 创建两个虚拟机
  • 使用 Azure 网络观察程序的“下一个跃点”功能测试与不同 IP 的通信
  • 查看有效路由
  • 创建自定义路由
  • 诊断路由问题

如果愿意,可以使用教程的 Azure CLIAzure PowerShell 版本来诊断虚拟机网络路由问题。

如果没有 Azure 订阅,请在开始前创建一个试用版订阅

先决条件

  • 具有活动订阅的 Azure 帐户。

创建虚拟网络

在本部分,请创建虚拟网络。

  1. 登录 Azure 门户

  2. 在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。

    Screenshot shows searching for virtual networks in the Azure portal.

  3. 选择“+ 新建”。 在“创建虚拟网络”的“基本信息”选项卡中,输入或选择以下值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择“新建”。
    在“名称”中输入“myResourceGroup” 。
    选择“确定”。
    实例详细信息
    虚拟网络名称 输入“myVNet”。
    区域 选择“(亚太)中国东部”。
  4. 选择“IP 地址”选项卡,或者选择页面底部的“下一步”按钮两次。

  5. 在“IP 地址”选项卡上,输入以下值:

    设置
    IPv4 地址空间 10.0.0.0/16
    子网名称 mySubnet
    子网 IP 地址范围 10.0.0.0 - 10.0.0.255(大小:/24)
  6. 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮。

  7. 检查设置,然后选择“创建”。

创建虚拟机

在本部分,将要创建两个虚拟机:myVM 和 myNVA。 使用 myVM 虚拟机可测试通信。 在此方案中,myNVA 虚拟机用作网络虚拟设备。

创建第一个虚拟机

  1. 在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。

  2. 选择“+ 新建”。

  3. 在“创建虚拟机”中,在“基本信息”选项卡中输入或选择以下值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    虚拟机名称 输入“myVM”。
    区域 选择“中国东部”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准”。
    映像 选择“Windows Server 2022 Datacenter: Azure Edition - x64 Gen2”。
    大小 选择大小或保留默认设置。
    管理员帐户
    用户名 输入用户名。
    Password 输入密码。
    确认密码 重新输入密码。
  4. 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。

  5. 在“网络”选项卡中,输入或选择以下值:

    设置
    网络接口
    虚拟网络 选择“myVNet”。
    子网 选择“mySubnet”
    公共 IP 选择 (new) myVM-ip
    NIC 网络安全组 选择“基本”。
    公共入站端口 选择“允许所选端口” 。
    选择入站端口 选择“RDP (3389)”。

    注意

    建议仅在测试情况下将 RDP 端口设置为对 Internet 开放。 在生产环境下,建议仅限某个特定的 IP 地址或 IP 地址范围才能访问 RDP 端口。 此外,还可以阻止 Internet 访问 RDP 端口,并使用 Azure Bastion 从 Azure 门户安全地连接到虚拟机。

  6. 选择“查看 + 创建”。

  7. 检查设置,然后选择“创建”。

  8. 部署完成后,选择“转到资源”以转到“myVM”的“概述”页面。

  9. 选择“连接”,然后选中“本机 RDP”下的“选择”。

  10. 选择“下载 RDP 文件”,然后打开已下载的文件。

  11. 选择”连接“,然后输入在前面步骤中创建的用户名和密码。 如果出现提示,请接受证书。

  12. 登录后,打开 Web 浏览器并转到 www.bing.com 以验证其是否可访问。

    Screenshot showing Bing page in a web browser.

创建第二个虚拟机

按照前面的步骤 (1-6),使用 myNVA 虚拟机名称来创建第二个虚拟机。

使用网络观察程序的“下一个跃点”测试网络通信

使用网络观察程序的“下一个跃点”功能确定 Azure 在使用哪个路由来路由从 myVM(包含带有一个 IP 配置的一个网络接口)发出的流量

  1. 在门户顶部的搜索框中,输入“网络观察程序”。 在搜索结果中选择“网络观察程序”。

  2. 在“网络诊断工具”下选择“下一个跃点”。 输入或选择下列值:

    设置
    订阅 选择 Azure 订阅。
    资源组 选择“myResourceGroup”。
    虚拟机 选择“myVM”。
    Linux 保留默认值。
    源 IP 地址 输入“10.0.0.4”或 VM 的 IP(如果不同于 10.0.0.4)。
    目标 IP 地址 输入“13.107.21.200”以测试与 www.bing.com 的通信。
  3. 选择“下一个跃点”按钮以开始测试。 测试结果显示有关下一个跃点的信息,例如下一个跃点类型、其 IP 地址以及用于路由流量的路由表 ID。 测试 13.107.21.200 的结果显示下一个跃点类型是“Internet”并且路由表 ID 是“系统路由”,这意味着从 myVM 发往 www.bing.com 的流量是使用 Azure 默认系统路由来路由到 Internet 的。

    Screenshot showing how to test communication to www.bing.com using Azure Network Watcher next hop capability.

  4. 将“目标 IP 地址”更改为 10.0.0.5(myNVA 虚拟机的 IP 地址),然后选择“下一个跃点”按钮。 结果显示,下一个跃点类型为“VirtualNetwork”并且路由表 ID 为“系统路由”,这意味着从 myVM 发往 10.0.0.5 的流量是使用 Azure 默认系统路由在 myVNet 虚拟网络中路由的。

    Screenshot showing Network Watcher next hop result when testing with an IP within the same virtual network.

  5. 接下来,将“目标 IP 地址”更改为 10.1.0.5(这是不在 myVNet 虚拟网络地址空间中的专用 IP 地址),然后选择“下一个跃点”按钮。 结果显示下一个跃点类型为“无”,这意味着从 myVM 发往 10.1.0.5 的流量会被删除。

    Screenshot showing Network Watcher next hop result when testing with a private IP outside the address space of the virtual network.

查看路由详细信息

若要进一步分析路由情况,请查看 myVM 网络接口的有效路由。

  1. 在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。

  2. 在“设置”下选择“网络”,然后选择网络接口。

    Screenshot showing how to select the network interface page from the virtual machine settings in the Azure portal.

  3. 在“帮助”下,选择“有效路由”以查看与 myVM 的网络接口关联的所有路由。

    Screenshot showing Azure default system routes associated with the virtual machine network interface.

    在上一部分中,当使用 13.107.21.200 运行测试时,地址前缀为 0.0.0.0/0 的路由用于将流量路由到该地址,因为没有其他路由具有该地址。 默认情况下,未在另一路由的地址前缀中指定的所有地址都会路由到 Internet。

    使用 10.0.0.5 运行测试时,地址前缀为 10.0.0.0/16 的路由用于将流量路由到它。

    但是,使用 10.1.0.5 运行测试时,结果显示下一个跃点类型为“无”,因为此 IP 地址位于 10.0.0.0/8 地址空间中。 对于 10.0.0.0/8 地址前缀,Azure 默认路由的下一个跃点类型为“无”。 如果将包含 10.1.0.5 的地址前缀添加到虚拟网络地址空间,则 10.1.0.5 的下一个跃点类型将从“无”更改为“VirtualNetwork”。

测试由于自定义路由而导致的路由问题

接下来,请创建一个静态自定义路由来替代 Azure 默认系统路由并导致 myVM 虚拟机出现路由问题,该问题会阻止此虚拟机与 www.bing.com 直接通信。 然后,将使用网络观察程序的“下一个跃点”来排查和诊断问题。

创建自定义路由

在本部分,将在路由表中创建一个静态自定义路由(用户定义的路由),该路由将发往虚拟网络外部的所有流量强制发送到特定 IP 地址。 强制流量发往虚拟网络设备是一种常见情况。

  1. 在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。

  2. 选择“+ 创建”以创建新的路由表。 在“创建路由表”页中,输入或选择以下值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    区域 选择“中国东部”。
    名称 输入“myRouteTable”。
    传播网关路由 保留默认值。
  3. 选择“查看 + 创建”。

  4. 检查设置,然后选择“创建”。

  5. 部署完成后,选择“转到资源”以转到“myRouteTable”的“概述”页面。

  6. 在“设置”下,选择“路由”,然后选择“+ 添加”以添加自定义路由。

  7. 在“添加路由”页上,输入或选择以下值:

    设置
    路由名称 输入“MyRoute”。
    目标类型 选择“IP 地址”。
    目标 IP 地址/CIDR 范围 输入 0.0.0.0/0。
    下一跃点类型 选择“虚拟设备”。
    下一个跃点地址 输入 10.0.0.5。
  8. 选择“添加” 。

将路由表与子网关联

在本部分,需将在前面部分中创建的路由表与 mySubnet 子网关联。

  1. 在“设置”下,选择“子网”,然后选择“+ 关联”以将 myRouteTable 与 mySubnet 子网关联。

  2. 在“关联子网”页中,选择以下值:

    设置
    虚拟网络 选择“myVNet (myResourcegroup)”。
    子网 选择“MySubnet”。
  3. 选择“确定”。

转到 www.bing.com

在 myVM 中,打开 Web 浏览器并转到 www.bing.com 以验证它是否仍可访问。 你已创建并将其与 myVM 的子网关联的自定义路由会强制流量发往 myNVA。 流量会被丢弃,因为出于本教程演示路由问题的目的,myNVA 未设置为转发流量。

Screenshot showing Bing page isn't reachable in a web browser.

使用“下一个跃点”测试网络通信

使用 13.107.21.200 重复你在使用 网络观察程序的“下一个跃点”测试网络通信部分中使用的步骤,以测试与 www.bing.com 的通信。

Screenshot showing virtual appliance as the next hop after applying a custom route.

查看有效路由

使用导致了在访问 www.bing.com 时出现问题的自定义路由后,重复你在查看路由详细信息中使用的步骤以检查有效路由。

前缀为 0.0.0.0/0 的自定义路由替代了 Azure 默认路由,导致发往 myVNet 虚拟机之外的所有流量都流向 10.0.0.5。

Screenshot the effective routes after overriding Azure default system routes using a custom route.

注意

在本教程中,发往 www.bing.com 的流量已被丢弃,因为 myNVA 未设置为转发流量。 若要了解如何设置虚拟机以转发流量,请参阅启用 IP 转发

清理资源

不再需要 myResourceGroup 资源组时,将其及其包含的所有资源删除:

  1. 在门户顶部的搜索框中输入 myResourceGroup。 从搜索结果中选择“myResourceGroup”。

  2. 选择“删除资源组” 。

  3. 在“删除资源组”中,输入 myResourceGroup,然后选择“删除”。

  4. 选择“删除”以确认删除资源组及其所有资源。

下一步

若要了解如何监视两个虚拟机之间的通信,请转到下一篇教程: