参考官方文档:

由表中包含一系列被称为路由的规则,可用于判断网络流量的导向目的地。

在您的 VPC 中的每个子网必须与一个路由表关联;路由表控制子网的路由。一个子网一次只能与一个路由表关联,但您可以将多个子网与同一路由表关联。

路由表基本信息

以下是您需要了解的关于路由表的基本信息:

  • 您的 VPC 有一个隐式路由器。

  • 您的 VPC 会自动生成主路由表,以供您修改。

  • 您可以为您的 VPC 创建额外的自定义路由表。

  • 每个子网必须与一个路由表关联,这个路由表控制子网的路由。 如果您未在子网与特定路由表间建立显式关联,则这个子网将与主路由表建立隐式关联。

  • 您不能删除主路由表,但可以将主路由表替换为您创建的自定义路由表(以使这个路由表成为默认路由表,并可与每个新增子网存在关联)。

  • 表中的每项路由都指定了一个目的 CIDR 和目标 (例如,指向数据包被外部企业网络的 172.16.0.0/12 的数据将通向虚拟专用网关)。我们使用与流量匹配的最明确路由以判断数据流的路由方式。

  • 每个路由表都包含一个实现 VPC 内部通信的本地路由。您无法修改或删除该路由。

  • 在 VPC 中添加 Internet 网关、虚拟专用网关、NAT 设备、对等连接或 VPC 端点时,必须更新所有使用这些网关或连接的子网的路由表。

  • 在每个 VPC 上创建的路由表和在每个路由表中添加的路由均存在数量限制。有关更多信息,请参阅 Amazon VPC 限制

主路由表

当您创建 VPC 时,它会自动生成主路由表。 在 Amazon VPC 控制台中的 Route Tables 页面上,通过在 Main 列中查找 Yes 可以查看 VPC 的主路由表。主路由表控制未与任何其他路由表显式关联的所有子网的路由。您可以在主路由表中添加、删除和修改路由。

即使某个子网与主路由表已隐式关联,您也可以将它们显式关联。当您更改用作主路由表的表时,可以这样做。这会更改其他新子网或所有未与任何其他路由表显式关联的子网的默认设置。有关更多信息,请参阅 正在替换主路由表

自定义路由表

除了默认路由表之外,您的 VPC 还可以有其他路由表。保护您的 VPC 的一种方式是保留主路由表的初始默认状态(仅包含本地路由),并将您创建的每个新建子网与您已经创建的自定义路由表之一建立显式关联。这样可以确保您能够显式控制每个子网的出站数据流的路由方式。

下图展示了同时有 Internet 网关和虚拟专用网关、以及一个公有子网和仅限 VPN 连接子网的 VPC 的路由。主路由表自带 VPC,同时还有仅限 VPN 的子网的路由。与公有子网关联的自定义路由表。自定义路由表内包含 Internet 网关路由(目的地为 0.0.0.0/0,目标为 Internet 网关)。

如果您在此 VPC 内创建一个新的子网,它将自动与主路由表关联,而主路由表会将数据流路由到虚拟专用网关。如果您设置反向配置(主路由表内包含通往 Internet 网关的路由,自定义路由表内包含通往虚拟专用网关的路由),则新子网会自动生成通往 Internet 网关的路由。

路由表关联

VPC 控制台显示与每个路由表显式关联的子网的数量,并提供与主路由表隐式关联的子网的信息。有关更多信息,请参阅 正在判断与表显式关联的子网

子网可以与主路由表建立显式或隐式关联。子网通常不会与主路由表建立显式关联,尽管当您替换主路由表时可能会临时生成显式关联。

您可能需要更改主路由表,但是为避免数据流中断,您可以先使用自定义路由表测试路由更改。当您满意测试结果之后,您便可以将主路由表替换为新的自定义路由表。

下图展示的是一个有两个子网的 VPC,并且这些子网都与主路由表(路由表 A)有隐式关联,自定义路由表(路由表 B)则未与任何子网相关。

您可以在子网 2 和路由表 B 之间建立显式关联。

在您测试完路由表 B 之后,您可以将其设定为主路由表。请注意子网 2 仍与路由表 B 有显式关联,而子网 1 与路由表 B 有隐式关联,因为路由表 B 是新的主路由表。 路由表 A 已经不再使用。

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

路由优先级

我们使用路由表中与流量匹配的最具体的路由来判断数据流的路由方式(最长前缀匹配)。例如,下面的路由表包含一条指向 Internet 网关的 Internet 流量 (0.0.0.0/0) 路由、一条指向对等连接 (pcx-1a2b3c4d) 的 172.31.0.0/16 流量路由。来自该子网的目标为 172.31.0.0/16 IP 地址范围的任意流量均使用对等连接,因为该路由比 Internet 网关路由更明确。目标设为 VPC (10.0.0.0/16) 中的目标的任何流量将被 Local 路由涵盖,因此将在 VPC 中路由。来自该子网的所有其他流量使用 Internet 网关。

目标 目标
10.0.0.0/16 本地
172.31.0.0/16 pcx-1a2b1a2b
0.0.0.0/0 igw-11aa22bb

如果您已将一个虚拟专用网关连接到 VPC,并且已启用路由表上的路由传播,则代表 VPN 连接的路由会在您的路由表中自动显示为已传播路由。以下情况将适用:

  • 如果来自 VPN 连接或 AWS Direct Connect 连接的任何传播路由与 VPC 的本地路由重叠,则本地路由的优先级最高,即使传播路由更特定也是如此。

  • 如果来自 VPN 连接或 AWS Direct Connect 连接的任何传播路由的目标 CIDR 块与其他现有静态路由的相同(无法应用最长前缀匹配),我们将设置其目标为 Internet 网关、虚拟专用网关、网络接口、实例 ID、VPC 对等连接或 VPC 端点的静态路由的优先级。

如果 VPN 连接内存在重叠路由,且最长前缀匹配不适用,则我们在 VPN 连接内按以下规则排序路由,从最高优先级到最低优先级:

  • 来自 AWS Direct Connect 连接的 BGP 传播路由

  • 为 VPN 连接手动添加的静态路由

  • 来自 VPN 连接的 BGP 传播路由

在该示例中,路由表包含一条到 Internet 网关(您手动添加的)的静态路由和一条到虚拟专用网关的传播路由。这两条路由的目的地均为 172.31.0.0/24。在这种情况下,目的地为172.31.0.0/24 的所有流量均路由到 Internet 网关 - 此为静态路由,因此,其优先级高于传播路由。

目标 目标
10.0.0.0/16 本地
172.31.0.0/24 vgw-1a2b3c4d(传播)
172.31.0.0/24 igw-11aa22bb

路由选项

以下主题介绍了您的 VPC 中的特定网关或连接的路由。

Internet 网关的路由表

您可以通过向 Internet 网关添加路由来将一个子网设为公有子网。为此,请创建一个 Internet 网关并将其附加到您的 VPC,然后添加一个目的地为 0.0.0.0/0 且目标为 Internet 网关 ID (igw-xxxxxxxx) 的路由。有关更多信息,请参阅 Internet 网关

NAT 设备的路由表

要使私有子网中的实例能够连接到 Internet,您可以在公有子网中创建一个 NAT 网关或启动 NAT 实例,然后为私有子网添加一个路由以将 Internet 数据流 (0.0.0.0/0) 路由到 NAT 设备。有关更多信息,请参阅 NAT 网关 和 NAT 实例

虚拟专用网关的路由表

您可以使用 AWS 硬件 VPN 连接来支持 VPC 中的实例与您自己的网络进行通信。为此,请创建一个虚拟专用网关并将其附加到您的 VPC,然后添加一个目的地为您的网络且目标为虚拟专用网关 (vgw-xxxxxxxx) 的路由。您随后可以创建和配置 VPN 连接。有关更多信息,请参阅 在您的 VPC 中添加硬件虚拟专用网关

VPC 对等连接的路由表

VPC 对等连接是两个 VPC 之间的网络连接,通过此连接,您可以使用私有 IP 地址在这两个 VPC 之间路由流量。任何一个 VPC 中的实例都可以彼此通信,就像它们属于同一网络中一样。

要在 VPC 对等连接中的 VPC 之间实现流量路由,必须将一个路由添加到 VPC 的一个或多个路由表,该路由指向 VPC 对等连接以访问对等连接中另一个 VPC 的全部或部分 CIDR 块。同样,另一个 VPC 的拥有者必须将一个路由添加到其 VPC 的路由表,以将流量路由回您的 VPC。

例如,您在具有以下信息的两个 VPC 之间具有 VPC 对等连接 (pcx-1a2b1a2b):

  • VPC A:vpc-1111aaaa,CIDR 块为 10.0.0.0/16

  • VPC B:vpc-2222bbbb,CIDR 块为 172.31.0.0/16

要启用 VPC 之间的流量并允许访问任一 VPC 的整个 CIDR 块,VPC A 的路由表的配置如下所示。

目标 目标
10.0.0.0/16 本地
172.31.0.0/16 pcx-1a2b1a2b

VPC B 的路由表的配置如下所示。

目标 目标
172.31.0.0/16 本地
10.0.0.0/16 pcx-1a2b1a2b

有关 VPC 对等连接的更多信息,请参阅 Amazon VPC Peering Guide

ClassicLink 路由表

ClassicLink 功能允许您将 EC2-Classic 实例链接到 VPC,从而允许 EC2-Classic 实例与 VPC 中使用私有 IP 地址的实例进行通信。有关 ClassicLink 的更多信息,请参阅ClassicLink

为 VPC 启用 ClassicLink 时,会向所有 VPC 的路由表添加一个路由,其目的地为 10.0.0.0/8,目标为 local。这允许 VPC 中的实例与后来链接到该 VPC 的任意 EC2-Classic 实例之间进行通信。如果您向启用了 ClassicLink 的 VPC 另外添加一个路由表,该路由表会自动接收一个目的地为10.0.0.0/8 并且目标为 local 的路由。如果禁用 VPC 的 ClassicLink,会从该 VPC 的所有路由表中自动删除此路由。

如果您的 VPC 的任意路由表具有地址范围在 10.0.0.0/8 CIDR 内的现有路由,则无法为该 VPC 启用 ClassicLink。这不包括 VPC 的 10.0.0.0/16 和 10.1.0.0/16 IP 地址范围的本地路由。

如果您已经为 VPC 启用了 ClassicLink,则无法再在路由表中添加 10.0.0.0/8 IP 地址范围的任何具体路由。

如果您修改 VPC 对等连接以允许 VPC 中的实例与已链接到对等 VPC 的 EC2-Classic 实例之间的通信,则静态路由将自动添加到您的路由表,其目的地为 10.0.0.0/8,目标为 local。如果您修改 VPC 对等连接以允许已链接到 VPC 的本地 EC2-Classic 实例与对等 VPC 中的实例之间的通信,则必须手动将路由添加到您的主路由表,其目的地为对等 VPC CIDR 块,目标为 VPC 对等连接。EC2-Classic 实例依赖主路由表来路由到对等 VPC。有关更多信息,请参阅 Amazon VPC Peering Guide中的使用 ClassicLink 进行配置

VPC 端点的路由表

使用 VPC 端点可以在您的 VPC 和其他 AWS 服务之间创建私有连接。创建终端节点时,您指定 VPC 中由该终端节点使用的路由表。路由会自动添加到每个路由表中,这些路由表的目的地指定服务的前缀列表 ID (pl-xxxxxxxx),目标具有相应终端节点 ID (vpce-xxxxxxxx)。您无法显式删除或修改终端节点路由,但可更改终端节点所使用的路由表。

有关终端节点路由的更多信息以及对到 AWS 服务的路由的影响,请参阅 终端节点路由

使用路由表

此部分将为您展示如何使用路由表。

Note

当您使用控制台向导创建带有网关的 VPC 时,向导会自动为您更新使用网关的路由表。如果您正在使用命令行工具或 API 来设置您的 VPC,您必须自行更新路由表。

正在判断与子网关联的具体路由表。

可通过在 Amazon VPC 控制台中查看子网的详细信息,判断该子网与哪个路由表关联。

判断与子网关联的路由表

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Subnets。

  3. 子网详细信息显示在 Summary (摘要) 选项卡中。选择 Route Table 选项卡可查看路由表 ID 及其路由。如果它是主路由表,控制台便无法表明关联为隐式或是显式。 如需判断与主路由表的关联是否为显式关联,请参见正在判断与表显式关联的子网

正在判断与表显式关联的子网

您可以判断与路由表显式关联的子网数目以及存在关联的具体子网。

主路由表可以有显式和隐式关联。 自定义路由表只有显式关联。

未与任何路由表建立显式关联的子网都与主路由表有隐式关联。您可以在子网和主路由表中建立显式关联(有关您为何建立显式关联的原因,请参见正在替换主路由表)。

判断显式关联的子网

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables。

  3. 查看 Explicitly Associated With 列以确定显式关联的子网数。

  4. 选择所需的路由表。

  5. 在详细信息窗格中,选择 Subnet Associations 选项卡。与路由表有显式关联的子网已经列于选项卡之中。所有未与任何路由表关联的子网(并因此与主路由表隐式关联)也将被列出。

创建自定义路由表

您可以使用 Amazon VPC 控制台为 VPC 创建自定义路由表。

创建自定义路由表

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables。

  3. 选择 Create Route Table。

  4. 在 Create Route Table 对话框中,您可以选择为 Name tag 命名您的路由表。这样做可创建具有 Name 键以及指定值的标签。针对 VPC 选择您的 VPC,然后选择 Yes, Create。

在路由表中添加和删除路由

您可在路由表中添加、删除和修改路由。您只能修改已添加的路由。

修改路由或将路由添加到路由表

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables,然后选择路由表。

  3. 在 Routes 选项卡中,选择 Edit。

  4. 要修改现有路由,请为 Destination 替换目的地 CIDR 块或单个 IP 地址,然后为 Target 选择一个目标。选择 Add another route、Save。

从路由表中删除路由

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables,然后选择路由表。

  3. 在 Routes 选项卡中,选择 Edit,然后针对要删除的路由选择 Remove。

  4. 完成此操作后,选择 Save。

启用和禁用路由传播

路由传播允许虚拟专用网关自动传播路由至路由表,所以您便无需再手动向您的路由表中输入 VPN 路由。您可以启用或禁用路由传播。

有关 VPN 路由选项的更多信息,请参见 VPN 路由选项

启用路由传播

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables,然后选择路由表。

  3. 在 Route Propagation 选项卡上,选择 Edit。

  4. 选中虚拟专用网关旁边的 Propagate 复选框,然后选择 Save。

禁用路由传播

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables,然后选择路由表。

  3. 在 Route Propagation 选项卡上,选择 Edit。

  4. 取消选中 Propagate 复选框,然后选择 Save。

正在将子网与路由表关联

若要对特定子网应用路由表路由,您必须将路由表与子网关联。一个路由表可以与多个子网关联;但是一个子网一次只能与一个路由表关联。任何未与路由表显式关联的子网都默认与主路由表隐式关联。

关联路由表和子网

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables,然后选择路由表。

  3. 在 Subnet Associations 选项卡上,选择 Edit。

  4. 选中要与路由表关联的子网的 Associate 复选框,然后选择 Save。

更改子网路由表

您可以更改与子网关联的路由表。

更改子网路由表关联

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Subnets,然后选择子网。

  3. 在 Route Table 选项卡中,选择 Edit。

  4. 从 Change to 列表中选择要与子网关联的新路由表,然后选择 Save。

正在解除子网与路由表的关联

您可以解除子网与路由表的关联。在将子网与其他路由表关联前,它与主路由表是隐式关联的。

解除子网与路由表的关联

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables,然后选择路由表。

  3. 在 Subnet Associations 选项卡中,选择 Edit。

  4. 取消选中子网的 Associate 复选框,然后选择 Save。

正在替换主路由表

您也可以更改作为 VPC 中主路由表的路由表。

替换主路由表

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables。

  3. 选择应为新的主路由表的路由表,然后选择 Set as Main Table。

  4. 在确认对话框中,选择 Yes, Set。

以下步骤描述如何删除子网与主路由表之间的显式关联。结果是在子网和主路由之间生成隐式关联。这个步骤与解除任何子网与任何路由表的步骤相同。

删除与主路由表的显式关联

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables,然后选择路由表。

  3. 在 Subnet Associations 选项卡中,选择 Edit。

  4. 取消选中子网的 Associate 复选框,然后选择 Save。

正在删除路由表

您只可以删除未与任何子网关联的路由表。您无法删除主路由表。

删除路由表

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Route Tables。

  3. 选择路由表,然后选择 Delete。

  4. 在确认对话框中,选择 Yes, Delete。

aws中的路由表的更多相关文章

  1. 在AWS中创建NAT节点

    NAT, Network Address Translation,即网络地址转换.当内部网络的主机想要访问外网,但是又不想直接暴露给公网,可以通过NAT节点来访问外网.这样做有两个好处,第一是内网的主 ...

  2. 在AWS中部署OpenShift平台

    OpenShift是RedHat出品的PAAS平台.OpenShift做为PAAS平台最大的特点是它是完全容器化的PAAS平台,底层封装了Docker和Kubernetes,上层暴露了对开发者友好的接 ...

  3. AWS中,如果使用了ELB,出现outofservice

    平台:亚马逊AWS EC2 出现状况: 我创建了弹性平衡负载,也注册了实例,但是实例的状态一直是outofservice.为什么? 为什么会出现这个问题呢? 1:实例有问题: 2:负载平衡器创建的有问 ...

  4. 在AWS中自定义Credential Provider实现Client连接

    今天在使用AWS中,由于原来的 key和secrect是放在配置文件ini里面的.现在需要改成从DB里面获取,所以需要自定义Credential.在AWS中重写这个挺简单的. 我这里是继承原先的Cre ...

  5. python 取出aws中ip有,zabbix中没有的ip

    #!/usr/bin/env python3# coding=utf-8import requestsimport jsonimport boto3 headers = {'Content-Type' ...

  6. AWS中的Internet 网关

    nternet 网关是一种横向扩展.支持冗余且高度可用的 VPC 组件,可实现 VPC 中的实例与 Internet 之间的通信.因此它不会对网络流量造成可用性风险或带宽限制. Internet 网关 ...

  7. 理解Windows中的路由表和默认网关

    每一个Windows系统中都具有IP路由表,它存储了本地计算机可以到达的网络目的地址范围和如何到达的路由信息.路由表是TCP/IP通信的基础,本地计算机上的任何TCP/IP通信都受到路由表的控制. 理 ...

  8. 如何在AWS中为自己的S3托管站点添加SSL/TSL证书(https)

    概要 利用AWS的S3服务托管静态网站后,如何将自己的域名与该站点绑定,并为此域名提供SSL/TSL证书(https). 面向人群 已经掌握如何利用S3服务托管静态网站. 已经拥有自己的域名. 希望为 ...

  9. 【Kubernetes 系列五】在 AWS 中使用 Kubernetes:EKS

    目录 1. 概述 2. 版本 3. 预备 3.1. 操作环境 3.2. 角色权限 3.2.1. CloudFormation 完全权限 3.2.2. EKS 读写权限 3.2.3. EC2 相关权限 ...

随机推荐

  1. 【BZOJ3529】数表(莫比乌斯反演,树状数组)

    [BZOJ3529]数表(莫比乌斯反演,树状数组) 题解 首先不管\(A\)的范围的限制 要求的东西是 \[\sum_{i=1}^n\sum_{j=1}^m\sigma(gcd(i,j))\] 其中\ ...

  2. 很简单的Java断点续传实现原理

    原理解析 在开发当中,"断点续传"这种功能很实用和常见,听上去也是比较有"逼格"的感觉.所以通常我们都有兴趣去研究研究这种功能是如何实现的? 以Java来说,网 ...

  3. 记录解决python在spark运行加载第三方库的问题

    一般写python的我们经常会import一些常用的库,然后有时集群环境上的python没有这些库,怎么办呢? 通过一段时间的摸索发现有二种方式可以解决这个问题: 第一种方法: 下载对应python的 ...

  4. spring boot整合log4j2

    POM配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...

  5. CXGrid TcxButtonEdit 信息获取 TcxButtonEditProperties取得TcxGridDBTableView

    ( TcxButtonEdit(Sender).ActiveProperties).Buttons[AButtonIndex].Hint;//取到按钮本身的属性IntToStr( ( TcxGridS ...

  6. 什么是IPFS?(三)

    前两篇介绍了IPFS的基本概念, 那么IPFS都可以用来做什么? 如果你认为仅仅是CDN, 永久的web? Are you kidding me ? IPFS可是要 --改变世界的... --变世界的 ...

  7. gdb命令调试技巧

    gdb命令调试技巧 一.信息显示1.显示gdb版本 (gdb) show version2.显示gdb版权 (gdb) show version or show warranty3.启动时不显示提示信 ...

  8. spring Boot+spring Cloud实现微服务详细教程第一篇

    前些天项目组的大佬跟我聊,说项目组想从之前的架构上剥离出来公用的模块做微服务的开发,恰好去年的5/6月份在上家公司学习了国内开源的dubbo+zookeeper实现的微服务的架构.自己平时对微服务的设 ...

  9. Mycat 分片规则详解--ER关系表分片

    ER模型是实体关系模型,基本元素是实体.关系和属性,Mycat 针对ER关系表的切分规则中,使得有相互依赖的表能够按照某一个规则切分到相同的节点上,避免垮库 Join 关系查询,下面的示例为订单(or ...

  10. 前端的UI设计与交互之布局篇

    布局是页面构成的前提,是后续展开交互和视觉设计的基础.设计者在选择布局之前,需要注意以下几点原则:明确用户在此场景中完成的主要任务和需获取的决策信息.明确决策信息和操作的优先级及内容特点,选择合理布局 ...