资源处理程序返回消息:“CIDR‘10.0.1.0/22’无效

资源处理程序返回消息:“CIDR‘10.0.1.0/22’无效

当我尝试在 CloudFormation 中创建带有子网的 VPC 时出现此错误。

Subnet  CREATE_FAILED   Resource handler returned message: "The CIDR '10.0.1.0/22' is invalid. (Service: Ec2, Status Code: 400, Request ID: 97af4b96-80dd-4092-910c-5d11e5b9ca72, Extended Request ID: null)" (RequestToken: bed19eb5-2309-589e-98bf-9dacc656462a, HandlerErrorCode: InvalidRequest)

这是我的 VPC 和子网在 yaml 中的设置:

VPC:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: 10.0.2.0/24
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 45e7f38e-c4b6-4a19-9d54-b74e36ef53de
  Subnet:
    Type: 'AWS::EC2::Subnet'
    Properties:
      VpcId: !Ref VPC
      CidrBlock: 10.0.1.0/22
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 58cd6d64-1f79-4dbe-a981-c9238975f154

答案1

CIDR/22块涵盖 1024 个主机。因此,IP 地址块必须以 1024 个块为边界。

10.0.1.0/22是属于 IP 地址空间的 IP 地址10.0.0.1 - 10.0.3.254。因此10.0.1.0不是/22子网的有效起始地址。

一些有效块/22大小的示例为:

10.0.0.0/22 10.0.4.0/22 10.0.8.0/22

答案2

消息是正确的。10.0.1.0 不是 /22 网络的有效基地址。最接近的合法值是 10.0.0.0 和 10.0.4.0。

考虑 10.0.1.0 和 /22 网络掩码的二进制表示:

10.0.1.0 = 00001010 00000000 00000001 00000000
/22      = 11111111 11111111 11111100 00000000

您可以看到,在第三个八位字节的末尾,地址中设置了一个位,但在掩码中却被清除了。这是非法的。

相关内容