如何验证无效的CIDR块?

13

我为我的VPC保留了以下CIDR -> 10.0.0.0/22

这告诉我我有10位剩余的主机IP或者1,024个地址。我试图计算有效地址的范围,因为在创建新的私有子网时,Amazon要求提供一个有效的IPv4 CIDR块。

我想6/8位从第三个八位字节中取出,而最后一个八位字节全是0,这使我得到了一个IP范围10.0.0.0 -> 10.0.3.255

当我来到屏幕上实际选择IPv4 CIDR块时,出现了“无效错误”,这只是验证我不理解数学是如何工作的。我输入了10.0.2.1/28,它产生了一个必须是有效的IPv4 CIDR错误。

我的思考过程:

这看起来像是我计算出来的范围,而我希望我的私有子网保留16个IP地址。

我做错了什么?


这个两部分的答案包含一个解释问题及其原因的部分,以及有关IPv4数学计算的所有信息。 - Ron Maupin
2个回答

22

你有一个VPC的IP地址段是10.0.0.0/22。你是对的,有效的地址范围是从10.0.0.0到10.0.3.255。

现在你想使用/28 CIDR块从这个VPC创建一个子网。/28意味着最后四位为0,给出了范围0到15。CIDR块必须始终从它们自己的边界开始。/28的示例:

10.0.0.0 -> 10.0.0.15

10.0.0.16 -> 10.0.0.31

你试图创建一个CIDR块为10.0.2.1/28的子网。这是无效的,因为它不是从/28的有效CIDR范围内的偏移量0开始。你可以创建一个有效的子网,如10.0.2.0/28或10.0.2.16/28等。注意每个子网的起始位置都有最后四位为0。

快速查看任何子网的方法是主机部分从0开始,以所有1结束。


1
啊,那就是我缺失的关键,他们需要在自己的边界上开始。非常感谢您写下这篇文章。 - John Lippson
我不太确定你所说的“注意每个子网的开头都有最后四位为0”的意思。你只是指这个地址吗?10.0.0.0 - John Lippson
1
对于我展示的所有示例,最后四位(最不重要的位)都是0。这些位是子网的主机部分。 - John Hanley
2
如果你将10.0.2.16转换为十六进制0A.00.02.10,最后一个八位组(0x10)的位模式为0001 0000。最后四位是零。十六进制中的上限有效地址为0A.00.02.1F。请注意,最后四位都是1。 - John Hanley

6
我只想告诉你选择CIDR块的规则如下:
  1. 所有IP地址应该是连续的。
  2. 您可以获得的IP数量是2的n次方。
  3. 块中的第一个IP地址应该被块大小(即2的n次方)均匀地整除。
第三点与第二点相关,同样重要。
10.0.2.1/28 - It is not the proper CIDR block ID.

这里没有遵循第三点。


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