【问题标题】:AWS Transit Gateway RoutingAWS 中转网关路由
【发布时间】:2020-01-31 21:11:33
【问题描述】:

我正在专用 Transit Gateway 帐户中实施 Transit Gateway。然后我正在考虑从不同的账户连接多达 6 个 AWS VPC。我相信我需要将所有 6 个 Transit Gateway 附件添加到同一个 Transit Gateway 路由表以允许它们之间的连接 - 因为 AWS 不允许您将 TGW 附件与多个 TGW 路由表相关联。

这可行,所有 VPC 都可以相互通信 - 但是控制 VPC 之间的访问的最佳做法是什么。假设 D 是 Transit Gateway 帐户。

VPC A/B/C/D 都在 TGW 路由表上。如果我不希望 VPC A 与 VPC B 对话,但允许 VPC A 与 VPC C 对话怎么办。我知道这不会发生,除非我将子网 VPC 路由添加到/传播它们,但我想要更多控制。

例如两个 TGW 路由表,一个带有 TGW Attachment (D)、VPC A、VPC B。另一个带有 TGW Attachment (D)、VPC A、VPC C 的 TGW 路由表。

我认为一种方法是将 NACL 添加到 Transit Gateway 子网,但这只会阻止整个 VPC。

【问题讨论】:

  • 似乎我误解了 Transit Gateway,解决方案似乎是...为您要连接的每个 VPC 创建一个中转网关附件,为每个 VPC 创建一个中转网关路由表并附加 TGW附件,指定到该中转网关附件的路由。

标签: amazon-web-services


【解决方案1】:

你必须根据你的需要设计你的网络。

例如,我们有 4 个 VPC - VPC A、B、C、D。

要求:

如果我不希望 VPC A 与 VPC B 通信,但允许 VPC A 与 VPC C 通信,该怎么办。我知道这不会发生,除非我将子网 VPC 路由添加到/传播它们,但我喜欢更多控制权。

在设计方面:

VPC A VPC C VPC A VPC D

你需要创建一些东西:

  1. 中转网关 - tgw

  2. 中转网关附件:将所有 VPC A、C、D 附加到您创建的中转网关。附件 A (VPC A) --> tgw 附件 C (VPC C) --> tgw 附件 D (VPC D) --> tgw

  3. 中转网关路由表 (tgw-rt1):创建中转网关路由表并与所有附件(A、C 和 D)关联。创建传播并添加所有附件 A、C 和 D。这将自动生成路由。

这是流程,当流量从 VPC A 到 VPC C 时。VPC A 中的子网应该有到 tgw 的路由,所以流量会到达 tgw。 tgw 查看流量来自哪个附件及其附件 A(即 VPC A)并找到相应的路由表 tgw-rt1。现在 tgw-rt1 具有将流量传播到相应附件(即 VPC C)的路由。这只是一种方式,为了让流量流回 VPC A,您的 VPC C 中也应该有路由。

【讨论】:

    【解决方案2】:

    在回答问题时,模式应该如下......

    每个 VPC 都应该有一个 Transit Gateway Attachment。 每个 VPC 都应创建一个 Transit Gateway 路由表。 每个 Transit Gateway 路由表都应与该 Transit Gateway 附件相关联。 然后应将路由规则作为出口规则添加到 Transit Gateway 路由表中。

    在此示例中,VPC A 和 B 可以通信,A 和 C 可以通信。但 B 只能与 A 通信。

    VPC A (10.10.10.0/16) <-> TGW ATT A
    VPC B (10.10.11.0/16) <-> TGW ATT B
    VPC C (10.10.12.0/16) <-> TGW ATT C
    
    TGW RT TBL A
    10.10.11.0/16 (VPC B) -> TGW ATT B
    10.10.12.0/16 (VPC C) -> TGW ATT C
    
    TGW RT TBL B
    10.10.10.0/16 (VPC A) -> TGW ATT A
    
    TGW RT TBL C
    10.10.10.0/16 (VPC A) -> TGW ATT A
    

    此外,还需要将子网路由规则添加到打开的 VPC 和 SG。

    【讨论】:

      【解决方案3】:

      在 Hub and Spoke 模型中: 账户 A = 中心 帐户 B、C 和 D = 辐条

      用例 1 - 账户 B 、 C 和 D 可以与账户 A 通信。

      用例 2 - 账户 B 和 C 可以直接相互通信

      就设置 TGW 而言,它们之间的唯一区别是路由表。 VPC 路由表: 账户 B VPC 将具有到账户 C CIDR 和 TGW ID 的路由(账户 A 中定义的 TGW) 账户 C VPC 将具有到账户 B CIDR 和 TGW ID 的路由(账户 A 中定义的 TGW)

      TGW 路由表: Account B TGW Route 表传播到 Account C Attachment Account C TGW Route 表传播到 Account B Attachment

      在这种情况下,账户 B 和 C 不与 A 通信,因为没有 VPC 路由表,也没有 TGW 路由传播到 VPC A 附件。

      有关此场景的完整 terraform 代码和说明,请参阅此文档

      http://i-cloudconsulting.com/aws-transit-gateway-hub-and-spoke-model/

      【讨论】:

        【解决方案4】:

        截至 2020 年 9 月,TGW 配置发生了相当多的更改,因此此处更新可能会有所帮助。

        我们使用一个 TGW 和 3 个路由表(如前所述的 Hub 和 Spoke 模型)部署了类似的东西。

        TGW 附件

        • TransitVPC
        • VPC A
        • VPC B
        • VPN 本地

        路由表:

        • 隔离(默认关联表)
          • 0.0.0.0/0 与下一跳 TransitVPC
        • 本地(关联:附件 VPN)
          • 具有下一跳 TransitVPC 的所有已连接 VPC 的静态路由条目。 BGP 传播所需的路由条目
        • TransitVPC(默认传播表)
          • 包含所有连接的 VPC 的路由,相关 VPC 作为下一跃点

        TransitVPC 现在包含 NVA(网络虚拟设备,例如 Fortigate、Barracuda、Palo Alto)。 NVA 有两个接口用于私有和公共连接,因此有两个路由表:

        • 私有子网(连接到中转网关!)
          • 0.0.0.0/0 第一个防火墙节点的私有 eni(当集群故障转移到第二个节点时,路由表将被重写。请参阅供应商的相关文档)。
        • 公共子网(可选,在 VPC 的 inet 访问时需要)
          • 0.0.0.0/0 IGW/NatGW(取决于您的需求)

        NVA 将使用自己的内置路由表,将中转网关 eni IP 地址作为下一跳,否则它将在私有子网路由表中循环。

        您可以使用此设置部署有效的访问控制/IDS/IPS/AV/xxx 解决方案,并根据防火墙策略隔离所有流量。

        此设置还能够在 route53 的帮助下托管共享服务(VPC 端点)VPC。

        【讨论】:

          猜你喜欢
          • 2019-11-03
          • 2020-04-04
          • 2020-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-06
          • 2021-02-25
          • 1970-01-01
          相关资源
          最近更新 更多