[网络] AWS Transit Gateway Workshop

[网络] AWS Transit Gateway Workshop

更详细的Workshop 请见 https://catalog.us-east-1.prod.workshops.aws/workshops/fd42edbb-d80d-4340-9e4b-f928e1e0794a

什么是AWS Transit Gateway

AWS Transit Gateway 是一项服务,使客户能够将其Amazon Virtual Private Cloud(VPC)和其内部部署网络连接到高度可用的网关。 AWS Transit Gateway提供更轻松的连接,更好的可见性,更多控制和按需带宽。

AWS Transit Gateway 通过中央枢纽连接 VPC 和本地网络。这简化了您的网络,并且结束了复杂的对等关系。它用作云路由器 - 每个新连接都只进行一次。

随着您进行全球扩展,区域间的对等使用 AWS 全球网络将 AWS Transit Gateway 连接在一起。您的数据可自动加密,且从来不会通过公共互联网传播。而且,由于处于中央位置,AWS Transit Gateway Network Manager对您的整个网络有独特的视角,甚至会连接到软件定义的广域网 (SD-WAN) 设备。

过去,客户使用他们自己构建和管理的第三方解决方案和/或传输VPC。为了消除大部分无法区分的繁重工作,我们将使用 ** AWS Transit Gateway ** 服务提供此连接和路由。

Transit gateway 概念

为了更好的学习Transit gateway,以下是中转网关的关键概念:

  • 挂载 (Attachments) — 您可以挂载以下各项:

    • 一个或多个 VPC
    • Connect SD-WAN/第三方网络设备
    • AWS Direct Connect 网关
    • 与另一个中转网关的对等连接
    • 与中转网关的 VPN 连接
  • 中转网关最大传输单位 (Transit gateway Maximum Transmission Unit - MTU) — 网络连接的最大传输单位 (MTU) 是能够通过该连接传递的最大可允许数据包的大小(以字节为单位)。连接的 MTU 越大,可在单个数据包中传递的数据越多。对于 VPC、AWS Direct Connect、Transit Gateway Connect 和对等连接挂载之间的流量,中转网关支持的 MTU 为 8500 字节。VPN 连接上的流量可以具有的 MTU 为 1500 字节。

  • 中转网关路由表 (Transit gateway route table ) — 中转网关具有默认的路由表,且可选具有其他路由表。路由表包含动态路由和静态路由,它们根据数据包的目标 IP 地址决定下一个跃点。这些路由的目标可以是任何中转网关挂载。默认情况下,Transit Gateway 挂载与默认的中转网关路由表关联。

  • 关联 (Associations ) — 每个挂载 (Attachments)只同一个中转网关路由表相互关联。每个中转网关路由表可以与零到多个挂载 (Attachment) 关联。

  • 路由传播 (Route propagation ) — VPC、VPN 连接或 Direct Connect 网关可以动态地将路由传播到中转网关路由表。默认情况下,使用 Connect 挂载,路由会传播到中转网关路由表。使用 VPC 时,您必须创建静态路由以将流量发送到中转网关。使用 VPN 连接或 Direct Connect 网关时,路由使用边界网关协议 (BGP) 从中转网关传播到本地路由器。使用对等连接的连接时,您必须在中转网关路由表中创建静态路由以指向对等连接。

Transit gateway 设计最佳实践

  • 为每个中转网关 VPC 附件使用单独的子网。对于每个子网,请使用小型 CIDR(例如 /28),以便您有更多地址用于 EC2 资源。当您使用单独的子网时,您可以配置以下内容:
    • 将与中转网关子网关联的入站和出站 NACL 保持打开状态。
    • 根据流量,您可以将 NACL 应用于工作负载子网。
  • 创建一个网络 ACL 并将其与关联到中转网关的所有子网相关联。确保网络 ACL 在入站和出站方向打开。
  • 将同一个 VPC 路由表与关联到中转网关的所有子网相关联,除非您的网络设计需要多个 VPC 路由表(例如,通过多个 NAT 网关路由流量的中间盒 VPC)。
  • 使用边界网关协议 (BGP) 站点到站点 VPN 连接。如果用于连接的客户网关设备或防火墙支持多路径,请启用该功能。
  • 为 AWS Direct Connect 网关挂载和 BGP 站点到站点 VPN 挂载启用路由传播。
  • 您不需要额外的中转网关即可实现高可用性,因为根据设计,中转网关具有高可用性。
  • 限制中转网关路由表的数量,除非您的设计需要多个中转网关路由表。
  • 对于多区域部署,我们建议您为每个中转网关使用唯一自治系统编号(Amazon 端的 ASN)。为了实现冗余,请在灾难恢复区域中使用多个中转网关。有关更多信息,请参阅使用 AWS Transit Gateway 区域间对等构建全局网络 (http://aws.amazon.com/blogs/networking-and-content-delivery/building-a-global-network-using-aws-transit-gateway-inter-region-peering/)

本次实验架构设计

本次实验架构最终网络拓扑

本次 workshop 所涉及的服务

  • Amazon Virtual Private Cloud (VPC)

    • 通过 Amazon Virtual Private Cloud (Amazon VPC),您可以将 AWS 资源启动到您定义的虚拟网络中。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用 AWS 的可扩展基础设施的优势。
  • AWS Transit Gateway

    • Transit Gatewasy (中转网关)是网络中转中心,您可用它来互连 Virtual Private Cloud (VPC) 和本地网络。
  • AWS Site-to-Site VPN

    • 您本地数据中心连接到 AWS VPC.
    • 本次实验使用开源软件 strongswan来模拟 Site-to-Site IPSec VPN 连接。
    • 您使用站点到站点 VPN 连接将远程网络连接到 VPC。每个站点到站点 VPN 连接都有两个隧道,每个隧道都使用唯一的虚拟私有网关公有 IP 地址。配置两条隧道以提供冗余能力是重要的步骤。当一个隧道不可用(例如,因维护而关闭)时,网络流量会自动路由到该特定站点到站点 VPN 连接的可用隧道。

    隧道内 IPv4 CIDR VPN 隧道内的(内部)IPv4 地址范围。您可以指定 169.254.0.0/16 范围中大小为 /30 的 CIDR 块。对于使用同一虚拟私有网关的所有站点到站点 VPN 连接,CIDR 块必须是唯一的。 以下 CIDR 块由系统保留,不能使用: 169.254.0.0/30 169.254.1.0/30 169.254.2.0/30 169.254.3.0/30 169.254.4.0/30 169.254.5.0/30 169.254.169.252/30 默认值:169.254.0.0/16 范围内大小为 /30 的 IPv4 CIDR 块。

  • AWS Cloud9

    • AWS Cloud9 是一种基于云的集成开发环境(IDE),您只需要一个浏览器,即可编写、运行和调试代码。 它包括一个代码编辑器、调试程序和终端。 Cloud9 预封装了适用于JavaScript、Python、PHP 等常见编程语言的基本工具,您无需安装文件或配置开发计算机,即可开始新的项目
    • 我们将使用Cloud9云开发环境来编辑文件和访问数据中心的VPN虚拟设备。
  • AWS Systems Manager, Session Manager

    • Session Manager 是一个完全托管的 AWS Systems Manager 允许您管理 的 功能 Amazon Elastic Compute Cloud (Amazon EC2) 实例, 本地实例, VMs通过基于浏览器的交互式一键式外壳或 AWS Command Line Interface (AWS CLI)。 Session Manager 提供了安全且可审核的实例管理,而无需打开入站端口。 维护堡垒主机 或管理 SSH 密钥。 Session Manager 还可以轻松遵守需要对 实例进行受控访问的企业策略, 严格的安全实践, 和具有实例访问详细信息的可完全审计的日志, 同时, 仍为最终用户提供对托管实例的简单一键式跨平台访问。
    • 由于本次实验有的 EC2 实例在自由子网中,所以不能从 Internet 直接使用 SSH连接。所以需要使用 Session manager 来进行测试。Session manager不需要管理SSH密钥就可以安全访问服务器shell
  • AWS CloudFormation

    • AWS CloudFormation 通过将基础设施视为代码,为您提供一种简单的方式,为一系列相关 AWS 资源和第三方资源建模,快速而又一致地对这些资源进行预置并在它们的整个生命周期内对其进行管理。CloudFormation 模板描述了您所需的资源及其依赖项,这样,您就可以将它们一起作为一个堆栈进行启动和配置。您可以根据需要,使用模板将整个堆栈作为一个单元进行创建、更新和删除,无需单独管理资源。您可以跨多个 AWS 账户和 AWS 区域管理和预置堆栈。

假设

  1. 公司当前网络部署在 AWS Global Region, 本次 Workshop 会以 us-east-2 region 为例。
  2. 为了模拟组织本地数据中心,本次 workshop 会单独建议一个 VPC (DC1-tgw, CIDR 10.4.0.0/16) 模拟本地数据中心。
  3. 在本地数据中心会部署4个子网,用于部署 StrongSwan 来搭建 IPSec Site-to-Site VPN。

业务环境

VPC 逻辑划分如下: Speficy Details Screenshot

VPC 划分

在本workshop 中,我们将提供四种类型的vpc:

  1. Non-production VPCs:

    • 目的: 我们可以创建vpc用于组织内部的培训、开发和QA/测试。
    • CIDR:10.16.0.0/13
    • 一共有两个 VPC (红色表示)
      • Non-Prod VPC1 CIDR:10.16.0.0/16
      • Non-Prod VPC2 CIDR:10.17.0.0/16
  2. Datacenter Service VPCs

    • 目的: 用于我们想要在所有vpc中共享的资源和服务。
    • CIDR:10.0.0.0/16
    • 一共有1个 VPC (绿色表示)
      • Datacenter Services VPC
  3. Production VPCs:

    • 目的: 用于生产环境。
    • CIDR:10.8.0.0/13
    • 一共有1个 VPC (蓝色表示)
      • Production VPC1
  4. Datacenter VPC:

    • 目的: 我们会新建一个VPC来模拟本地数据中心(一个在云端模拟的模拟的数据中心)
    • CIDR:10.4.0.0/16
    • 一共有1个 VPC (白色表示)
      • DataCenter VPC1

随后我们会使用 Cloudformation 自动创建如上 5 个 VPC。

网段设计

  1. Non-Production VPC CIDR:10.16.0.0/13是10.16.0.0-10.23.255.255。 我们可以将其划分为8个 /16的子网,每个VPC对应一个。在本 workshop 仅仅使用了其中的两个。 Non-Prod VPC1 (10.16.0.0/16) 和 Non-Prod VPC2 (10.17.0.0/16)

  2. Production VPC CIDR:10.8.0.0/13是10.8.0.0-10.15.255.255。 我们还可以将其划分为8个 /16子网。 在本 workshop 仅仅使用了其中的一个, Production VPC1 (10.8.0.0/16)。

  3. Datacenter service CIDR:10.0.0.0/16-10.0.0.0-10.0.255.255。 我们将用于1个Datacenter Services VPC。

业务需求

  1. Non Prod VPC1 和 Non Prod VPC2 不能访问 Production VPC 环境。
  2. Non Prod VPC1 和 Non Prod VPC2 可以访问 Shared Service VPC。
  3. Non Prod VPC1 和 Non Prod VPC2 可以访问 Data Center。
  4. 其他 VPC 互联互通。

Speficy Details Screenshot

详情

  1. 非生产网络环境(Non-Prod VPC1 及 Non-Prod VPC2 ) 不能访问 生产环境网络 (Production VPC1)
  2. 生产环境网络 (Production VPC1) 也 不能访问 非生产网络环境(Non-Prod VPC1 及 Non-Prod VPC2 )
  3. 非生产网络环境(Non-Prod VPC1 及 Non-Prod VPC2 ) 的实例如果要访问 Internet, 必须经过Transit gateway 并经过 DatacenterService VPC 中位于 public subnet 的 NAT Gateway作为出口。
  4. 生产环境网络 (Production VPC1) 的实例如果要访问 Internet, 必须经过 DatacenterService VPC 中位于 public subnet 的 NAT Gateway作为出口。
  5. 本地数据中心网络(DataCenter VPC) 的服务器 必须经过Transit gateway访问 其他网络资源。

创建VPC

运行CloudFormation模板

1.单击下面的CloudFormation启动链接

https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/create/review?stackName=tgw&templateURL=https://aws-industry-solutions-workshop.s3.cn-northwest-1.amazonaws.com.cn/tgw-workshop/1.tgw-vpcs.yaml&param_AvailabilityZoneA=us-east-2a&param_AvailabilityZoneB=us-east-2b

1.进入 cloudformation console 页面后。 保持 stack name, VPC parameter 保持默认值。示例如下:

  • stack name: tgw
  • VPC Parameters:
    • Availablity Zone 1: us-east-2a
    • Availablity Zone 2: us-east-2b 勾选 ‘I acknowledge that AWS CloudFormation might create IAM resources with custom names.’ checkbox。

2.点击 [create stack] 按钮。

相关资源开始创建。

等待大概 5-6 分钟,所有资源创建完毕。 3.等待堆栈显示** Create_Complete **。

创建资源详情

如下资源将会被创建。

  • Cloud9 服务器
  • VPC subnet
  • VPC Route table
  • Security group
  • EIP
  • NAT Gateway
  • VPC endpoint

具体资源详见 Resource 便签页。 如下图所示。

部署TransGateway和数据中心(模拟)路由器

现在,我们准备开始我们的网络链接和路由策略。运行CloudFormation 以部署Transit gateway,路由表和数据中心(模拟)路由器(StrongSwan)。

1.单击下面的CloudFormation启动链接.

https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/create/review?stackName=tgw-strongswan&templateURL=https://aws-industry-solutions-workshop.s3.cn-northwest-1.amazonaws.com.cn/tgw-workshop/2.tgw-csr.yaml&param_ParentStack=tgw&param_RouterChoice=StrongSwan

2.对于“Specifiy stack details”,确保如下参数输入。

参数说明:

  • Stack name : tgw-strongswan
  • Parent Stack: tgw
  • KeyPair: 从下拉列表选择 - ee-default-keypair
  • RouteChoice: 选择 StrongSwan

3.勾选 I acknowledge that AWS CloudFormation might create IAM resources with custom names. 4.单击右下角的 Create Stack 按钮。创建资源。

5.等待堆栈显示 Create_Complete

  1. 等待 Stack 创建完成。

该 cloudformation 共创建如下资源

Resource ResouceID ResouceType
DefaultRouteRed tgw-rtb-05f87f6f7a99c317b_0.0.0.0/0 AWS::EC2::TransitGatewayRoute
InstanceProfile tgw-strongswan-InstanceProfile-L7KKXK2GHQA AWS::IAM::InstanceProfile
NP2PrivateDefaultRoute tgw-s-NP2Pr-1BGU48ASSR9UB AWS::EC2::Route
P1PrivateDefaultRoute tgw-s-P1Pri-1VDKCW1Y7BI9L AWS::EC2::Route
PrivateDefaultRoute tgw-s-Priva-1C0Y6QJDQ0FW1 AWS::EC2::Route
PropagateDCS1Blue tgw-attach-0572d757fa273f330_tgw-rtb-0ad3b9c51ce6e990b AWS::EC2::TransitGatewayRouteTablePropagation
PropagateDCS1Green tgw-attach-0572d757fa273f330_tgw-rtb-00aa8ce4e819ca193 AWS::EC2::TransitGatewayRouteTablePropagation
PropagateDCS1Red tgw-attach-0572d757fa273f330_tgw-rtb-05f87f6f7a99c317b AWS::EC2::TransitGatewayRouteTablePropagation
PropagateNP1Green tgw-attach-091d76281b20b0774_tgw-rtb-00aa8ce4e819ca193 AWS::EC2::TransitGatewayRouteTablePropagation
PropagateNP1Red tgw-attach-091d76281b20b0774_tgw-rtb-05f87f6f7a99c317b AWS::EC2::TransitGatewayRouteTablePropagation
PropagateNP2Green tgw-attach-03f25454faa427c7c_tgw-rtb-00aa8ce4e819ca193 AWS::EC2::TransitGatewayRouteTablePropagation
PropagateNP2Red tgw-attach-03f25454faa427c7c_tgw-rtb-05f87f6f7a99c317b AWS::EC2::TransitGatewayRouteTablePropagation
PropagateP1Blue tgw-attach-009868b622ae062da_tgw-rtb-0ad3b9c51ce6e990b AWS::EC2::TransitGatewayRouteTablePropagation
PropagateP1Green tgw-attach-009868b622ae062da_tgw-rtb-00aa8ce4e819ca193 AWS::EC2::TransitGatewayRouteTablePropagation
RouteTableBlue tgw-rtb-0ad3b9c51ce6e990b AWS::EC2::TransitGatewayRouteTable
RouteTableGreen tgw-rtb-00aa8ce4e819ca193 AWS::EC2::TransitGatewayRouteTable
RouteTableRed tgw-rtb-05f87f6f7a99c317b AWS::EC2::TransitGatewayRouteTable
ServerRole DC1-tgw-strongswan-SSMRole AWS::IAM::Role
SwanCustomerGateway cgw-0c89144af09b106bc AWS::EC2::CustomerGateway
SwanEIPAssoc eipassoc-0a5f96e594a803e2b AWS::EC2::EIPAssociation
SwanIP 18.188.59.21 AWS::EC2::EIP
SwanInstance i-022aff05b76a9ca86 AWS::EC2::Instance
SwanInterface eni-025ed7a4c3d7d8981 AWS::EC2::NetworkInterface
SwanPrivateDefaultRoute tgw-s-SwanP-J9L2LUX7L0EF AWS::EC2::Route
SwanSecGroup sg-0359bcd05bec8da70 AWS::EC2::SecurityGroup
TransitGateway tgw-02e0ac23367f15df9 AWS::EC2::TransitGateway

统计信息如下

Row Labels Count of Resource
AWS::EC2::CustomerGateway 1
AWS::EC2::EIP 1
AWS::EC2::EIPAssociation 1
AWS::EC2::Instance 1
AWS::EC2::NetworkInterface 1
AWS::EC2::Route 4
AWS::EC2::SecurityGroup 1
AWS::EC2::TransitGateway 1
AWS::EC2::TransitGatewayRoute 1
AWS::EC2::TransitGatewayRouteTable 3
AWS::EC2::TransitGatewayRouteTablePropagation 9
AWS::IAM::InstanceProfile 1
AWS::IAM::Role 1
Grand Total 26

创建 Transit Gateway Attachment

  1. 在AWS管理控制台中,选择“Sevice”,然后选择“ VPC”。 或者点击 https://us-east-2.console.aws.amazon.com/vpc/home?region=us-east-2 进入 VPC Console。

  2. 从左侧菜单中,向下滚动并选择** Transit Gateway Attments**。

  3. 您将看到列出的VPC attachment, 已经连接到了 Production VPC1, Non-Prod VPC1, Non-Prod VPC2, 及 DataCenterService VPC.

但还没没有连接到 Datacenter VPC (如下图中的蓝色虚线所示), 需要我们手工创建 VPC attachment。

  1. 点击 "Create Transit Gateway Attachment" 按钮,填写“Create Transit Gateway Attachment”表格。信息如下所示:
  • Transit Gateway ID, 选择 Name tag 是 tgw 的 Trainsit gateway。

  • Attachment Type,选择 VPN

  • Customer Gateway(CGW),选择Existing

  • Customer Gateway ID, 选择 Name tag 是 DC1-CGW 的 Customer gateway。

  • Routing options,选择 “Dynamic(requires BGP)”。

  • Enable Acceleration 保持 非选择 选择状态。

  • Inside IP CIDR for Tunnel 1, 输入 169.254.10.0/30

  • Pre-Shared Key for Tunnel 1, 输入 awsamazon

  • Inside IP CIDR for Tunnel 2, 输入 169.254.11.0/30

  • Pre-Shared Key for Tunnel 2, 输入 awsamazon

输入完成后,如下图所示

  1. 点击 Create attachment 创建 Trainsit gateway attachment. 完成后点击 “close” 按钮。

  2. 选择菜单 Transit Gateway Attachments. 我们需要确保 Transit gateway attachment 的状态是available, 而不是pending. 如果是 pending 的状态,请稍等片刻并点击刷新按钮。

修改 Transit Gateway Route Tables - Green Route Table

1.从左侧的菜单中选择“Transit Gateway Route Tables”。从主面板的表中选择 [Green Route Table]。然后点击 [Associations] 标签。Associations 意味着从外部流向Transit网关的流量将使用此路由表来了解数据包在通过TGW路由后的去向。

在“Green Route Table”中,我们已经有了一个attachment,即“Datacenter Services VPC”。 在“Associations”标签中单击“create association”。从下拉列表中,选择 resource type 是 VPN。

  • note:它应该是列表中唯一“association route table” 值为空的记录 。

单击[create association”。] 点击 "close" 后,新的 association 已经创建并 associated.

  1. 在“Transit Gateway Route Tables”中,查看“Propagations”选项卡。动态资源会被加入到路由表中。一个attachment可以传播到多个路由表。对于DataCenter VPC,我们希望其中的路由传播到所有路由表,以便与每个路由表关联的VPC可以路由回到DataCenter VPC。 让我们从“Green Route Table”开始。我们可以看到所有VPC都在将其CIDR传播到路由表。由于“DataCenterService VPC”也与此路由表相关联,因此我们需要将VPN路由传播到“Green Route Table”。

3.单击“Create propagation”,选择VPN(先前由您命名)Attachment,然后单击“Create propagation”。在下拉框 Choose attachment to propagate* 中选择 Resouce type 是 VPN 的 attacment。 点击 “close"

4.针对 对“Red Route Table”和“Blue Route Table”,在在“Propagations”选项卡上,重复上述步骤。

确保 “Red Route Table” 已经成功加入 Propagations. 如下图所示。 确保 “Blue Route Table”,已经成功加入 Propagations.如下图所示。

5.查看每个路由表,并注意“Route”选项卡。您可以看到传播的路由,以及由CloudFormation模板为您创建的静态路由表。这是默认路由(0.0.0.0/0),它将把发往Internet的流量引导到 DatacenterServices VPC,并最终通过该VPC中的NAT网关。 例如 Green Route Table 中的 Routes 选项, 其中

完成以上步骤,已经完成各个 VPC 以及 VPN 同 TGW 的连通。 当前环境如下

在 VPC 中创建路由表以使用Transit Gateway

而CloudFormation模板为中转网关创建了到vpc attachment和 route table。我们需要在VPC内设置路由。

  1. 在AWS管理控制台中更改您工作的区域。这是在右上角的下拉菜单。

  2. 在AWS管理控制台选择“Services”,然后选择“VPC”。

  3. 从左边的菜单中,向下滚动并选择Route tables。- 注意:不是 Trainsit gateway Route tables.

  4. 您将看到列出的路由表。可以点击 Name 列从而按照名字进行排序。

修改 NP1-tgw-Private Route Table

1.让我们从NP1-tgw-Private Route Table路由表开始,选中它旁边的复选框。让我们看看面板的底部,然后点击Routes标签。目前只有一条路由,即本地VPC路由。 对于 Non-Prod VPC1 和 Non-Prod VPC2, 我们可以指定默认路由到Transit Gateway。

2.选择 NP1-tgw-Private Route Table,在“Routes”页签中单击“Edit Routes”按钮。

  1. 在“Edit Routes”界面中,单击“Add Route”按钮,

4.在 Destination 输入框输入 0.0.0.0/0,输入一条缺省路由。在目标下拉菜单中,选择Transit Gateway并选择为这个项目创建的Transit Gateway。当前环境应该是只有一个。

5.点击 Save Route 按钮 , 路由添加完成。

_注意:路由表**NP2-tgw-Private Route Table P1-tgw-Private Route Table ** 已经在 Cloudformation 中进行配置,自动创建默认路由,所以你无需要重新设置。

修改 DCS1-tgw-Public Route Table 及 DCS1-tgw-Private Route Table

  1. 对于NAT网关所在的DCS1-tgw-Public Route TableDCS1-tgw-Private Route Table,我们需要一个特殊的路由。由于我们已经有一个默认路由指向公共的Internet网关(IGW)和私有的Nat网关(NGW)来访问Internet,所以我们需要一个更具体的内部路由条目。让我们使用rfc 1918 10.0.0.0/8 CIDR,因为它只能是内部的,并且允许将来的扩展而不需要更改。 按照以上步骤在DCS1-tgw-Private Route Table路由表中创建目的地10.0.0.0/8的路由。_Note: DCS1-tgw-Public Route Table已经使用 CloudFormation 创建了缺省路由作为设置的一部分。_确保不要修改指向IGW org NGW的0.0.0.0/0路由表。

点击 Add route 按钮。

最终路由表设置

Specify Details Screenshot 注意:请忽略路由表中的 blackhole 条目,现在 blackhole 的条目还没有创建

假设

根据本实验刚开始所定义的假设,有些 VPC 之间需要禁止访问。例如:

Speficy Details Screenshot

  1. 非生产网络环境(Non-Prod VPC1 及 Non-Prod VPC2 ) 不能访问 生产环境网络 (Production VPC1)
  2. 生产环境网络 (Production VPC1) 也 不能访问 非生产网络环境(Non-Prod VPC1 及 Non-Prod VPC2 )
  3. 非生产网络环境(Non-Prod VPC1 及 Non-Prod VPC2 ) 的实例如果要访问 Internet, 必须经过Transit gateway 并经过 DatacenterService VPC 中位于 public subnet 的 NAT Gateway作为出口。
  4. 生产环境网络 (Production VPC1) 的实例如果要访问 Internet, 必须经过 DatacenterService VPC 中位于 public subnet 的 NAT Gateway作为出口。
  5. 本地数据中心网络(DataCenter VPC) 的服务器 必须经过Transit gateway访问 其他网络资源。

当前网络配置

根据当前网络配置,Non-Prod VPC1 同 Production VP1 之间还是可以访问。连通示意如下:

阻止VPC间访问

需要阻止非生产网络环境(Non-Prod VPC1 及 Non-Prod VPC2 ) 不能访问生产环境网络 (Production VPC1)

解决方法:当如果我们想阻止Non-Prod VPC1 同 Production VP1之间的访问,我们需要在 Transit gateway route table 中设置 Blackhole 规则。

设置 Blue Route Table

  1. 在AWS管理控制台选择“Services”,然后选择“VPC”。

  2. 从左边的菜单中,向下滚动并选择Transit gateway route table。 点击链接 https://us-east-2.console.aws.amazon.com/vpc/home?region=us-east-2#TransitGatewayRouteTables:sort=transitGatewayRouteTableId

  3. 从主面板的表中选择Blue Route Table。让我们看看底部,然后点击Routes标签。

  4. 查看现有的路由,看到0.0.0.0/0路由,它将数据从 No-prod VPC 发送到Datacenter Service VPC。让我们设置路由进行阻止。

点击 [Create staticTable] 按钮。

  1. 在[“Create static Table”]界面,对于CIDR输入10.16.0.0/13,勾选BlackHole旁边的复选框。这将阻止任何目的地为Non-Product vpc的流量。这是因为TGW查找最特定的匹配路由,而/13比/0路由更精确匹配。

点击 [Create static route] 按钮。 至此,已经设置 Production VPC1 到 Non-Prod VPC1 方向的访问。

设置 Blue Route Table

选择 [Red Route Table]记录。 点击 Create Static Route 按钮。在“Create static Table”界面,对于CIDR输入 10.8.0.0/13 ,勾选BlackHole旁边的复选框。

点击 Close 按钮关闭。

至此,已经设置 Non-Prod VPC1 到 Production VPC1 方向的访问。

测试连通性

期望 从 Non-Prod VPC1 的 EC2 实例无法访问到 Production VPC1EC2 实例。 点击 https://us-east-2.console.aws.amazon.com/systems-manager/session-manager?region=us-east-2 选择左侧的 session manager, 继续选择 NP1-tgw-Server 点击 Start session 按钮。 在 session manager 的 console 中输入

1ping 10.8.22.100

系统只输出

1PING 10.8.22.100 (10.8.22.100) 56(84) bytes of data.

输入 ctrl+x 终止当前进程。出现如下输出

1PING 10.8.22.100 (10.8.22.100) 56(84) bytes of data.
2^C
3--- 10.8.22.100 ping statistics ---
43 packets transmitted, 0 received, 100% packet loss, time 2030ms

说明已经成功的阻止 Non-Prod VPC1 到 Production VPC1 的访问。