可以使用对等连接来连接 Amazon Virtual Private Cloud (Amazon VPC)。但是,如果无法集中管理连接策略,那么跨多个 Amazon VPC 管理点到点连接可能会造成运营成本高昂且操作繁琐。对于本地连接,需要将 AWS VPN 附加到每个单独的 Amazon VPC。当 VPC 数量增长到数百个时,这种解决方案的构建可能非常耗时,而且难以管理。
使用 AWS Transit Gateway,只需要创建和管理从中央网关到网络中每个 VPC、本地数据中心或远程办公室的一条连接。中转网关就像一个轮轴,控制着流量在连接的所有网络之间的路由方式,而这些网络就像辐条一样。这种轴辐式模型可以显著简化管理工作并降低运营成本,因为每个网络只需连接到中转网关,而不是连接到所有其他网络。将任何新的 VPC 连接到中转网关,然后该 VPC 就会自动向连接到中转网关的所有其他网络开放。这种易连接性让您能够随着需求的增长轻松地扩展网络。
在本实验中,将通过中转网关来构建和配置路由,这些中转网关具有不同的复杂程度。首先,将检查现有 VPC、子网、路由表和 Amazon Elastic Compute Cloud (Amazon EC2) 实例。然后,将创建一个中转网关并将四个现有 VPC 附加到该网关。需要研究中转网关上的默认路由表,该路由表可以让附加到中转网关的 VPC 进行多对多通信。在确认中转网关正常运行后,需要修改该中转网关上的路由表,以便隔离特定 VPC 之间的通信。最后,需要跨区域边界建立两个中转网关的对等连接,以便展示如何配置具有中转网关的全局网络。
能够在不同 AWS 区域之间建立中转网关对等连接,客户就可以扩展这种连接,并建立跨多个 AWS 区域的全局网络。使用区域间中转网关对等连接的流量会始终留在 AWS 全球网络中,永远不会通过公共互联网。这可以减少威胁载体,例如常见攻击和分布式拒绝服务 (DDoS) 攻击。区域间中转网关对等连接可以加密区域间的流量,而且不会发生单点故障。
完成本实验后,将能够:
本实验在主区域的不同 VPC 上预置了四个 EC2 实例。在远程区域中预置了一个 EC2 实例和一个中转网关。将在主区域中配置一个中转网关,将 VPC 附加到该中转网关,更新路由,然后验证主区域中的所有 EC2 实例是否能相互通信。然后,将建立中转网关与远程区域的对等连接,并验证所有 EC2 实例之间的网络连接。最后,将创建路由筛选条件来限制特定 VPC 之间的连接。
所有后端组件(例如 Amazon EC2 实例和 AWS Identity and Access Management (IAM) 角色)都已内置于实验中。
AWS Transit Gateway:将 Amazon VPC 和本地网络连接到单个网关。利用 Transit Gateway,网络将得到简化并可以扩展。
Amazon VPC:在定义的虚拟网络中启动 AWS 资源。这种虚拟网络与您在自己的数据中心中运行的传统网络极其相似,并且可以让使用 AWS 的可扩展基础设施。
AWS Transit Gateway Network Manager:跨 AWS 和本地站点集中管理您的网络。在集中式控制面板中将您的全局网络可视化为逻辑示意图或地图。通过 Amazon CloudWatch 指标和事件监控您的网络,以便了解网络拓扑、路由和连接状态的变化。
下图显示了为本实验预置的资源以及在实验开始时连接这些资源的方式:

在此任务中,使用互联网控制消息协议 (ICMP) 来验证命令主机与其他主机之间的网络可访问性。已经配置了四个 Amazon EC2 实例,标记为主机 A 到 D,这些实例位于同一个主区域,每个都有自己的 VPC。主机 A 在一个公有子网中,将被用作命令主机。下图显示了实验环境中的当前配置:

现在,对每个实例的私有 IP 地址执行 Ping 操作。IP 地址可以在实验页面的左侧找到。完成后续步骤后,在文本编辑器中记录结果。表的示例如下:

表 A:Ping 测试结果
| 主机 | 结果 |
|---|---|
| 主机 B | 通过/失败 |
| 主机 C | 通过/失败 |
| 主机 D | 通过/失败 |
运行以下命令。将 替换为EC2的 HostB IP 地址:【重复上述步骤,对 HostC 和 HostD 执行 Ping 操作。】
ping <Host IP address>

注意:由于每个主机都在自己的私有子网中,而且各主机之间没有配置路由,预计对每个主机执行的 ICMP Ping 操作都会出现超时失败。
在此任务中,将在主区域中创建一个中转网关。中转网关是一种网络传输枢纽,可以将同一账户或不同账户内挂载的资源(VPC 和 VPN)互联。

在 AWS 管理控制台中,使用 AWS 搜索栏搜索 VPC,然后从结果列表中选择该服务。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分。
选择 Transit Gateways(中转网关)。
在页面顶部,选择 Create transit gateway(创建中转网关)。

配置以下各项:
- Name tag(名称标签):maintransitgw
- Amazon side ASN(Amazon 端 ASN):65001
- 取消选中 VPN ECMP support(VPN ECMP 支持)
- 取消选中 Default route table association(原定设置路由表关联)
- 取消选中 Default route table propagation(原定设置路由表传播)
- 选择
创建中转网关按钮。
现在已将私有自治系统编号 (ASN) 用于中转网关,并为附加到中转网关的 VPC 启用了 DNS 支持。
PS:边界网关协议 (BGP) 会话的 AWS 端的自治系统编号 (ASN)。可以使用原定设置的 ASN,也可以在 64512-65534 或 4200000000-4294967294 范围内指定私有 ASN。
页面顶部将显示一条绿色边框,内容为:


注意:中转网关处于待处理状态几分钟后,会变为可用状态。
在文本编辑器中记录中转网关 ID。(本实验中转网关ID:tgw-0ab8c846a55b43bc2)

附加信息:中转网关充当一种区域虚拟路由器,用于路由在 VPC 和 VPN 连接之间流动的流量。
在此任务中,需要将 VPC 附加到中转网关,如下图所示:

在左侧导航窗格的 Transit Gateways(中转网关)部分中,选择 Transit Gateway Attachments(中转网关挂载)。
在页面顶部,选择 Create transit gateway attachment(创建中转网关挂载)按钮。

配置以下各项:
- Name tag - optional(名称标签 – 可选):vpc-a
- Transit Gateway ID(中转网关 ID):选择中转网关 ID
- Attachment type(挂载类型):VPC
- VPC ID:选择名为 vpc-a 的 VPC
- 选择 Create transit gateway attachment(创建中转网关挂载)按钮。

重复上述步骤,将
vpc-b、vpc-c和vpc-d附加到中转网关。
提示:请等待所有中转网关挂载的状态均变为可用,然后再继续下一项任务。

在此任务中,需要使用中转网关路由表为中转网关挂载配置路由。路由表可以控制所有关联挂载的流量的流动方式。
在左侧导航窗格的 Transit Gateways(中转网关)部分中,选择 Transit Gateway Route Tables(中转网关路由表)。
在页面顶部,选择 Create transit gateway route table(创建中转网关路由表)按钮。
配置以下各项:
- Name Tag - optional(名称标签 – 可选):
maintransitgw-rt- Transit Gateway ID(中转网关 ID):选择中转网关 ID
- 选择 Create transit gateway route table(创建中转网关路由表)按钮。


注意:中转网关路由表处于待处理状态几分钟后,会变为可用状态。


在此任务中,需要将中转网关路由表与中转网关挂载相关联。将挂载与路由表关联之后,流量就可以从挂载发送到目标路由表。
注意:一个中转网关挂载只能与一个路由表相关联。每个路由表可以关联零到多个挂载,并可以将数据包转发到其他挂载。
选择 maintransitgw-rt 中转网关路由表。 选择 Associations(关联)选项卡。
选择 Create association(创建关联)
配置以下各项:
- Choose attachment to associate(选择要关联的挂载):选择名称标签为 vpc-a 的挂载 ID
- 选择 Create association(创建关联)按钮。

重复上述步骤,将 vpc-b、vpc-c 和 vpc-d 的关联添加到路由表中。
注意:创建每个关联可能需要几分钟时间。请刷新页面,直到所有挂载的状态都显示为 Associated(已关联)。

在此任务中,需要使用路由传播将路由表中的路由添加到挂载。添加传播之后,路由可以从挂载传播到目标中转网关路由表。一个挂载可以传播到多个路由表。
选择 Propagations(传播)选项卡。
选择 Create propagation(创建传播)按钮。

配置以下各项:
- 选择要传播的挂载:选择名称标签为 vpc-a 的挂载 ID
- 选择 Create propagation(创建传播)按钮。

重复上述步骤,为 vpc-b、vpc-c 和 vpc-d 创建传播。
传播创建完成后,可以在 Routes(路由)选项卡上查看填充的所有 VPC 的子网。

在此任务中,将为每个 VPC 中的子网添加一个路由,指向作为目标目的地的中转网关。这样,发往本地子网以外的任何私有子网的任何流量都将通过路由流向中转网关。
在左侧导航窗格中,向上滚动到 Virtual Private Cloud 部分,然后选择 Route Tables(路由表)。
选择名为 vpc_a-public 的路由表。

从页面顶部的 *Actions* (操作)菜单中,选择 Edit routes(编辑路由)。

选择****Add route****(添加路由),然后配置以下各项:
- Destination(目的地):10.0.0.0/8
- Target(目标):复制并粘贴您在任务 1 中复制的中转网关 ID
- 选择 Save changes(保存更改)按钮。

注意:对于目标,您也可以键入
tgw-,并选择名为 maintransitgw 的中转网关。

PS:重复上述步骤,为每个路由使用相同目的地,将相应路由添加到 vpc_b-private、vpc_c-private 和 vpc_d-private 路由表。
运行以下命令。将 替换为EC2的 HostB IP 地址:【重复上述步骤,对 HostC 和 HostD 执行 Ping 操作。】
ping <Host IP address>
请注意,HostE 位于远程区域,请重复之前的步骤,对 HostE 执行 Ping 操作
思考:针对 HostB、HostC 和 HostD 的网络可访问性测试本应是成功的。但针对 HostE 的测试却失败了。为什么?

在此任务中,将在主区域中转网关与远程区域中转网关之间建立对等连接。AWS Transit Gateway 使用自治系统编号 (ASN) 与另一个中转网关建立对等连接。用于对等连接的路由协议是边界网关协议 (BGP)。
在 AWS 管理控制台中,使用 AWS 搜索栏搜索VPC ,然后从结果列表中选择该服务。
现在将 AWS 区域切换到为远程区域,即切换AWS区域us-east-1。
在 AWS 管理控制台的右上角,选择 Region name(区域名称)。

在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateways(中转网关)。
在文本编辑器中记录远程网关的中转网关 ID。tgw-0d1ba3be61f49fab9

在此任务中,将添加与远程区域中转网关的对等连接。将在主区域中配置对等连接。
现在,将 AWS 区域更改回主区域。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Attachments(中转网关挂载)。
在页面顶部,选择 Create transit gateway attachment(创建中转网关挂载)按钮。
配置以下各项:
- Name tag - optional(名称标签 – 可选):remote-vpc-e
- Transit Gateway ID(中转网关 ID):选择中转网关
- Attachment type(挂载类型):Peering Connection(对等连接)
- Account(账户):My account(我的账户)
- Region(区域):选择远程区域名称
- Transit gateway (accepter)(中转网关(接受方)):复制并粘贴您在上一部分中记录的远程区域的中转网关 ID
- 选择 Create transit gateway attachment(创建中转网关挂载)按钮。

注意:挂载的状态将依次变为正在发起请求和等待接受。


目标中转网关必须批准对等连接请求。在此任务中,将允许从主区域到远程区域的对等连接。
现在将 AWS 区域更改为远程区域。
注意:如果收到内容为 An error occurred, Transit Gateway Attachment tgw-attach-xxxxxxxx was deleted or does not exist.(出现错误,中转网关挂载 tgw-attach-xxxxxxxx 被删除或不存在。)的错误消息,请忽略。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Attachments(中转网关挂载)。
要确认,请选择 接受 按钮。





注意:挂载的状态可能需要几分钟的时间才能从待处理变为可用。
在此任务中,需要将挂载关联到路由表。这样,流量就可以从挂载发送到目标路由表。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Route Tables(中转网关路由表)。
选择 remote-rt 中转网关路由表。
选择 Associations(关联)选项卡。
选择 Create association(创建关联)按钮。
配置以下各项:
- Choose attachment to associate(选择要关联的挂载):选择不带名称标签且 Resource Type(资源类型)为 peering(对等连接)的挂载 ID
- 选择 Create association(创建关联)按钮。


在此任务中,将修改远程区域中转网关的默认路由,以便指向对等中转网关。通过执行这一操作,可以将本地子网以外的流量路由到对等中转网关。
选择 Routes(路由)选项卡。
选择 CIDR 为 0.0.0.0/0 的路由。
从 *Actions* (操作)菜单中,选择 Replace static route(替换静态路由)。
此时将显示 Replace static route(替换静态路由)页面。
配置以下各项:
- Choose attachment(选择挂载):选择远程对等连接的挂载 ID,该连接没有名称标签且 Resource Type(资源类型)为 peering(对等连接)
- 选择 Replace static route(替换静态路由)按钮。



在此任务中,将添加默认路由以便指向中转网关。这样,HostE 就能够向中转网关发送非本地流量。
在左侧导航窗格中,向上滚动到 Virtual Private Cloud 部分,然后选择 Route Tables(路由表)。
选择 vpc_e-private 路由表。
从 *Actions* (操作)菜单中,选择 Edit routes(编辑路由)。
选择 *Add route*(添加路由),然后配置以下各项:
- Destination(目的地):0.0.0.0/0
- Target(目标):复制并粘贴远程区域的中转网关 ID
- 选择 Save changes(保存更改)按钮。

注意:对于目标,您也可以键入
tgw-,并选择名为 remote-tgw 的中转网关。
重复任务 1 中的步骤,对 HostB、HostC、HostD 和 HostE 执行 Ping 操作。记录结果。
请注意,命令主机仍然无法对 HostE 执行 Ping 操作。更新主区域中的路由,以便命令主机可以对 HostE 执行 Ping 操作。
解决方案
注意:在更新路由之后,您应能够访问所有主机。
1、更新主区域的路由表关联
确保您位于控制台中的主区域内。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Route Tables(中转网关路由表)。
选择 maintransitgw-rt 中转网关路由表。
选择 Associations(关联)选项卡。
选择 Create association(创建关联)按钮。
配置以下各项:
- Choose attachment to associate(选择要关联的挂载):选择名称标签为 remote-vpc-e 的 Attachment ID(挂载 ID)
- 选择 Create association(创建关联)按钮。

2、更新主区域的中转网关路由表
其次,添加静态路由表以从远程区域添加 VPC E 子网,从而指向对等连接中转网关关联。这样,中转网关就可以路由发送到 VPC E 的流量。
选择 Routes(路由)选项卡。
选择 Create static route(创建静态路由)
配置以下各项:
- CIDR:10.0.0.0/16
- Choose attachment(选择挂载):选择名称标签为 remote-vpc-e 的挂载 ID
- 选择 Create static route(创建静态路由)按钮。
注意:选择 Routes(路由)选项卡,查看新路由。如果没有立即显示,请在几秒钟后刷新页面,直到路由显示。



网络验证
重复任务 1 中的步骤,对 HostB、HostC、HostD 和 HostE 执行 Ping 操作。记录结果。
命令主机现在应该能够成功对 HostE 执行 Ping 操作。

在此任务中,将使用黑洞路由来筛选流量。可以为 VPC B 和 VPC D 中的子网创建黑洞路由,如下图所示:

中转网关路由表中的黑洞路由会丢弃与路由匹配的流量。
在 AWS 管理控制台中,使用 AWS 搜索栏搜索 VPC,然后从结果列表中选择该服务。
在左侧导航窗格中,向下滚动到 Transit Gateways(中转网关)部分,然后选择 Transit Gateway Route Tables(中转网关路由表)。
选择 maintransitgw-rt 中转网关路由表。
从 *Actions* (操作)菜单中,选择 Create static route(创建静态路由)。
此时将显示 Create static route(创建静态路由)页面。
配置以下各项:
- CIDR*:10.2.2.0/24
- 选择 Blackhole(黑洞)
- 选择 Create static route(创建静态路由)按钮。
注意:选择 Routes(路由)选项卡,查看新路由。如果没有立即显示,请在几秒钟后刷新页面,直到路由显示。


重复上述步骤,为 VPC D 子网 (10.4.4.0/24) 添加黑洞路由。

重复任务 1 中的步骤,对 HostB、HostC、HostD 和 HostE 执行 Ping 操作。记录结果。
注意:针对 HostB 和 HostD 的网络可访问性测试应该会失败。

在此任务中,需要使用 Network Manager 在集中式控制面板中将全局网络可视化为逻辑示意图或地图。然后,使用路由分析器来检查命令主机与 HostE 之间的路由。
在 AWS 管理控制台中,使用 AWS 搜索栏搜索VPC ,然后从结果列表中选择该服务。
在左侧导航窗格中,选择 Network Manager(网络管理器)。
选择 Transit Gateway Network Manager(中转网关网络管理器)卡的链接文本。

选择 Get Started(开始使用)。
选择 *Create global network*(创建全局网络)或 Create global network(创建全球网络)。

配置以下各项:
- Name(名称):TGW-Network
- Description(描述):Transit Gateway Network
- 选择 Next(下一步)。
- 取消选择 Add core network in your global network(在全局网络中添加核心网络)
- 选择 Next(下一步)。
- 选择 Create global network(创建全局网络)按钮。




等待 Global network State(全局网络状态)显示可用。
在 Global networks(全局网络)窗格中,选择 TGW-Network 名称的超链接。
从左侧导航窗格中选择 Transit gateways(中转网关)。
选择 Register Transit Gateway(注册中转网关),以便添加要监控的中转网关。

选择两个中转网关,然后选择 注册中转网关 按钮。

注意:状态可能需要几分钟的时间才能从待处理变为可用。请时不时刷新浏览器页面,直到状态显示为可用。

要查看网络,在左侧导航窗格中选择 Transit gateway network(中转网关网络)。
查看 Geography(地理位置)、Topology tree(拓扑树)和 Monitoring(监控)选项卡。

在此控制面板上,您可以将全局网络可视化为拓扑图和地图。您可以查看使用率指标,如输入/输出的字节数、输入/输出的数据包和丢失的数据包。您还可以查看有关拓扑、路由和上/下行连接状态变化的提醒。



选择 Route Analyzer(路由分析器)选项卡。
配置以下各项:
Source(源)
- Transit Gateway(中转网关):maintransitgw
- Transit Gateway attachment(中转网关挂载):vpc-a
- IP address(IP 地址):复制并粘贴 CommandHostPrivateIP 公有IP 地址
- 选择 Include return path in results(在结果中包含返回路径)
Destination(目的地)
- Transit Gateway(中转网关):remote-tgw
- Transit Gateway attachment(中转网关挂载):vpc-e
- IP address(IP 地址):复制并粘贴实验页面左侧的 HostE IP 地址
要分析网络路径,请选择 Run route analysis(运行路由分析)按钮。
可以查看命令主机与 HostE 之间的转发和返回网络路径。可以使用这一功能排除两个终端节点之间的网络问题。

