【问题标题】:AWS IP address to use in terraform IPSec tunnels (via Transit Gateway)在 terraform IPSec 隧道中使用的 AWS IP 地址(通过 Transit Gateway)
【发布时间】:2021-06-17 01:58:33
【问题描述】:

我正在尝试构建 AWS terraform IPSec VPN 配置。但是,我不记得在哪里可以找到 AWS IPSec IP 地址; terraform cgw documentation 表示ip_address 字段是必需的。

答案应该假设 VPN 将连接到我的AWS Transit Gateway

我的地形:

resource "aws_customer_gateway" "cgw-abbv-for-local-and-remote" {
  bgp_asn    = 65001
  ip_address = "A.B.C.D"   #<-- I need this IP before terraform apply
  type       = "ipsec.1"

  tags = {
    Name        = "insert-cgw-name-here"
  }
}

resource "aws_vpn_connection" "vpn-abbv-for-local-and-remote" {
  customer_gateway_id = aws_customer_gateway.cgw-abbv-for-local-and-remote.id
  transit_gateway_id  = aws_ec2_transit_gateway.my-tgw-name.id
  type                = aws_customer_gateway.cgw-abbv-for-local-and-remote.type

  tags = {
    Name        = "insert-vpn-name-here"
  }
}

【问题讨论】:

    标签: amazon-web-services networking terraform vpn hcl


    【解决方案1】:

    似乎 OP 已经找到了答案,但让我加两分钱,因为两年前为了通过 AWS 高级网络证书,我花了很多时间弄清楚 AWS VPN 的问题。这可能对刚接触 VPN 的人有用——尤其是在 AWS 生态系统中:

    有一本很棒的书,名为AWS Certified Advanced Networking Official Study Guide,我会推荐所有担任云网络工程师角色的人阅读。 [1]

    它指出以下几点:

    • 创建 VPN 连接后,VPN 隧道会在产生流量时激活 来自您的 VPN 连接。 VGW不是发起者;您的客户网关必须启动隧道。如果您的 VPN 连接经历了一段空闲时间(通常 10 秒,具体取决于您的配置),隧道可能会关闭。这是因为 AWS 使用按需 DPD 机制。如果 AWS 没有收到来自 VPN 对等方的流量 10 秒后,AWS 发送一条 DPD“R-U-THERE”消息。如果 VPN 对等体没有响应 对于三个连续的 DPD,VPN 对等体被认为是死的,AWS 会关闭隧道。 [页。 100, 101]

    • 在 VPN 连接的非 AWS 端,VPN 在客户网关上终止。 客户网关是客户本地端的 VPN 终端设备的 AWS 术语。客户网关也可以作为运行的 EC2 实例托管在 AWS 中 满足下一节中给出的要求的 VPN 软件。 大多数客户不需要购买额外的设备,并且可以重复使用 现有的本地 VPN 终端设备来创建通往 VPC 的隧道。 [页。 110]

    • 您可以使用任何支持第 3 层 VPN 技术的第三方 VPN 设备。 AWS 不支持第 2 层 VPN 技术。 IPsec 用于 VPN 终止的 AWS 端的 VGW,因此您的 VPN 设备必须支持 IPsec 协议。您将为每个 VGW 设置两个 VPN 隧道。 对 BGP 路由协议的支持是可选的,但建议用于高级路由功能。其他路由协议,如开放最短路径优先 (OSPF) 不受支持 AWS。 您必须确保在本地防火墙中打开了正确的端口 让 IPsec 流量流动。 [页。 111]
      尤其是:VPN 连接的两端都必须拥有一个公共 IP 地址

    如果您还没有,我真的建议您跳过这些页面,以了解有关(混合)云架构的最佳实践和 AWS 思维方式。如果事情没有按照您想要的方式进行,您可以避免事后感到困惑。 IPSec(即第 3 层)VPN 比大多数人想象的更难做好。应该了解所有与路由和安全相关的内容,例如:IKESA基于策略的路由NAT-遍历ISAKMP等[另见p. 97: VPN 功能 -> 安全和路由部分]。

    另一个很好的参考是 AWS Site-to-Site VPN 指南 (PDF)。 [2]

    另外很高兴知道:AWS CloudFormation 文档中还可以找到许多 terraform 属性。 AWS::EC2::CustomerGateway 资源的 IpAddress 属性状态的文档 [3]:

    客户网关外部接口的Internet 可路由 IP 地址。地址必须是静态

    [1]https://www.programmer-books.com/wp-content/uploads/2019/04/AWS-Certified-Advanced-Networking-Official-Study-Guide.pdf
    [2]https://docs.aws.amazon.com/vpn/latest/s2svpn/s2s-vpn-user-guide.pdf
    [3]https://docs.aws.amazon.com/de_de/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html#cfn-ec2-customergateway-ipaddress

    【讨论】:

      【解决方案2】:

      客户网关的 ip_address 是位于客户数据中心内部的物理设备/路由器的 IP。您需要此 ip_address 来建立 VPN 连接。当您迷失在 terraform 中时,AWS docs 也会提供帮助。

      【讨论】:

        【解决方案3】:

        这在 terraform 文档中不是很清楚,但我在互联网上找到了一个澄清这个问题的示例。

        简而言之,aws_customer_gateway 配置不是在 IPSec 隧道的 AWS 端...这些资源相对于 AWS 是“远程”的:

        所以在这种情况下,ip_address 将是 AWS IPSec 数据包的目标 IP 地址离开 AWS Transit Gateway; aws_customer_gateway ip_address 不属于 AWS。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-09
          • 2020-03-21
          • 1970-01-01
          • 1970-01-01
          • 2013-11-15
          • 1970-01-01
          • 2021-04-19
          • 2019-05-20
          相关资源
          最近更新 更多