微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确定公有和私有子网以及 VPC 的 CIDR 块?

如何解决如何确定公有和私有子网以及 VPC 的 CIDR 块?

我想在 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

解决方法

首先,您所做的没有任何问题,每个 /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 用于开发。这有助于我记住我所面对的环境。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。