通过传递子网的CIDR块后,出现“必须是有效的IPv4 CIDR”错误

11
我在AWS上创建了一个VPC(public和private子网),其IPV4 CIDR块为10.0.0.0/26(即它可以拥有2^6 = 64个IP地址以及一个子网地址和一个广播地址)。我想创建以下两个子网,但是我遇到了必须是有效的Ipv4 CIDR错误:
  1. 一个CIDR块为10.0.0.0/28的public子网, 和
  2. 一个CIDR块为10.0.0.8/28的private子网

如果我将子网掩码设置为/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时会出现必须是有效的Ipv4 CIDR错误?

1个回答

13
一个/28有2^(32-28)=2^4=16个地址,因此块的全零地址的最后一个八位必须能被16整除(其最低有效位必须为0 0 0 0)。8的最低有效位是1 0 0 0。
10.0.0.8/28是无效的CIDR块。10.0.0.0到.15在CIDR表示法中表示为10.0.0.0/28。
对于CIDR表示法中的x.x.x.x/n,每个块的大小始终为2^(32-n)个地址,并且在指定块时,x.x.x.x必须指定块中的第一个地址。转换IPv4地址x.x.x.x为二进制数,您会得到一个32位数字。x.x.x.x的最后(32-n)位必须为0。这是块中的第一个(第0个)地址,也称为“全零”地址,因为未掩码的位——最后的32-n位——都为0。在为子网规定CIDR块时,必须指定该地址。
对于/28块,注意仅定义以二进制表示时最低有效的32-28 = 4位为0 0 0 0的任何数字也可以被2^(32-28) = 16整除,而其他数字则不行。
对于大小为/24到/32的块,对人类来说这个数学计算更容易,因为您不需要将整个x.x.x.x在头脑中转换为二进制——您只需要最后的四个八位。
可以从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子网将从10.0.0.0/26 VPC中分配16个地址?为什么地址数量可被最后一个块整除的概念很重要?您能否详细说明一下您的最后一句话。 - bot
正确。此外,我已经在答案中添加了所请求的澄清。 - Michael - sqlbot
太好了,这解释得很清楚。在网络术语中,我们在Amazon VPC中将子网地址作为CIDR块提供? - bot
是的,您正在指定子网的CIDR块。 - Michael - sqlbot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接