Amazon VPC やサブネットへの理解を深めるための実験。
- IPv4 CIDR が
192.168.0.0/28
の VPC を作る- AWS VPC では
/16
から/28
まで指定できる
- AWS VPC では
- その VPC 内に IPv4 CIDR が
192.168.0.0/28
のサブネットを作る/28
はネットワーク部が 28 ビットでホスト部が 4 ビットなので、 IP アドレスの個数は最大で 24 = 16 個- このサブネット一つで VPC 内の CIDR アドレスを使い切る
- 実験用に
t2.micro
インスタンスを立ち上げたいので、アベイラビリティゾーンにap-northeast-1a
以外を指定する
- terraform で EC2 インスタンスをたくさん立ち上げてみる
- 以下のエラーが発生した
- インスタンスは 11 個起動した
Error: Error launching source instance: InsufficientFreeAddressesInSubnet: There are not enough free addresses in subnet 'subnet-0dc95f1172768f21a' to satisfy the requested number of instances. status code: 400, request id: 6724ec1b-59c2-4e6e-bb6a-4529fbe51e8f
- Amazon VPC では 5 個の IP アドレスが予約されており、インスタンスに割り当てられない
- https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Subnets.html#vpc-sizing-ipv4
- 以下は
10.0.0.0/24
の場合の例だが、192.168.0.0/28
でも 5 個予約されることは同じ
各サブネット CIDR ブロックの最初の 4 つの IP アドレスと最後の IP アドレスは使用できず、インスタンスに割り当てることができません。たとえば、CIDR ブロック 10.0.0.0/24 を持つサブネットの場合、次の 5 つの IP アドレスが予約されます。 - 10.0.0.0: ネットワークアドレスです。 - 10.0.0.1: VPC ルーター用に AWS で予約されています。 - 10.0.0.2: AWS で予約されています。DNS サーバーの IP アドレスは、VPC ネットワーク範囲のベースにプラス 2 したものです。複数の CIDR ブロックを持つ VPC の場合、DNS サーバーの IP アドレスはプライマリ CIDR にあります。また、VPC 内のすべての CIDR ブロックに対して、各サブネットの範囲 + 2 のベースを予約します。詳細については、「Amazon DNS サーバー」を参照してください。 - 10.0.0.3: 将来の利用のために AWS で予約されています。 - 10.0.0.255: ネットワークブロードキャストアドレスです。VPC ではブロードキャストがサポートされないため、このアドレスを予約します。
- 立ち上がった EC2 インスタンスに割り当てられたプライベート IP アドレスを調べると、上記と合致した
1 private_ip = "192.168.0.10" 2 private_ip = "192.168.0.11" 3 private_ip = "192.168.0.12" 4 private_ip = "192.168.0.13" 5 private_ip = "192.168.0.14" 6 private_ip = "192.168.0.4" 7 private_ip = "192.168.0.5" 8 private_ip = "192.168.0.6" 9 private_ip = "192.168.0.7" 10 private_ip = "192.168.0.8" 11 private_ip = "192.168.0.9"