Compartilhar via

Azure 虚拟网络流量路由

在本文中,您将学习Azure虚拟网络流量路由在Azure、本地和互联网资源之间如何运作。 Azure会自动为Azure virtual network中的每个子网创建路由表,并将系统默认路由添加到表中。 了解流量路由有助于优化连接,并解决Azure环境中的网络问题。 若要详细了解虚拟网络和子网,请参阅 Virtual network 概述。 可以使用 custom 路由替代某些Azure系统路由并将更多自定义路由添加到路由表。 Azure根据子网路由表中的路由规则,路由子网的出站流量。

系统路由

Azure会自动创建系统路由,并将路由分配给virtual network中的每个子网。 无法创建系统路由,也无法删除系统路由,但可以使用自定义路由替代某些系统路由。 Azure为每个子网创建默认系统路由,并在使用特定Azure功能时向特定子网或每个子网添加更多默认路由

默认系统路由

每个路由都包含地址前缀和下一跳类型。 Azure 使用具有匹配地址前缀的路由,当流量从子网向 IP 地址退出时。 详细了解 当多个路由包含相同或重叠前缀时,如何Azure选择路由。 每当创建virtual network时,Azure会自动为virtual network中的每个子网创建以下默认系统路由:

地址前缀 下一跳类型
默认 虚拟网络的唯一性 虚拟网络
默认 0.0.0.0/0 Internet
默认 10.0.0.0/8
默认 172.16.0.0/12
默认 192.168.0.0/16
默认 100.64.0.0/10

上表中列出的下一跃点类型表示Azure如何路由发往所列地址前缀的流量。 下列是下一跳类型的说明:

  • Virtual network:在虚拟网络的地址空间内的地址范围之间路由流量。 Azure在虚拟网络的地址空间中针对定义的每个地址范围创建具有相应地址前缀的路由。 如果virtual network地址空间定义了多个地址范围,Azure为每个地址范围创建单个路由。 默认情况下,Azure在子网之间路由流量。 无需定义路由表或网关,以便Azure在子网之间路由流量。 Azure不会为子网地址范围创建默认路由。 每个子网地址范围都在virtual network地址空间的地址范围内。

  • Internet:将地址前缀指定的流量路由到互联网。 系统默认路由指定 0.0.0.0/0 地址前缀。 如果不替代Azure默认路由,Azure将virtual network内地址范围未指定的任何地址的流量路由到 Internet。 路由设定有例外情况。 如果目标地址用于Azure服务,Azure通过Azure主干网络将流量直接路由到服务,而不是将流量路由到 Internet。 Azure服务之间的流量不会遍历 Internet。 无论虚拟网络位于哪个 Azure 区域,或 Azure 服务的实例部署在哪个 Azure 区域,都无关紧要。 可以使用自定义路由替代 Azure 默认系统路由的 0.0.0.0/0 地址前缀。

  • :系统会将路由到下一个跃点类型的流量丢弃,而不是将其路由到子网外。 Azure会自动为以下地址前缀创建默认路由:

    • 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16:保留在 RFC 1918 中专用。
    • 100.64.0.0/10:在 RFC 6598 中被保留。

    如果在virtual network的地址空间中分配任何以前的地址范围,Azure会自动将路由的下一跃点类型从 None 更改为 Virtual network。 如果将地址范围分配给虚拟网络的地址空间,该范围包含但不同于四个保留地址前缀之一,Azure将删除该前缀的路由,并添加您所添加的地址前缀的路由,Virtual network 作为下一跃点类型。

可选默认路由

Azure为不同的Azure功能创建更多的默认系统路由,但前提是启用这些功能。 根据功能,Azure将创建可选的默认路由到virtual network内的特定子网或virtual network中的所有子网。 下表列出了启用不同功能时,Azure可能会添加的其他系统路由和下一跃点类型。

地址前缀 下一跳类型 将路由添加到虚拟网络中的子网
默认 虚拟网络独特,例如:10.1.0.0/16 虚拟网络对等互连 全部
虚拟网络网关 从本地通过边界网关协议 (BGP) 播发的前缀,或者在本地网关中配置的前缀 虚拟网络网关 全部
默认 多个 VirtualNetworkServiceEndpoint 仅为其启用服务终结点的子网
  • 虚拟网络对等互联:当在两个虚拟网络之间创建虚拟网络对等互联时,系统会在对等互联中涉及的每个虚拟网络的地址空间内为每个地址范围添加路由。 详细了解 虚拟网络对等互连
  • 虚拟网络网关:当虚拟网络网关添加到虚拟网络时,会添加一个或多个将虚拟网络网关列为下一跃点类型的路由。 源也是虚拟网络网关,因为网关会将路由添加到子网。 如果你的本地部署网络网关与虚拟网络网关交换 BGP 路由,系统会为每条路由添加一个路由。 这些路由从本地网络网关传播。 建议将本地路由汇总到可能的最大地址范围,以便将最少数量的路由传播到Azure virtual network网关。 可以传播到 Azure 虚拟网络网关的路由数量有限制。 有关详细信息,请参阅 Azure 限制
  • VirtualNetworkServiceEndpoint:启用服务终结点时,Azure包括特定服务的公共 IP 地址到路由表。 Azure将这些路由仅应用于启用了服务终结点的子网。 Azure服务 IP 地址发生更改时自动更新路由表中的这些地址。 详细了解虚拟网络服务终结点和其支持的服务。

    注意事项

    虚拟网络对等互连VirtualNetworkServiceEndpoint下一跳类型仅添加到通过 Azure Resource Manager 的部署模型创建的虚拟网络中的子网的路由表中。 不会将下一跃点类型添加到与通过经典部署模型创建的虚拟网络子网关联的路由表中。 详细了解 Azure 部署模型

自定义路由

可以通过创建 user-defined 路由(UDR)或在本地网络网关与 Azure virtual network 网关之间交换 BGP 路由来创建自定义路由。

用户定义路由

若要自定义流量路由,不应修改默认路由。 应创建自定义或用户定义的(静态)路由,以替代默认系统路由Azure。 在Azure中创建路由表,然后将路由表关联到零个或多个virtual network子网。 每个子网可以有一个与之关联的路由表,也可以没有。 若要了解可添加到路由表的最大路由数以及每个Azure订阅可以创建的 UDR 表的最大数目,请参阅 Azure 限制

默认情况下,路由表最多可以包含 400 个 UDR。 使用 Azure Virtual Network Manager 路由配置,每个路由表中的用户定义路由 (UDRs) 数量可增加到 1,000 个。 调高的这一限制支持更高级的路由设置。 例如,当您拥有更多辐射虚拟网络时,可以在中心辐射型拓扑中通过防火墙将来自本地数据中心的流量定向到每个辐射虚拟网络。

在你创建路由表并将其与子网关联时,该表的路由将与子网的默认路由组合。 如果存在冲突的路由分配,UDR 将替代默认路由。

可在创建 UDR 时指定下面的下一个跃点类型:

  • 虚拟设备:虚拟设备是通常情况下运行防火墙等网络应用程序的虚拟机。 若要了解可在virtual network中部署的各种预配置网络虚拟设备,请参阅 Azure Marketplace。 使用“虚拟设备”跃点类型创建路由时,也指定下一个跃点 IP 地址。 IP 地址可以是:

    • 附加到虚拟机的网络接口的专用 IP 地址。 任何附加到虚拟机并将网络流量转发至其他地址的网络接口,都必须启用 Azure 的启用 IP 转发选项。 该设置通过Azure禁用网络接口的源和目标检查。 详细了解如何为网络接口启用 IP 转发启用 IP 转发是Azure设置。

      可能需要在虚拟机的作系统中启用 IP 转发,以便设备转发分配给Azure网络接口的专用 IP 地址之间的流量。 如果设备需要将流量路由到公共 IP 地址,那么它必须代理流量或执行网络地址转换 (NAT),将源专用 IP 地址转换为公共 IP 地址。 Azure在将流量发送到 Internet 之前,会执行 NAT 来转换为公共 IP 地址。 若要确定虚拟机中的必需设置,请参阅操作系统或网络应用程序的文档。 若要了解Azure中的出站连接,请参阅 了解出站连接

      注意事项

      将虚拟设备部署到一个子网,此子网与通过虚拟设备进行路由的资源所在的子网不同。 如果将虚拟设备部署到同一子网,然后将路由表应用到通过虚拟设备路由流量的子网,则可能导致路由循环,使流量无法离开子网。

      下一跃点专用 IP 地址必须具有直接连接,而无需通过 Azure ExpressRoute 网关或通过Azure Virtual WAN进行路由。 将下一个跃点设置为不带直接连接的 IP 地址会导致 UDR 配置无效。

    • Azure 内部负载均衡器的专用 IP 地址。 负载均衡器通常用作网络虚拟设备的高可用性策略的一部分。

    可以定义一个地址前缀为 0.0.0.0/0 的路由和虚拟设备的下一个跃点类型。 此配置允许设备检查流量,并确定是转发还是丢弃流量。 若要创建包含 0.0.0.0/0 地址前缀的 UDR,请先阅读 0.0.0.0/0 地址前缀

  • 虚拟网络网关:用户定义的路由具有下一跃点类型为虚拟网络网关,允许将流量路由到虚拟网络的网关。 基于您的部署,虚拟网络具有由底层软件定义网络平台自动设置的单个网关。 仅当虚拟网络的网关是 VPN 网关(而不是 ExpressRoute、RouteServer 或虚拟广域网中心路由器)时,才支持用户定义路由具有下一跃点虚拟网络网关。

  • :当您要丢弃流向某个地址前缀的流量,而不是将其转发到目标时,请指定此项。 如果某个功能未配置,Azure可能会显示某些可选系统路由的None。 例如,如果看到 下一跃点 IP 地址 显示 下一跃点类型 显示 虚拟网络网关虚拟设备,这可能是因为设备未运行或未完全配置。 Azure为保留地址前缀创建系统默认路由,并将None用作下一跃点类型。

  • Virtual network:如果要重写虚拟网络中的默认路由,请指定 Virtual network 选项。 有关使用 Virtual network 跃点类型创建路由的示例,请参阅 Routing 示例

  • Internet:如果要将发往某个地址前缀的流量显式路由到 Internet,请指定“Internet”选项。 或者,如果希望发往具有公共 IP 地址的 Azure 服务的流量保持在 Azure 主干网络中,请使用它。

不能将 虚拟网络对等互连VirtualNetworkServiceEndpoint 指定为 UDR 中的下一跳类型。 Azure 仅当您配置虚拟网络对等互连或服务终结点时,创建具有虚拟网络对等互连VirtualNetworkServiceEndpoint下一跃点类型的路由。

用户定义路由的服务标记

现可将服务标记指定为 UDR 的地址前缀,而不是显式 IP 范围。 服务标记表示来自特定Azure服务的一组 IP 地址前缀。 Microsoft 会管理服务标记包含的地址前缀,并会在地址发生更改时自动更新服务标记。 这支持将频繁更新 UDR 的复杂性降到最低,并减少需要创建的路由数量。 目前,可在每个路由表中创建不超过 25 个具有服务标记的路由。 在此版本中,还支持在容器的路由方案中使用服务标记。

完全匹配

如果在具有显式 IP 前缀的路由和具有服务标记的路由之间存在精确的前缀匹配,系统将优先考虑具有显式前缀的路由。 如果带服务标记的多个路由具有匹配的 IP 前缀,会按以下顺序评估路由:

  1. 区域标记(例如,Storage.ChinaEast)

  2. 顶级标记(例如,StorageAppService

  3. AzureCloud 区域标记(例如 AzureCloud.ChinaEast)

  4. AzureCloud 标记

s

若要使用此功能,请在路由表命令中指定地址前缀参数的服务标记名称。 例如,在 PowerShell 中,可以使用以下命令创建一个新路由,以将发送到Azure Storage IP 前缀的流量定向到虚拟设备:

$param = @{
    Name = 'StorageRoute'
    AddressPrefix = 'Storage'
    NextHopType = 'VirtualAppliance'
    NextHopIpAddress = '10.0.100.4'
}
New-AzRouteConfig @param

Azure CLI的相同命令是:

az network route-table route create \
    --resource-group MyResourceGroup \
    --route-table-name MyRouteTable \
    --name StorageRoute \
    --address-prefix Storage \
    --next-hop-type VirtualAppliance \
    --next-hop-ip-address 10.0.100.4

跨Azure工具的下一跃点类型

显示和引用的下一跳类型名称在 Azure 门户、命令行工具,以及资源管理器和经典部署模型之间是不同的。 下表列出了在不同工具和部署模型中用于指代每个下一跳类型的名称:

下一跳类型 Azure CLI和 PowerShell (Resource Manager) Azure经典 CLI 和 PowerShell (经典)
虚拟网络网关 VirtualNetworkGateway VPNGateway
虚拟网络 VNetLocal VNETLocal(不适用于经典部署模型模式下的经典 CLI)
Internet Internet Internet(不适用于经典部署模型模式下的经典 CLI)
虚拟设备 VirtualAppliance VirtualAppliance
Null(在经典部署模型模式下的经典 CLI 中不可用)
虚拟网络对等互连 虚拟网络对等互连 不适用
虚拟网络服务终结点 VirtualNetworkServiceEndpoint 不适用

边界网关协议 (BGP)

本地网络网关可以使用 BGP 与 Azure 虚拟网络网关交换路由。 在创建 Azure 虚拟网络网关时,使用 BGP 取决于您选择的网关类型:

  • ExpressRoute:必须使用 BGP 将本地路由播发到 Microsoft 数据中心内的边缘路由器。 如果您将虚拟网络网关部署为 ExpressRoute 类型,则无法创建用户定义路由 (UDR) 来强制流量通过 ExpressRoute 虚拟网络网关。 例如,可以使用 UDR 强制来自 ExpressRoute 的流量到达网络虚拟设备。
  • VPN:可以选择性地使用 BGP。 有关详细信息,请参阅 BGP 与站点到站点 VPN 连接配合使用

使用 BGP 与 Azure 交换路由时,会为每个通告前缀在虚拟网络中所有子网的路由表中添加一条单独的路由。 使用虚拟网络网关作为源和下一跃点类型来添加路由。

可以使用路由表中的属性禁用 ExpressRoute 和Azure VPN Gateway子网上的路由传播。 禁用路由传播时,系统不会将路由添加到禁用了虚拟网络网关路由传播的所有子网的路由表中。 此过程适用于静态路由和 BGP 路由。 通过使用下一跃点类型为虚拟网络网关自定义路由,实现与 VPN 的连接。 有关详细信息,请参阅 禁用虚拟网络网关路由传播

注意事项

GatewaySubnet 上不应关闭路由传送。 如果禁用此设置,则网关不起作用。

Azure如何选择流量路由

从子网发送出站流量时,Azure使用最长前缀匹配算法根据目标 IP 地址选择路由。 例如,一个路由表有两个路由。 一个路由指定 10.0.0.0/24 地址前缀,另一个路由指定 10.0.0.0/16 地址前缀。

Azure将目的地址为 10.0.0.5 的流量引导至路由中指定的下一跳类型,其地址前缀为 10.0.0.0/24。 发生此过程是因为 10.0.0.0/24 的前缀比 10.0.0.0/16 长,即使 10.0.0.5 在这两个地址前缀之内。

Azure将流向 10.0.1.5 的流量重定向到在路由中指定的下一跃点类型,其地址前缀为 10.0.0.0/16。 发生此过程是因为 10.0.0.0/24 地址前缀中不包含 10.0.1.5,这使得具有 10.0.0.0/16 地址前缀的路由成为最长匹配的前缀。

如果多个路由包含相同的地址前缀,Azure根据以下优先级选择路由类型:

  1. 用户定义的路由

  2. BGP 路由

  3. 系统路由

注意事项

与虚拟网络、虚拟网络对等互连或虚拟网络服务终结点相关的流量,其系统路由被视为首选路由。 即使 BGP 路由更具体,它们也是首选路由。 使用虚拟网络服务终端作为下一跳类型的路由无法被覆盖, 即使使用路由表也是如此。

例如,路由表包含以下路由:

地址前缀 下一跳类型
默认 0.0.0.0/0 Internet
用户 0.0.0.0/0 虚拟网络网关

当流量发往路由表中任何其他路由的地址前缀之外的 IP 地址时,Azure选择具有 User 源的路由。 Azure这样做是因为 UDR 的优先级高于系统默认路由。

如需提供了路由说明的全面路由表,请参阅路由示例

0.0.0.0/0 地址前缀

具有 0.0.0.0/0 地址前缀的路由用于向 Azure 提供指示。 Azure使用这些说明路由发往 IP 地址的流量,该地址不属于子网路由表中任何其他路由的地址前缀。 创建子网时,Azure 会创建一个到 0.0.0.0/0 地址前缀的 默认 路由,其中 Internet 是下一跳类型。 如果不重写此路由,那么对于那些未包含在任何其他路由的地址前缀中的 IP 地址,Azure 会将所有流量路由到互联网。

例外情况是,Azure服务的公共 IP 地址的流量保留在Azure主干网络上,不会路由到 Internet。 当您使用自定义路由替代此路由时,将流量定向到所有不在路由表中任何其他路由地址前缀范围内的目标地址。 目标取决于您是在自定义路由中指定网络虚拟设备还是虚拟网络网关。

重写 0.0.0.0/0 地址前缀时,来自子网的出站流量将流经虚拟网络网关或虚拟设备。 Azure默认路由也会发生以下更改:

  • Azure将所有流量发送到路由中指定的下一跳类型,包括发往Azure服务的公共IP地址的流量。

    当具有 0.0.0.0/0 地址前缀的路由的下一跃点类型Internet时,从子网发出的、指向Azure服务公共IP地址的流量永远不会离开Azure主干网络,而不管虚拟网络或Azure服务资源所在的Azure区域。

    使用 虚拟网络网关虚拟设备 创建 UDR 或 BGP 路由时,所有流量都会发送到路由中指定的下一跳类型。 包括发送到 Azure 服务的尚未启用服务终结点的公共 IP 地址的流量。

    为服务启用服务终结点时,Azure创建具有服务地址前缀的路由。 发往服务的流量不会路由到地址前缀为 0.0.0.0/0 的路由中的下一个跃点类型。 服务的地址前缀长于 0.0.0.0/0。

  • 不能再直接地从互联网访问该子网中的资源。 可以通过 Internet 间接访问子网中的资源。 地址前缀为 0.0.0.0/0 的路由的下一个跃点类型指定的设备必须处理入站流量。 流量穿过设备后,将到达虚拟网络中的资源。 如果路由包含下一个跃点类型的以下值:

    • 虚拟设备:设备必须:

      • 可从 Internet 访问。
      • 被分配了公共 IP 地址。
      • 不应存在与网络安全组关联并阻止设备通信的规则。
      • 不否认通信。
      • 能够对流量进行网络地址转换和转发,或代理传送到子网中目标资源,同时能够将流量返回到 Internet。
    • 虚拟网络网关:如果网关是 ExpressRoute 虚拟网络网关,则通过 ExpressRoute 专用对等互连,本地连接到互联网的设备可以将流量进行网络地址转换和转发,或代理到子网中的目标资源。

如果虚拟网络已连接到 Azure VPN 网关,请不要将路由表关联到 网关子网,其中包括目标为 0.0.0.0/0 的路由。 这样做可能会阻止网关正常工作。 有关详细信息,请参阅 为什么我的VPN网关上会打开某些端口?

路由示例

为了说明本文中的概念,下述部分介绍了:

  • 带有要求的场景。
  • 满足要求所必需的自定义路由。
  • 为一个子网设置的路由表,其中包括满足要求所必需的默认路由和自定义路由。

注意事项

不应将此示例作为建议或最佳做法来实现。 此示例仅用于说明本文中的概念。

要求

  1. 在同一Azure区域中实现两个虚拟网络,并使资源能够在虚拟网络之间通信。

  2. 允许本地网络以安全方式通过 Internet 上的 VPN 隧道与两个虚拟网络通信。 或者,可以使用 ExpressRoute 连接,但此示例使用 VPN 连接。

  3. 对于一个virtual network中的一个子网:

    • 将子网的所有出站流量路由通过网络虚拟设备,以便进行检查和日志记录。 从此路由中排除流向Azure Storage和子网中的流量。
    • 不检查子网中的专用 IP 地址之间的流量。 允许流量在所有资源之间直接流动。
    • 丢弃任何发往其他虚拟网络的出站流量。
    • 启用外部流量直接流向 Azure 存储,而不必强制通过网络虚拟设备。
  4. 允许所有其他子网和虚拟网络之间的所有流量。

实现

下图显示了通过满足上述要求的Resource Manager部署模型实现。

显示网络实现的图示。

箭头显示流量方向。

路由表

下面是上述路由示例的路由表。

Subnet1

上图中 Subnet1 的路由表包含以下路由:

ID 状态 地址前缀 下一跳类型 下一跳 IP 地址 UDR 名称
1 默认 无效 10.0.0.0/16 虚拟网络
2 用户 活跃 10.0.0.0/16 虚拟设备 10.0.100.4 Within-VNet1
3 用户 活跃 10.0.0.0/24 虚拟网络 Within-Subnet1
4 默认 无效 10.1.0.0/16 虚拟网络对等互连
5 默认 无效 10.2.0.0/16 虚拟网络对等互连
6 用户 活跃 10.1.0.0/16 ToVNet2-1-Drop
7 用户 活跃 10.2.0.0/16 ToVNet2-2-Drop
8 默认 无效 10.10.0.0/16 虚拟网络网关 [X.X.X.X]
9 用户 活跃 10.10.0.0/16 虚拟设备 10.0.100.4 To-On-Prem
10 默认 活跃 [X.X.X.X] VirtualNetworkServiceEndpoint
11 默认 无效 0.0.0.0/0 Internet
12 用户 活跃 0.0.0.0/0 虚拟设备 10.0.100.4 Default-NVA

下面是对每个路由 ID 的说明:

  • ID1:Azure自动为 virtual-network-1,因为 10.0.0.0/16 是virtual network地址空间中定义的唯一地址范围。 如果未在路由 ID2 中创建 UDR,则发送到 10.0.0.1 到 10.0.255.254 范围内任何地址的流量会在虚拟网络内路由。 发生此过程是因为前缀长于 0.0.0.0/0,并且不在任何其他路由的地址前缀内。

    添加 ID2(一个用户定义路由,UDR)时,Azure 自动将状态从 Active 更改为 Invalid。 它具有与默认路由相同的前缀,UDR 会替代默认路由。 对于 Subnet2 来说,此路由的状态仍然为“活动”,因为 ID2 (UDR) 所在的路由表未关联到 Subnet2。

  • ID2:当与 10.0.0.0/16 地址前缀关联的UDR与Virtual-network-1虚拟网络中的Subnet1子网关联时,Azure添加了此路由。 UDR 指定了 10.0.100.4 作为虚拟设备的 IP 地址,因为该地址是分配到虚拟设备虚拟机的专用 IP 地址。 此路由所在的路由表未关联到 Subnet2,因此路由未出现在 Subnet2 的路由表中。

    此路由覆盖了 10.0.0.0/16 前缀(ID1)的默认路由,该默认路由会自动将目的地址为 10.0.0.1 和 10.0.255.254 的流量在虚拟网络内通过虚拟网络下一跳类型进行路由。 此路由存在是为了满足要求 3,它强制所有出站流量流经虚拟设备。

  • ID3:当 10.0.0.0/24 地址前缀的 UDR 关联到 Subnet1 子网时,Azure 添加了此路由。 发往 10.0.0.1 与 10.0.0.254 之间地址的流量保留在子网中。 流量不会路由到上一个规则 (ID2) 中指定的虚拟设备,因为它的前缀比 ID2 路由长。

    此路由未关联到 Subnet2,因此未出现在 Subnet2 的路由表中。 对于 Subnet1 中的流量,此路由有效地替代了 ID2 路由。 此路由存在的原因是为了满足要求 3。

  • ID4:Azure 在 Virtual-network-1Virtual-network-2 对等互连时,自动为 Virtual-network-1 中的所有子网在 ID 4 和 5 中添加了路由。Virtual-network-2 的地址空间中有两个地址范围:10.1.0.0/16 和 10.2.0.0/16,因此 Azure 为每个范围添加了路由。 如果未在路由 ID 6 和 7 中创建 UDR,则发送到 10.1.0.1-10.1.255.254 和 10.2.0.1-10.2.255.254 之间任何地址的流量会被路由到对等虚拟网络。 发生此过程是因为前缀长于 0.0.0.0/0,并且不在任何其他路由的地址前缀内。

    在 ID 6 和 7 中添加路由时,Azure会自动将状态从 Active 更改为 Invalid。 发生此过程是因为它们具有与 ID 4 和 5 中的路由相同的前缀,并且 UDR 替代了默认路由。 对于 Subnet2 来说,ID 4 和 5 中路由的状态仍然为“活动”,因为 ID 6 和 7 中的 UDR 所在的路由表未关联到 Subnet2。 创建了虚拟网络对等互连以满足 要求 1。

  • ID5:与 ID4 的说明相同。

  • ID6:当为 10.1.0.0/16 和 10.2.0.0/16 地址前缀关联 UDR 到 Subnet1 子网时,Azure 添加了此路由以及 ID7 中的路由。 Azure丢弃发往地址10.1.0.1到10.1.255.254和10.2.0.1到10.2.255.254之间的流量,而不是将其路由到对等的虚拟网络,因为UDR会替代默认路由。 这些路由未关联到 Subnet2,因此未出现在 Subnet2 的路由表中。 对于离开 Subnet1 的流量,这些路由替代 ID4 和 ID5 路由。 ID6 和 ID7 路由的存在是为了满足 要求 3,以丢弃发往其他虚拟网络的流量。

  • ID7:与 ID6 的说明相同。

  • ID8:在 Virtual-network-1 中创建VPN类型的虚拟网络网关时,Azure 会自动添加该路由。 Azure将virtual network网关的公共 IP 地址添加到路由表。 发送到 10.10.0.1 和 10.10.255.254 之间的任何地址的流量将路由到virtual network网关。 此前缀比 0.0.0.0/0 长,并且不在任何其他路由的地址前缀之内。 已创建虚拟网络网关以满足 要求 2。

  • ID9:将 10.10.0.0/16 地址前缀的 UDR 添加到与 Subnet1 关联的路由表中时,Azure添加了此路由。 此路由替代 ID8。 此路由会将所有目标是本地网络的流量发送到网络虚拟设备进行检查,而不是直接将流量路由至本地。 创建此路由是为了满足要求 3。

  • ID10:为子网启用服务 Azure终结点时,Azure会自动将此路由添加到子网。 Azure通过Azure基础结构网络将流量从子网路由到服务的公共 IP 地址。 此前缀比 0.0.0.0/0 长,并且不在任何其他路由的地址前缀之内。 创建了一个服务终结点以满足 要求 3,使发往Azure Storage的流量直接流向Azure Storage。

  • ID11:Azure自动将此路由添加到 Virtual-network-1 中的所有子网的路由表< /c1> 和 Virtual-network-2. 0.0.0/0 地址前缀是最短前缀。 发送到地址前缀更长部分的流量将根据其他路由进行路由。

    默认情况下,Azure会将所有未在其他路由中指定的目标地址的流量路由到互联网。 Azure自动将Subnet1子网的状态从Active更改为Invalid,当0.0.0.0/0地址前缀(ID12)的UDR关联到该子网时。 对于这两个虚拟网络中的所有其他子网,此路由的状态仍为“活动”,因为此路由未关联到任何其他虚拟网络中的任何其他子网。

  • ID12:当 0.0.0.0/0 地址前缀的 UDR 与 Subnet1 子网关联时,Azure添加了此路由。 UDR 指定了 10.0.100.4 作为虚拟设备的 IP 地址。 此路由未关联到 Subnet2,因此未出现在 Subnet2 的路由表中。 未包括在任何其他路由的地址前缀中的所有地址的流量都会发送到虚拟设备。

    对于 Subnet1,添加此路由后,地址前缀为 0.0.0.0/0 的默认路由 (ID11) 的状态就从“活动”变成了“无效”,因为 UDR 会替代默认路由。 此路由存在的原因是为了满足要求 3。

Subnet2

上图中 Subnet2 的路由表包含以下路由:

状态 地址前缀 下一跳类型 下一跳 IP 地址
默认 活跃 10.0.0.0/16 虚拟网络
默认 活跃 10.1.0.0/16 虚拟网络对等互连
默认 活跃 10.2.0.0/16 虚拟网络对等互连
默认 活跃 10.10.0.0/16 虚拟网络网关 [X.X.X.X]
默认 活跃 0.0.0.0/0 Internet
默认 活跃 10.0.0.0/8
默认 活跃 100.64.0.0/10
默认 活跃 192.168.0.0/16

Subnet2 的路由表包含所有由 Azure 创建的默认路由、可选的虚拟网络对等互连和虚拟网络网关的可选路由。 Azure在将网关和对等连接引入虚拟网络时,还向该虚拟网络中的所有子网添加了可选路由。

Azure删除了10.0.0.0/8、192.168.0.0/16和100.64.0.0/10地址前缀的路由, 当0.0.0.0/0地址前缀的UDR被添加到Subnet1路由表时。