web-dev-qa-db-ja.com

サブネットのCIDRブロックを渡した後に「Must be valid Ipv4 CIDR」エラーが発生する

AWSにVPC(パブリックサブネットとプライベートサブネット)を作成し、IPV4 CIDRブロックを10.0.0.0/26として作成しました(つまり、2 ^ 6 = 64個のIPアドレスと、1つのサブネットアドレスと1つのブロードキャストアドレスを持つことができます)。次の2つのサブネットを作成したいのですが、Must be valid Ipv4 CIDRエラーが発生します。

  1. 10.0.0.0/28 CIDRブロックを含むパブリックサブネット、および
  2. 10.0.0.8/28 CIDRブロックを持つプライベートサブネット

サブネットマスクを/28として指定し、アドレスを2つのサブネットに分割したい場合、アドレスは10.0.0.0 [10.0.0.00000000] - 10.0.0.15 [10.0.0.00001111]の範囲になります。一方、CIDRブロックを10.0.0.16/28として指定すると、エラーは発生しません。 AWSがCIDRブロックをMust be valid Ipv4 CIDRとして10.0.0.8/28エラーを返すのはなぜですか?

3
bot

/ 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はブロックを指定する場合は、ブロックのfirstアドレスを指定します。

IPv4アドレスx.x.x.xをバイナリに変換すると、32ビットの数値が得られます。アドレスxxxxの(32-n)最下位ビットは0でなければなりません。これはブロックの最初(0番目)のアドレスであり、マスクされていないbitsであるため、「すべて0」のアドレスとも呼ばれます。 =-最後の32-nビット-はすべて0です。サブネットのCIDRブロックを指定する場合、これは指定する必要があるアドレスです。

/ 28ブロックの場合、定義により、最下位の32-28 = 4ビットが0 0 0 0であるバイナリで表された数値も2 ^(32-28)= 16で割り切れることに注意してください。他の番号は違います。

サイズ/ 24から/ 32までのブロックの場合、x.x.x.x全体をバイナリに精神的に変換する必要がないため、この計算は人間にとって簡単です。4つのオクテットのうち最後のオクテットだけが必要です。

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
5