AWSで指定のプライベートIPアドレスを使用しようとしたときに、AWSとして予約されて使用できないIPアドレスが存在します。
このAWS予約IPアドレスは、24ビットのサブネットマスクだとわかりやすいですが、
- 10.0.0.0: ネットワークアドレスです。
- 10.0.0.1: VPC ルーター用に AWS で予約されています。
- 10.0.0.2: AWS で予約されています。DNS サーバーの IP アドレスは、常に VPC ネットワークのベースに 2 を付加したものですが、各サブネット範囲のベースに 2 を付加したアドレスも予約されています。複数の CIDR ブロックを持つ VPC の場合、DNS サーバーの IP アドレスはプライマリ CIDR にあります。詳細については、「Amazon DNS サーバー」を参照してください。
- 10.0.0.3: 将来の利用のために AWS で予約されています。
- 10.0.0.255: ネットワークブロードキャストアドレスです。VPC ではブロードキャストがサポートされないため、このアドレスを予約します。
中途半端な小さいサブネットではどうなるのでしょうか?
結論、24ビットのサブネットマスクより小さい中途半端なサブネットマスクでもAWS予約IPアドレスは存在します。
例えば、27ビットのサブネットマスク
10.165.1.32/27で作成した場合、以下の5つのアドレスはインスタンス等に割り当てることはできません。
- 10.165.1.32 ネットワークアドレス
- 10.165.1.33 デフォルトゲートウェイ
- 10.165.1.34 使用されてはいないがAWS予約IPアドレス
- 10.165.1.35 使用されてはいないがAWS予約IPアドレス
- 10.165.1.63 ブロードキャストアドレス
DNSサーバーは、小さい中途半端なサブネットマスクには存在してなく、この場合は10.165.1.2になります。
Routingが無いと困りますね。また、小さいサブネットでネットワークを細切れにするにすると使用できないIPアドレスが増えることになります。
AWSの予約IPアドレスをEC2に割り当てるとどうなるか?
AWSで予約されたIPアドレスを割り当ててEC2を作成すると、
EC2作成ウィザードの最後の最後で作成失敗というエラーになります。
これならば間違えておかしくなることはないですね。
当然、先ほどの27サブネットマスクでも、使用されていないですがAWS予約IPアドレスを割り当てると
EC2を作成できないことがわかります。