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

教程:使用 Azure 门户通过路由表路由网络流量

默认情况下,Azure 会在虚拟网络中的所有子网之间路由流量。 可以创建自己的路由来覆盖 Azure 的默认路由。 自定义路由非常有用,例如,它可以让你通过网络虚拟设备 (NVA) 在子网之间路由流量。

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

  • 创建虚拟网络和子网
  • 创建用于流量路由的 NVA
  • 将虚拟机 (VM) 部署到不同子网
  • 创建路由表
  • 创建路由
  • 将路由表关联到子网
  • 通过 NVA 将从一个子网的流量路由到另一个子网

本教程使用 Azure 门户。 也可以使用 Azure CLIPowerShell 完成此操作。

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

概述

此图显示了在本教程中创建的资源以及预期的网络路由。

此图显示了本教程中使用的公共、专用和 NVA 虚拟机的交互概述。

先决条件

  • Azure 订阅

登录 Azure

登录 Azure 门户

创建虚拟网络

在本部分,需创建一个虚拟网络、三个子网和一个堡垒主机。 你将使用堡垒主机安全地连接到虚拟机。

  1. 在 Azure 门户菜单中,选择“+ 创建资源”>“网络”>“虚拟网络”,或者在门户搜索框中搜索“虚拟网络”。

  2. 选择“创建”。

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

    设置 Value
    订阅 选择订阅。
    资源组 选择“新建”,输入 myResourceGroup 。
    选择“确定”。
    名称 输入 myVirtualNetwork。
    区域 选择“美国东部”。
  4. 选择“IP 地址”选项卡,或选择页面底部的“下一步: IP 地址”按钮。

  5. 在“IPv4 地址空间”中,选择现有地址空间,并将其更改为 10.0.0.0/16

  6. 选择“+ 添加子网”,然后输入“公共”作为“子网名称”,输入 10.0.0.0/24 作为“子网地址范围”。

  7. 选择 添加

  8. 选择“+ 添加子网”,然后输入“专用”作为“子网名称”,输入 10.0.1.0/24 作为“子网地址范围”。

  9. 选择 添加

  10. 选择“+ 添加子网”,然后输入“外围网络”作为“子网名称”,输入 10.0.2.0/24 作为“子网地址范围”。

  11. 选择 添加

  12. 选择“安全性”选项卡,或者选择“下一步: 安全性”按钮(位于页面底部)。

  13. 在“BastionHost”下,选择“启用” 。 输入此信息:

    设置
    Bastion 名称 输入“myBastionHost”。
    AzureBastionSubnet 地址空间 输入“10.0.3.0/24”。
    公共 IP 地址 选择“新建”。
    对于“名称”,请输入“myBastionIP”。
    选择“确定”。
  14. 选择“查看 + 创建”选项卡,或选择“查看 + 创建”按钮。

  15. 选择“创建”。

创建 NVA 虚拟机

网络虚拟设备 (NVA) 是帮助提供网络功能(例如路由和防火墙优化)的虚拟机。 在本部分,需使用 Windows Server 2019 Datacenter 虚拟机创建 NVA。 如果需要,可以选择不同的操作系统。

  1. 在 Azure 门户菜单中,选择“创建资源”>“计算”>“虚拟机”,或者在门户搜索框中搜索“虚拟机”。

  2. 选择“创建”。

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

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    虚拟机名称 输入“myVMNVA”。
    区域 选择“(US)美国东部”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准”。
    映像 选择“Windows Server 2019 Datacenter - Gen2”。
    Azure Spot 实例 请选择“否”。
    大小 选择 VM 大小或采用默认设置。
    管理员帐户
    用户名 输入用户名。
    Password 输入密码。 密码必须至少 12 个字符长,且符合定义的复杂性要求
    确认密码 重新输入密码。
    入站端口规则
    公共入站端口 选择“无”。
  4. 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。

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

    设置
    网络接口
    虚拟网络 选择“myVirtualNetwork”。
    子网 选择“外围网络”
    公共 IP 选择“无”
    NIC 网络安全组 选择“基本”
    公共入站端口网络 选择“无”。
  6. 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮。

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

创建公共和专用虚拟机

需在 myVirtualNetwork 虚拟网络中创建两个虚拟机,然后在这些虚拟机上允许 Internet 控制消息协议 (ICMP),以便使用 tracert 工具来跟踪流量。

注意

对于生产环境,我们不建议允许通过 Windows 防火墙的 ICMP。

创建公共虚拟机

  1. 在 Azure 门户菜单中,选择“创建资源”>“计算”>“虚拟机”。

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

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    虚拟机名称 输入“myVMPublic”。
    区域 选择“(US)美国东部”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准”。
    映像 选择“Windows Server 2019 Datacenter - Gen2”。
    Azure Spot 实例 请选择“否”。
    大小 选择 VM 大小或采用默认设置。
    管理员帐户
    用户名 输入用户名。
    Password 输入密码。 密码必须至少 12 个字符长,且符合定义的复杂性要求
    确认密码 重新输入密码。
    入站端口规则
    公共入站端口 选择“无”。
  3. 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。

  4. 在“网络”选项卡中,选择或输入:

    设置
    网络接口
    虚拟网络 选择“myVirtualNetwork”。
    子网 选择“公共”。
    公共 IP 选择“无”。
    NIC 网络安全组 选择“基本”。
    公共入站端口网络 选择“无”。
  5. 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮 。

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

创建专用虚拟机

  1. 在 Azure 门户菜单中,选择“创建资源”>“计算”>“虚拟机”。

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

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    虚拟机名称 输入“myVMPrivate”。
    区域 选择“(US)美国东部”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准”。
    映像 选择“Windows Server 2019 Datacenter - Gen2”。
    Azure Spot 实例 请选择“否”。
    大小 选择 VM 大小或采用默认设置。
    管理员帐户
    用户名 输入用户名。
    Password 输入密码。 密码必须至少 12 个字符长,且符合定义的复杂性要求
    确认密码 重新输入密码。
    入站端口规则
    公共入站端口 选择“无”。
  3. 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。

  4. 在“网络”选项卡中,选择或输入:

    设置
    网络接口
    虚拟网络 选择“myVirtualNetwork”。
    子网 选择“专用”
    公共 IP 选择“无”。
    NIC 网络安全组 选择“基本”。
    公共入站端口网络 选择“无”。
  5. 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮 。

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

在 Windows 防火墙中允许 ICMP

  1. 选择“转到资源”或在门户搜索框中“搜索“myVMPrivate”。

  2. 在“myVMPrivate”的“概述”页上,选择“连接”,然后选择“堡垒”。

  3. 输入以前为 myVMPrivate 虚拟机创建的用户名和密码。

  4. 选择“连接”按钮。

  5. 连接后,打开 Windows PowerShell。

  6. 输入以下命令:

    New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4
    
  7. 在 PowerShell 中,打开与 myVMPublic 虚拟机的远程桌面连接:

    mstsc /v:myvmpublic
    
  8. 连接到 myVMPublic VM 后,打开 Windows PowerShell 并输入步骤 6 中的同一命令。

  9. 关闭与 myVMPublic VM 的远程桌面连接。

启用 IP 转发

若要通过 NVA 路由流量,请在 Azure 和 myVMNVA 虚拟机的操作系统中启用 IP 转发。 启用 IP 转发后,myVMNVA VM 收到的任何发往不同 IP 地址的流量都不会被丢弃,而是会被转发到正确的目标。

在 Azure 中启用 IP 转发

在本部分,需为 Azure 中的 myVMNVA 虚拟机的网络接口启用 IP 转发。

  1. 在门户搜索框中搜索“myVMNVA”。

  2. 在 myVMNVA 概述页中,从“设置”部分选择“网络”。

  3. 在 myVMNVA 的“网络”页中,选择“网络接口:”旁边的网络接口。 该接口的名称以 myvmnva 开头。

    显示 Azure 门户中网络虚拟设备虚拟机的“网络”页的屏幕截图。

  4. 在网络接口概述页上的“设置”部分,选择“IP 配置”。

  5. 在“IP 配置”页中,将“IP 转发”设置为“已启用”,然后选择“保存” 。

    显示 Azure 门户中启用的“IP 转发”的屏幕截图。

在操作系统中启用 IP 转发

在本部分,需为 myVMNVA 虚拟机的操作系统启用 IP 转发,以转发网络流量。 你将使用与 myVMPrivate VM 之间的同一堡垒连接(已在前面的步骤中启动),来打开与 myVMNVA VM 的远程桌面连接。

  1. 在 myVMPrivate VM 上的 PowerShell 中,打开与 myVMNVA VM 的远程桌面连接:

    mstsc /v:myvmnva
    
  2. 连接到 myVMNVA VM 后,打开 Windows PowerShell 并输入以下命令以启用 IP 转发:

    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -Name IpEnableRouter -Value 1
    
  3. 重启 myVMNVA VM。

    Restart-Computer
    

创建路由表

在本部分,需创建一个路由表。

  1. 在 Azure 门户菜单中,选择“+ 创建资源”>“网络”>“路由表”,或在门户搜索框中搜索“路由表”。

  2. 选择“创建”。

  3. 在“创建路由表”的“基本信息”选项卡中,输入或选择以下信息:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    区域 选择“美国东部”。
    名称 输入 myRouteTablePublic
    传播网关路由 请选择“是”。

    显示 Azure 门户中创建路由表的“基本信息”选项卡的屏幕截图。

  4. 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮 。

创建路由

在本部分,需在前面步骤中创建的路由表中创建路由。

  1. 选择“转到资源”或在门户搜索框中搜索“myRouteTablePublic”。

  2. 在“myRouteTablePublic”页中的“设置”部分,选择“路由”。

  3. 在“路由”页中,选择“+ 添加”按钮。

  4. 在“添加路由”中,输入或选择以下信息:

    设置
    路由名称 输入 ToPrivateSubnet
    地址前缀目标 选择“IP 地址”。
    目标 IP 地址/CIDR 范围 输入“10.0.1.0/24”(前面创建的“专用”子网的地址范围)。
    下一跃点类型 选择“虚拟设备”。
    下一跃点地址 输入“10.0.2.4”(前面在“DMZ”子网中创建的 myVMNVA VM 的地址)。

    显示在 Azure 门户中添加路由配置的屏幕截图。

  5. 选择 添加

将路由表关联到子网

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

  1. 在门户搜索框中搜索“myVirtualNetwork”。

  2. 在“myVirtualNetwork”页中的“设置”部分,选择“子网”。

  3. 在虚拟网络的子网列表中,选择“公共”。

  4. 在“路由表”中,选择在前面步骤中创建的“myRouteTablePublic”。

  5. 选择“保存”,将路由表关联到“公共”子网 。

    显示在 Azure 门户中将路由表关联到虚拟网络中的公共子网的屏幕截图。

测试网络流量的路由

请使用 tracert 工具测试从 myVMPublic VM 到 myVMPrivate VM 的网络流量路由,然后测试相反方向的路由。

测试从 myVMPublic VM 到 myVMPrivate VM 的网络流量

  1. 在 myVMPrivate VM 上的 PowerShell 中,打开与 myVMPublic VM 的远程桌面连接:

    mstsc /v:myvmpublic
    
  2. 连接到 myVMPublic VM 后,打开 Windows PowerShell 并输入以下 tracert 命令来跟踪从 myVMPublic VM 到 myVMPrivate VM 的网络流量路由:

    tracert myvmprivate
    

    响应类似于以下示例:

    Tracing route to myvmprivate.q04q2hv50taerlrtdyjz5nza1f.bx.internal.cloudapp.net [10.0.1.4]
    over a maximum of 30 hops:
    
      1     1 ms     *        2 ms  myvmnva.internal.cloudapp.net [10.0.2.4]
      2     2 ms     1 ms     1 ms  myvmprivate.internal.cloudapp.net [10.0.1.4]
    
    Trace complete.
    

    可以看到,对于从 myVMPublic VM 到 myVMPrivate VM 的 tracert ICMP 流量,上述响应中有两个跃点。 第一个跃点是 myVMNVA VM,第二个跃点是目标 myVMPrivate VM。

    Azure 通过 NVA 发送来自“公共”子网的流量,而不是直接发送到“专用”子网,因为之前已将 ToPrivateSubnet 路由添加到 myRouteTablePublic 路由表并将其关联到“公共”子网。

  3. 关闭与 myVMPublic VM 的远程桌面连接。

测试从 myVMPrivate VM 到 myVMPublic VM 的网络流量

  1. 在 myVMPrivate VM 上的 PowerShell 中,输入以下 tracert 命令来跟踪从 myVmPrivate VM 到 myVmPublic VM 的网络流量路由。

    tracert myvmpublic
    

    响应类似于以下示例:

    Tracing route to myvmpublic.q04q2hv50taerlrtdyjz5nza1f.bx.internal.cloudapp.net [10.0.0.4]
    over a maximum of 30 hops:
    
      1     1 ms     1 ms     1 ms  myvmpublic.internal.cloudapp.net [10.0.0.4]
    
    Trace complete.
    

    可以看到上述响应中有一个跃点,即目标 myVMPublic 虚拟机。

    Azure 将流量直接从“专用”子网发送到“公共”子网。 默认情况下,Azure 直接在子网之间路由流量。

  2. 关闭堡垒会话。

清理资源

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

  1. 在 Azure 门户顶部的“搜索”框中输入“myResourceGroup”。 当在搜索结果中看到“myResourceGroup”时,将其选中。

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

  3. 对于“键入资源组名称:”,输入“myResourceGroup”,然后选择“删除”。

后续步骤

在本教程中,你将了解:

  • 创建了一个路由表并将其关联到了某个子网。
  • 创建了一个简单的 NVA,用于将流量从公共子网路由到专用子网。

可以从 Azure 市场部署不同的预配置 NVA,其中提供了许多有用的网络功能。

若要了解有关路由的详细信息,请参阅路由概述管理路由表

若要了解如何通过虚拟网络服务终结点限制对 PaaS 资源的网络访问,请继续学习下一教程。