AWS VPC 及其子网的 CIDR 块

CIDR blocks for AWS VPC and its subnets

我有一个 CIDR 块 172.30.0.0/21,需要创建 2 个私有子网,然后为它创建 2 个 public 个子网。

起初我创建了: 对于私人:[“172.30.8.0/21”,“172.30.16.0/21”] 对于 public: ["172.30.0.0/22", "172.30.8.0/22"]

但随后出现以下错误:

Error: Error creating subnet: InvalidSubnet.Range: The CIDR '172.30.8.0/22' is invalid.
10:59:12    status code: 400, request id: 9***
10:59:12  
10:59:12    on .terraform/modules/vpc-us-west-2/main.tf line 335, in resource "aws_subnet" "public":
10:59:12   335: resource "aws_subnet" "public" {
10:59:12  
10:59:12  
10:59:12  
10:59:12  Error: Error creating subnet: InvalidSubnet.Range: The CIDR '172.30.16.0/21' is invalid.
10:59:12    status code: 400, request id: d**
10:59:12  
10:59:12    on .terraform/modules/vpc-us-west-2/main.tf line 363, in resource "aws_subnet" "private":
10:59:12   363: resource "aws_subnet" "private" {
10:59:12  
10:59:12  
10:59:12  
10:59:12  Error: Error creating subnet: InvalidSubnet.Range: The CIDR '172.30.8.0/21' is invalid.
10:59:12    status code: 400, request id: d**
10:59:12  
10:59:12    on .terraform/modules/vpc-us-west-2/main.tf line 363, in resource "aws_subnet" "private":
10:59:12   363: resource "aws_subnet" "private" {

所以现在:-

对于私人:[“172.30.0.0/21”,“172.30.4.0/21”] 对于 public: ["172.30.0.0/22", "172.30.2.0/22"]

他们还好吗?他们会工作并修复错误吗?

# List of private subnets to create in the environment, e.g. ["172.18.0.0/21", "172.18.8.0/21"]
variable "private_subnets-west-2" {
  type    = list(string)
  default = ["172.30.0.0/22", "172.30.6.0/23"]
}

# List of public subnets to create in the environment, e.g. ["172.18.168.0/22", "172.18.172.0/22"]
variable "public_subnets-west-2" {
  type    = list(string)
  default = ["172.30.0.0/22", "172.30.4.0/23"]
}

(当前子网中的值,我不确定它们是否有效)

这些是我需要创建的子网。同样,我的 CIDR 是 172.30.0.0/21

更新:我的私有子网工作正常:

# List of private subnets to create in the environment, e.g. ["172.18.0.0/21", "172.18.8.0/21"]
variable "private_subnets-west-2" {
  type    = list(string)
  default = ["172.30.0.0/22", "172.30.6.0/23"]
}

但是,一个小时以来,我一直在为我的 public 尝试不同的子网,但找不到合适的子网:


# List of public subnets to create in the environment, e.g. ["172.18.168.0/22", "172.18.172.0/22"]
variable "public_subnets-west-2" {
  type    = list(string)
  default = ["172.30.0.64/26", "172.30.0.128/26"]
}

继续获取冲突或无效错误:

Error: Error creating subnet: InvalidSubnet.Conflict: The CIDR '172.30.0.128/26' conflicts with another subnet
        status code: 400, request id:

  on .terraform/modules/vpc-us-west-2/main.tf line 335, in resource "aws_subnet" "public":
 335: resource "aws_subnet" "public" {

Error: Error creating subnet: InvalidSubnet.Conflict: The CIDR '172.30.0.64/26' conflicts with another subnet
        status code: 400, request id: 

  on .terraform/modules/vpc-us-west-2/main.tf line 335, in resource "aws_subnet" "public":
 335: resource "aws_subnet" "public" {

我卡了很久了,如果有人能帮我,告诉我到底可以用哪2个子网,那就太好了!

错误 - 172.30.8.x 网络出现“无效子网”,因为 172.30.8.x 超出分配地址 space (172.30. 0.0/21) .

解释如下:

172.30.0.0/21是可用地址space.

也可以写成:

172.30.0.0 / 255.255.248.0

属于该网络的IP地址范围是:

172.30.0.0 至 172.30.7.255

位于此边界(172.30.0.0 到 172.30.7.255)内的任何子网都将被 AWS 接受。

给定 CIDR space 可接受的子网的一些示例是:

172.30.1.0 / 24

172.30.2.0 / 30

172.30.7.0 / 28

172.30.7.248 / 29

172.30.0.0/21 CIDR 从 172.30.0.0 变为 172.30.7.255

如果你想把这个平均分成4个子网,你可以使用:

  • 172.30.0.0/23,从 172.30.0.0172.30.1.255
  • 172.30.2.0/23,从 172.30.2.0172.30.3.255
  • 172.30.4.0/23,从 172.30.4.0172.30.5.255
  • 172.30.6.0/23,从 172.30.6.0172.30.7.255

@jordanm 把这个 link 给了一个很棒的 CIDR 计算器:http://jodies.de/ipcalc?host=172.30.0.0&mask1=21&mask2=23