【问题标题】:How do I decide the CIDR blocks for public and private subnets and VPC?如何确定公有子网和私有子网以及 VPC 的 CIDR 块?
【发布时间】:2021-04-19 11:30:59
【问题描述】:

我想在 AWS 中创建一个具有私有子网和公共子网的 VPC。我正在使用 Terraform。

这是我目前所拥有的:

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16" # <---

  enable_dns_support   = true
  enable_dns_hostnames = true

  tags = {
    Name = "Main"
  }
}

resource "aws_subnet" "public" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.0.0/20" # <---

  tags = {
    Name = "Public"
  }
}

resource "aws_subnet" "private" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.16.0/20" # <---

  tags = {
    Name = "Private"
  }
}

我遇到的问题是我不知道如何选择合适的 CIDR 块(3 个决定)。

如何确定要使用哪些 CIDR 块?


一个有效的组合可能是:

  • VPC:10.16.0.0/16
  • 公众号:10.16.0.0/24
  • 私人:10.16.128.0/24

【问题讨论】:

    标签: amazon-web-services terraform amazon-vpc vpc cidr


    【解决方案1】:

    首先,您所做的没有任何问题,每个 /20 子网都有 /16 VPC 中可用 IP 的一半(4096 每个减去 5 个 AWS 保留 IP)。

    就您如何决定而言,这是一个已经存在数十年的经典网络设计问题。在 Internet 上搜索“IP 地址范围设计最佳实践”会找到几篇可能有帮助的文章。

    专门针对 AWS 云,然后是一些指针:

    • /16 和 /20 是相当大的子网,除非您真的希望消耗这么多 IP,否则我很想将它们缩小;如有必要,您可以稍后将第二个 CIDR 添加到 VPC:link
    • 当涉及到多个 VPC 环境时,如果您想对等 VPC 以便它们可以相互路由流量,那么它们不能有重叠的 CIDR;所以这是不使 VPC CIDR 大于所需的另一个原因,这样您就不会因为 VPC 具有大量未使用的 CIDR 而用完 IP。
    • 如果您的混合云环境中本地资源和 AWS 资源属于同一网络,则无重叠 IP 地址点也适用。
    • 我的一个小技巧是使用 10.0.0.0/8 用于生产 VPC,172.16.0.0/12 用于测试,192.168.0.0/16 用于开发。这有助于我记住我正在处理的环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多