VPCサブネットの「パブリック IPv4 アドレスを自動割り当て」設定のあり・なしを検証したら、どちらもパブリックIPv4アドレスが割り当てられた

2024.04.25

はじめに

こんにちは。AWS事業本部コンサルティング部に所属している和田響です。

今回はVPCサブネットの「パブリック IPv4 アドレスを自動割り当て」設定について、その内容をまとめつつ挙動を確認してみました。

「パブリック IPv4 アドレスを自動割り当て」とは?

「パブリック IPv4 アドレスを自動割り当て」とはEC2インスタンスに対して、パブリックIPv4アドレスを割り当てる際に設定が必要になるVPCサブネットの設定です。
特に何も設定しなければデフォルトサブネットではtrueに設定され、それ以外のサブネットではfalseに設定されます。

デフォルトでは、デフォルト以外のサブネットでは IPv4 パブリックアドレス属性が false に設定されており、デフォルトサブネットではこの属性が true に設定されています。例外は、Amazon EC2 インスタンス起動ウィザードによって作成されるデフォルト以外のサブネットです。このウィザードが、属性を true に設定します。Amazon VPC コンソールを使用してこの属性を変更できます。

引用:https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/modify-subnets.html#subnet-public-ip

EC2インスタンスにパブリックIPv4アドレスを割り当てる方法

EC2インスタンスにパブリックIPv4アドレスを割り当てるためには以下の設定が必要です。

  • EC2インスタンスを作成するサブネットの「パブリック IPv4 アドレスを自動割り当て」を有効にする
  • EC2インスタンス作成時に「パブリック IP の自動割り当て」を有効にする

参照:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses
EC2インスタンスにパブリックIPv4アドレスを割り当てるには、サブネット側とEC2側でそれぞれ設定が必要といいえそうです。

検証してみた

挙動を確認するために以下の検証を行いました。 EC2インスタンスの「パブリック IP の自動割り当て」設定はいずれも有効にし、サブネットの設定についてそれぞれ検証していきます。

  1. 設定が有効なサブネットにEC2インスタンスを起動する
  2. 設定が無効なサブネットにEC2インスタンスを起動する
  3. 設定が無効なサブネットに起動したEC2インスタンスを停止・起動する
  4. 設定が有効なサブネットの設定を無効にし、EC2インスタンスを停止・起動する

1.設定が有効なサブネットにEC2インスタンスを起動する

まずは「パブリック IPv4 アドレスを自動割り当て」を有効にしたサブネットと無効にしたサブネットを用意します。(今回はデフォルトのサブネットを使います。)


設定が有効なサブネットにEC2インスタンスを起動します。

ec2-true-1という名前をつけ

設定が有効なサブネットTrueを選択し、
パブリック IP の自動割り当てを有効化に設定して起動します。

起動したEC2インスタンスを確認すると、パブリックIPv4アドレスが割り当てられていました。

設定が有効なサブネットにEC2インスタンスを起動すると、EC2インスタンスにパブリックIPv4が割り当てられるという、公式ドキュメント通りの結果になりました。

2.設定が無効なサブネットにEC2インスタンスを起動する

続いて、設定が無効なサブネットにEC2インスタンスを起動します。

ec2-false-1という名前をつけ

設定が無効なサブネットFalseを選択し、
パブリック IP の自動割り当てを有効化に設定して起動します。

起動したEC2インスタンスを確認すると、パブリックIPv4アドレスが割り当てられていました。

意外にもパブリックIPv4アドレスが割り当てられていました。
この結果から、設定が無効なサブネットにEC2インスタンスを起動した場合にもパブリックIPv4アドレスは割り当てられることがわかりました。

3.設定が無効なサブネットに起動したEC2インスタンスを停止・起動する

続いて設定が無効なサブネットに起動したEC2インスタンスを停止・起動します。

先ほど設定が無効なサブネットに起動したEC2インスタンスec2-false-1を停止します。

停止が完了するとパブリックIPv4アドレスが解放されます。

停止したEC2インスタンスをもう一度起動させます。

起動したEC2インスタンスを確認すると停止前とは違うパブリックIPv4アドレスが割り当てられていました。

この結果から、設定が無効なサブネットに起動したEC2インスタンスを、停止し再度起動した場合にもパブリックIPv4アドレスは割り当てられることがわかりました。
自動割り当てとは起動時は関係なく、一旦停止しパブリックIPv4アドレスが解放されたあと起動した際の割り当てのこと」という仮説を立ててこの検証をしてみましたが、そういうわけでもなさそうです。

4.設定が有効なサブネットの設定を無効にし、EC2インスタンスを停止・起動する

続いて設定が有効なサブネットの設定を無効にし、EC2インスタンスを停止・起動します。

設定が有効なサブネットの設定を変更し

「パブリック IPv4 アドレスの自動割り当てを有効化」のチェックボックスを外し保存します。

続いてこのサブネットに先ほど作成したEC2インスタンスを停止します。
この時点ではパブリックIPv4アドレスは割り当てられたままです。

EC2インスタンスが停止されパブリックIPv4アドレスが解放されたことを確認し、もう一度起動します。

起動したEC2インスタンスを確認すると停止前とは違うパブリックIPv4アドレスが割り当てられていました。

この結果から、設定が有効なサブネットの設定を無効にし、EC2インスタンスを停止・起動した場合でもパブリックIPv4アドレスは割り当てられることがわかりました。

最後に

今回はサブネットの設定の一つである「パブリック IPv4 アドレスを自動割り当て」について、デフォルトのサブネットで検証してみた結果、どのパターンでもパブリックIPv4アドレスが割り当てられることがわかりました。
個人的には「パブリック IPv4 アドレスを自動割り当て」をなしに設定すれば、EC2インスタンスの設定で「パブリック IP の自動割り当て」を有効化にしてもパブリックIPv4アドレスは割り当てられないと思っていましたが、そういうわけではありませんでした。

検証の結果、EC2にパブリックIPv4アドレスを割り当てるかはEC2側の設定が優先されると言えそうです。

サブネット側でパブリックIPv4アドレスの割り当てを無効に設定したが、EC2に意図しないパブリックIPv4アドレスが割り当てられる可能性を考え、EC2インスタンスにパブリックIPv4アドレスを割り当てたくない場合は、EC2インスタンス起動時に「パブリック IP の自動割り当て」を無効化に設定しましょう。

2024.4.25 0:58 追記

「パブリック IPv4 アドレスを自動割り当て」設定がなしになっているサブネットに、EC2インスタンスを立てようとすると、EC2インスタンス起動時の「パブリック IP の自動割り当て」設定がデフォルトで無効化にチェックされていました。

反対に「パブリック IPv4 アドレスを自動割り当て」設定がありになっているサブネットに、EC2インスタンスを立てようとすると、EC2インスタンス起動時の「パブリック IP の自動割り当て」設定がデフォルトで有効化にチェックされていました。

このことからサブネットの「パブリック IPv4 アドレスを自動割り当て」設定は、EC2インスタンス起動時のデフォルトの「パブリック IP の自動割り当て」設定に影響することもわかりました。
IaCでの構築には多少影響しそうですが、マネコンでの作成時にはあまり影響がなさそうな設定項目と言えそうです。