配置路由表 - Amazon Virtual Private Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置路由表

路由表包含一组被称为路由的规则,决定了来自您的子网或网关的网络流量将指向何处。

路由表概念

以下是路由表的主要概念。

  • 主路由表 — 随 VPC 自动生成的路由表。它控制未与任何其他路由表显式关联的所有子网的路由。

  • 自定义路由表 — 您为 VPC 创建的路由表。

  • 目的地 — 您希望流量传输到的 IP 地址范围(目的地 CIDR)。例如,具有 CIDR 172.16.0.0/12 的外部公司网络。

  • 目标 — 用于发送目的地流量的网关、网络接口或连接,例如互联网网关。

  • 路由表关联 — 路由表与子网、互联网网关或虚拟私有网关之间的关联。

  • 子网路由表 — 与子网关联的路由表。

  • 本地路由 — VPC 内通信的默认路由。

  • 传播–如果您已将虚拟私有网关连接到 VPC 并启用路由传播,我们会自动将 VPN 连接的路由添加到子网路由表。这意味着 VPN 路由无需手动添加或删除。有关更多信息,请参阅《Site-to-Site VPN 用户指南》中的 Site-to-Site VPN 路由选项

  • 网关路由表 — 与互联网网关或虚拟私有网关关联的路由表。

  • 边缘关联 — 用于将入站 VPC 流量路由到设备的路由表。您需要将路由表与互联网网关或虚拟私有网关相关联,并将设备的网络接口指定为 VPC 流量的目标。

  • 转换网关路由表 – 与转换网关相关联的路由表。有关更多信息,请参阅 Amazon VPC Transit Gateway中的中转网关路由表

  • 本地网关路由表 — 与 Outposts 本地网关相关联的路由表。有关更多信息,请参阅Amazon Outposts 用户指南中的本地网关

子网路由表

VPC 具有隐式路由器,您可以使用路由表来控制网络流量的流向。您的 VPC 中的每个子网必须与一个路由表关联,该路由表控制子网的路由(子网路由表)。您可以将子网与特定路由表显式关联。否则,子网将与主路由表隐式关联。一个子网一次只能与一个路由表关联,但您可以将多个子网与同一子网路由表关联。

路线

表中的每个路由指定一个目的地和一个目标。例如,要使您的子网能够通过互联网网关访问 Internet,请将以下路由添加到子网路由表中。路由的目的地为 0.0.0.0/0,表示所有 IPv4 地址。目标是连接到您的 VPC 的互联网网关。

目标位置 目标
0.0.0.0/0 igw-id

IPv4 和 IPv6 的 CIDR 块是分开处理的。例如,目标 CIDR 为 0.0.0.0/0 的路由不会自动包括所有 IPv6 地址。您必须为所有 IPv6 地址创建目标 CIDR 为 ::/0 的路由。

如果您经常在 Amazon 资源中引用同一组 CIDR 块,则可以创建客户管理的前缀列表将它们分组在一起。然后,您可以在路由表条目中将此前缀列表指定为目的地。

每个路由表都包含一个用于在 VPC 内部通信的本地路由。默认情况下,此路由将添加到所有路由表中。如果您的 VPC 有多个 IPv4 CIDR 块,则路由表为每个 IPv4 CIDR 块包含一个本地路由。如果您已将 IPv6 CIDR 块与 VPC 关联,则路由表为 IPv6 CIDR 块包含一个本地路由。您可以根据需要替换或恢复每个本地路由的目标。

规则和注意事项
  • 您可以在您的路由表中添加比本地路由更具体的路由。目的地必须匹配 VPC 中子网的整个 IPv4 或 IPv6 CIDR 块。目标必须是 NAT 网关、网络接口或网关负载均衡器终端节点。

  • 如果您的路由表有多个路由,我们使用路由表中与流量匹配的最明确的路由(最长前缀匹配)来判断流量的路由方式。

  • 您不能向 IPv4 地址添加与以下范围完全匹配或是其子集的路由:169.254.168.0/22。此范围位于链路本地地址空间内,保留供服务使用。 Amazon 例如,Amazon EC2 将此范围内的地址用于只能从 EC2 实例访问的服务,例如实例元数据服务(IMDS)和 Amazon DNS 服务器。您可以使用大于但包含 169.254.168.0/22 的 CIDR 块,但是系统不会转发指向 169.254.168.0/22 范围内地址的数据包。

  • 您不能向 IPv6 地址添加与以下范围完全匹配或是其子集的路由:fd00:ec2::/32。此范围位于唯一本地地址 (ULA) 空间内,保留供 Amazon 服务使用。例如,Amazon EC2 将此范围内的地址用于只能从 EC2 实例访问的服务,例如实例元数据服务(IMDS)和 Amazon DNS 服务器。您可以使用大于但包含 fd00:ec2::/32 的 CIDR 块,但是系统不会转发指向 fd00:ec2::/32 范围内地址的数据包。

  • 您可以将中间盒设备添加到 VPC 的路由路径中。有关更多信息,请参阅 中间盒设备的路由

示例

在以下示例中,VPC 具有 IPv4 CIDR 块和 IPv6 CIDR 块。IPv4 和 IPv6 流量是分开处理的,如以下路由表所示。

目标位置 目标
10.0.0.0/16 Local
2001:db8:1234:1a00::/56 Local
172.31.0.0/16 pcx-11223344556677889
0.0.0.0/0 igw-12345678901234567
::/0 eigw-aabbccddee1122334
  • Local 路由涵盖了要在 VPC (10.0.0.0/16) 内路由的 IPv4 流量。

  • Local 路由涵盖了要在 VPC (2001:db8:1234:1a00::/56) 内路由的 IPv6 流量。

  • 172.31.0.0/16 的路由将流量发送到对等连接。

  • 所有 IPv4 流量 (0.0.0.0/0) 的路由将流量发送到互联网网关。因此,除了 VPC 内和发送到对等连接的流量外,所有 IPv4 流量都路由到互联网网关。

  • 所有 IPv6 流量 (::/0) 的路由将流量发送到仅出口互联网网关。因此,除了 VPC 内和发送到对等连接的流量外,所有 IPv6 流量都路由到仅出口互联网网关。

主路由表

当您创建 VPC 时,它会自动生成主路由表。子网未与显式路由表关联,则预设情况下会使用主路由表。在 Amazon VPC 控制台中的 Route tables(路由表)页面上,通过在 Main(主)列中查找 Yes(是)以查看 VPC 的主路由表。

默认情况下,当您创建非默认 VPC 时,主路由表仅包含本地路由。如果您创建 VPC并选择 NAT 网关,Amazon VPC 会自动将路由添加到网关的主路由表中。

以下规则适用于主路由表:

  • 您可以在主路由表中添加、删除和修改路由。

  • 您无法删除主路由表。

  • 您无法将网关路由表设置为主路由表。

  • 您可以通过将自定义路由表与子网关联来替换主路由表。

  • 即使某个子网与主路由表已隐式关联,您也可以将它们显式关联。

    在希望更改作为主路由表的表时,您需要执行此操作。当您更改用作主路由表的表时,还会更改其他新子网或所有未与任何其他路由表显式关联的子网的默认设置。有关更多信息,请参阅 替换主路由表

自定义路由表

默认情况下,每个路由表都包含一个用于在 VPC 内部通信的本地路由。如果您创建 VPC并选择公有子网,Amazon VPC 会创建自定义路由表并添加指向互联网网关的路由。一种保护 VPC 的方法是将主路由表保持原始默认状态。然后,将您创建的各个新子网与您已创建的自定义路由表之一显式关联。这样可以确保您能够明确控制每个子网的流量的路由方式。

您可以在自定义路由表中添加、删除和修改路由。您只能删除没有关联的自定义路由表。

子网路由表关联

您的 VPC 中的每个子网都必须与一个网络 ACL 相关联。子网可以与自定义路由表显式关联,也可以与主路由表隐式或显式关联。有关查看子网和路由表关联的更多信息,请参阅确定显式关联的子网和/或网关

与 Outposts 关联的 VPC 中的子网可以有本地网关的额外目标类型。这是与非 Outposts 子网的唯一路由差异。

示例 1:隐式和显式子网关联

下图展示了有互联网网关、虚拟私有网关、以及一个公有子网和仅限 VPN 连接子网的 VPC 的路由。


                    主路由表与私有子网隐式关联,而自定义路由表与公有子网显式关联。

路由表 A 是与公有子网显式关联的自定义路由表,它有一条将所有流量发送到互联网网关的路由,因此子网成为公有子网。

目标位置 目标
VPC CIDR 本地
0.0.0.0/0 igw-id

路由表 B 是主路由表,它与私有子网隐式关联。它有一条将所有流量发送到虚拟私有网关的路由,但没有发送到互联网网关的路由,因此子网成为仅限 VPN 的子网。如果您在此 VPC 中创建另一个子网但不关联自定义路由表,由于此路由表是主路由表,该子网也将与其隐式关联。

目标位置 目标
VPC CIDR 本地
0.0.0.0/0 vgw-id
示例 2:替换主路由表

您可能希望更改主路由表。为避免对流量造成任何干扰,我们建议您首先使用自定义路由表测试路由更改。当您满意测试结果之后,可以将主路由表替换为新的自定义路由表。

下图显示了两个子网和两个路由表。子网 A 与路由表 A(主路由表)隐式关联。子网 B 与路由表 A 隐式关联。路由表 B(自定义路由表)与这两个子网均未关联。


                    两个子网与路由表 A(主路由表)隐式关联。

要替换主路由表,请先在子网 B 和路由表 B 之间创建显式关联。测试路由表 B。


                    子网 B 现在与路由表 B(自定义路由表)显式关联。

在您测试完路由表 B 之后,将其设为主路由表。子网 B 仍与路由表 B 有显式关联。然而子网 A 现在与路由表 B 有隐式关联,因为路由表 B 是新的主路由表。路由表 A 不再与这两个子网关联。


                    子网 A 现在与路由表 B(主路由表)隐式关联,而子网 B 仍与路由表 B 显式关联。

(可选)如果您解除子网 B 与路由表 B 的关联,在子网 B 与路由表 B 之间仍将存在隐式关联。如果您不再需要路由表 A,可以将其删除。


                    两个子网都与路由表 B 隐式关联。

网关路由表

您可以将路由表与互联网网关或虚拟私有网关相关联。当路由表关联到某个网关时,它称为网关路由表。您可以创建网关路由表,以精细控制进入 VPC 的流量的路由路径。例如,对于通过互联网网关进入 VPC 的流量,您可以将流量重定向到 VPC 中的中间盒设备(例如安全设备)来进行拦截。

网关路由表路由

与互联网网关关联的网关路由表支持具有以下目标的路由:

与虚拟私有网关关联的网关路由表支持具有以下目标的路由:

当目标是网关负载均衡器终端节点或网络接口时,允许使用以下目标:

  • 您的 VPC 的整个 IPv4 或 IPv6 CIDR 块。在这种情况下,您将替换默认本地路由的目标。

  • VPC 中子网的整个 IPv4 或 IPv6 CIDR 块。这是比默认本地路由更明确的路由。

如果您将网关路由表中本地路由的目标更改为 VPC 中的网络接口,则以后可以将其还原为默认 local 目标。有关更多信息,请参阅 替换或还原本地路由的目标

示例

在下面的网关路由表中,流向具有 172.31.0.0/20 CIDR 块的子网的流量将路由到特定网络接口。流向 VPC 中所有其他子网的流量使用本地路由。

目的地 目标
172.31.0.0/16 本地
172.31.0.0/20 eni-id
示例

在以下网关路由表中,本地路由的目标替换为网络接口 ID。流向 VPC 中所有子网的流量将路由到网络接口。

目的地 目标
172.31.0.0/16 eni-id

规则和注意事项

如果以下任何情况适用,则无法将路由表与网关相关联:

  • 路由表包含的现有路由具有网络接口、网关负载均衡器终端节点或默认本地路由以外的其他目标。

  • 路由表包含的路由指向 VPC 范围之外的 CIDR 块。

  • 为路由表启用了路由传播。

此外,还适用以下规则和注意事项:

  • 您不能将路由添加到 VPC 范围之外的任何 CIDR 块,包括超出单个 VPC CIDR 块的范围。

  • 您只能将 local、网关负载均衡器终端节点或网络接口指定为目标。不能指定任何其他类型的目标,包括单个主机 IP 地址。有关更多信息,请参阅示例路由选项

  • 不能将前缀列表指定为目的地。

  • 您不能使用网关路由表来控制或拦截 VPC 外部的流量,例如,流经所连接传输网关的流量。您可以拦截进入您 VPC 的流量,并仅能将其重定向到相同 VPC 中的另一个目标。

  • 要确保流量到达您的中间盒设备,必须将目标网络接口连接到正在运行的实例。对于流经互联网网关的流量,目标网络接口还必须具有公有 IP 地址。

  • 配置中间盒设备时,请注意设备注意事项

  • 通过中间盒设备路由流量时,来自目标子网的返回流量必须通过同一设备路由。不支持非对称路由。

  • 路由表规则适用于离开子网的所有流量。离开子网的流量定义为发往该子网网关路由器 MAC 地址的流量。发往子网中另一个网络接口 MAC 地址的流量使用数据链路(第 2 层)路由而不是网络(第 3 层)路由,因此这些规则不适用于此流量。

  • 并非所有 Local Zones 都支持与虚拟私有网关的边缘关联。有关可用区域的更多信息,请参阅《Amazon Local Zones 用户指南》中的注意事项

路由优先级

一般来说,我们使用与流量匹配的最明确路由以引导流量。这被称为最长的前缀匹配。如果路由表具有重叠或匹配的路由,则应用其他规则。

最长前缀匹配

到 IPv4 和 IPv6 地址或 CIDR 块的路由彼此独立。我们使用与 IPv4 流量或 IPv6 流量匹配的最明确路由来确定如何路由流量。

下面的子网路由表包含一条指向互联网网关的 IPv4 Internet 流量(0.0.0.0/0)路由、一条指向对等连接(pcx-11223344556677889)的 172.31.0.0/16 IPv4 流量路由。来自该子网的目标为 172.31.0.0/16 IP 地址范围的任意流量均使用对等连接,因为该路由比互联网网关路由更明确。目标设为 VPC (10.0.0.0/16) 中的目标的任何流量将被 local 路由涵盖,因此将在 VPC 中路由。来自该子网的所有其他流量使用互联网网关。

目的地 目标
10.0.0.0/16 本地
172.31.0.0/16 pcx-11223344556677889
0.0.0.0/0 igw-12345678901234567

路由优先级和传播的路由

如果您已将一个虚拟私有网关连接到 VPC,并且已启用子网路由表上的路由传播,则代表 Site-to-Site VPN 连接的路由会在您的路由表中自动显示为已传播路由。

如果传播路由的目的地与静态路由重叠,则静态路由优先级更高。

如果传播路由的目的地与静态路由的目的地相同,则如果目标是以下其中一项,则静态路由优先级更高:

  • 互联网网关

  • NAT 网关

  • 网络接口

  • 实例 ID

  • 网关 VPC 终端节点

  • Transit Gateway

  • VPC 对等连接

  • 网关负载均衡器终端节点

有关更多信息,请参阅《Amazon Site-to-Site VPN 用户指南》中的路由表和 VPN 路由优先级

以下示例路由表具有指向互联网网关的静态路由和指向虚拟私有网关的传播路由。这两条路由的目的地均为 172.31.0.0/24。由于通往互联网网关的静态路由优先级更高,因此所有到 172.31.0.0/24 的流量被路由到互联网网关。

目标位置 目标 传播
10.0.0.0/16 本地
172.31.0.0/24 vgw-11223344556677889
172.31.0.0/24 igw-12345678901234567

路由优先级和前缀列表

如果路由表引用前缀列表,则以下规则适用:

  • 如果路由表中包含的具有目的地 CIDR 块的静态路由与具有前缀列表的另一条静态路由重叠,则具有 CIDR 块的静态路由优先。

  • 如果路由表中包含的传播路由与引用前缀列表的路由匹配,则引用前缀列表的路由优先。请注意,如果路由出现重叠,无论它们是传播路由、静态路由还是引用前缀列表的路由,更具体的路由始终优先。

  • 如果路由表引用多个前缀列表,而这些前缀列表具有到不同目标的重叠的 CIDR 块,则我们会随机选择哪条路由优先。此后,同一路由将始终优先。

路由表配额

您可以为每个 VPC 创建的路由表数量存在配额。您可以为每个路由表添加的路由数量也有配额。有关更多信息,请参阅 Amazon VPC 配额

解决可接通性问题

Reachability Analyzer 是一款静态配置分析工具。使用 Reachability Analyzer 分析和调试您的 VPC 中两个资源之间的网络可访问性。当这些资源可以访问时,Reachability Analyzer 会生成它们之间的虚拟路径的 hop-by-hop 详细信息,否则会识别阻塞组件。例如,它可以识别缺失或配置错误的路由表路由。

有关更多信息,请参阅 Reachability Analyzer 角色指南