【问题标题】:Getting 'Must be valid Ipv4 CIDR' error after passing subnet's CIDR block传递子网的 CIDR 块后出现“必须是有效的 IPv4 CIDR”错误
【发布时间】:2019-06-21 23:52:15
【问题描述】:

我在 AWS 上创建了一个 VPC(公共和私有子网),其 IPV4 CIDR 块为 10.0.0.0/26(即它可以有 2^6 = 64 个 IP 地址以及一个子网地址和一个广播地址)。我想创建以下两个子网,但出现Must be valid Ipv4 CIDR 错误:

  1. 具有10.0.0.0/28 CIDR 块的公共子网,并且
  2. 带有10.0.0.8/28 CIDR 块的私有子网

如果我将子网掩码指定为/28,并且我想将地址分成两个子网,则地址将在10.0.0.0 [10.0.0.00000000] - 10.0.0.15 [10.0.0.00001111] 范围内。另一方面,如果我将 CIDR 块指定为 10.0.0.16/28,我不会收到任何错误。为什么 AWS 在 CIDR 块为 10.0.0.8/28 时给出 Must be valid Ipv4 CIDR 错误?

【问题讨论】:

    标签: amazon-vpc subnet cidr


    【解决方案1】:

    A /28 有 2^(32-28) = 2^4 = 16 个地址,因此该块的全零地址的最后一个八位字节必须能被 16 整除(其最低有效位必须为 0 0 0 0)。 8 的 LSB 为 1 0 0 0。

    10.0.0.8/28 是无效的 CIDR 块。 10.0.0.0 到 .15 以 CIDR 表示法表示为 10.0.0.0/28。


    应要求澄清上述被 16 整除的重要性:

    并不是地址的数量可以被最后一个块整除,而是在 CIDR 表示法中 xxxx/n 每个块的大小总是 2^(32-n) 个地址而xxxx在指定block时必须指定block中的first地址。

    将 IPv4 地址 x.x.x.x 转换为二进制,您会得到一个 32 位数字。地址 xxxx 的 (32-n) 最低有效位必须为 0。这是块中的第一个 (0th) 地址,也称为“全零”地址,因为未屏蔽的 -- 最后的 32-n 位 -- 都是 0。当为子网指定 CIDR 块时,这是必须指定的地址。

    在 /28 块的情况下,请注意 - 根据定义 - 任何以二进制表示的数字,其最低有效 32-28 = 4 位为 0 0 0 0 也可被 2^(32-28) 整除= 16,其他任何数字都不是。

    对于大小为 /24 到 /32 的块,这种数学运算对人类来说更容易,因为您不需要在脑海中将整个 xxxx 转换为二进制 - 您只需要四个八位字节中的最后一个。

    可以从 10.0.0.0/26 的超网派生的唯一可能的 /28 子网是:

    10.0.0.0/28    .0 to .15
    10.0.0.16/28  .16 to .31
    10.0.0.32/28  .32 to .47
    10.0.0.48/28  .48 to .63
    

    【讨论】:

    • 那么,10.0.0.0/28 的子网将有 16 个地址从 10.0.0.0/26 的 VPC 分配?被最后一个块整除的地址数量背后的概念是什么?您能否详细说明您的最后一行。
    • 正确。另外,我已在答案中添加了要求的说明。
    • 太好了,这解释得很清楚。在网络方面,我们将子网的子网地址作为 Amazon VPC 中的 CIDR 块给出?
    • 是的。这就是您要指定的内容——子网的 CIDR 块。
    猜你喜欢
    • 2021-04-13
    • 2020-05-10
    • 1970-01-01
    • 2019-08-19
    • 2020-08-16
    • 2021-11-16
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多