MENU

【メモ】AWSのEC2のプライベートIPを別インスタンスで再利用できるか検証してみた

目次

🔰1.検証の前提と背景

AWSでは、Elastic IP(グローバルIP)は簡単に付け替えられますが、プライベートIPの再利用には制限があります。
EC2を起動した際に割り当てられるプライベートIP(プライマリ)は、EC2本体アタッチされているプライマリENI(eth0)に紐づいており、再利用できない、いやできる? と言う点で論争になりました。

今回の目的は以下のようなパターンが できるのかどうか を検証することです。

旧EC2インスタンスのプライマリIPを新しいEC2インスタンスにそのまま再利用できるのか?

検証に使用した構成は以下の通りです:

  • 旧EC2(test_01 / RHEL 9)のAMIから新EC2(test_02 & test_03 / RHEL 9)を作成
  • 旧EC2と同じVPC、サブネットで新EC2を作成
  • Elastic IP、パブリックIPなし(プライベートIPのみ)

⚙️2.検証した手順

❌️方法①:旧EC2のENIをそのまま新EC2に移す ※旧EC2は削除しない前提

  1. 旧EC2(test_01)を停止 ※削除はしないこと!
  2. 対象のENI(ネットワークインターフェース = eth0 = 10.0.6.196)をデタッチ
  3. 新EC2(test_02)をAMIから起動(test_02と同じVPC、サブネットを選択)
  4. 旧EC2(test_01)のENIを新EC2(test_02)にアタッチ
  5. 起動して確認!

結果:上記2の時点でアウト。
 旧EC2を存在する限り、元から付いているENI(eth0)と一体化しているプライマリIPを解放する術はなさそう。
 CLIでも不可能。

AWS様「ENIのeth0はお前の体そのものや、外せると思うな」ってことらしいです。

⭕️方法②:旧EC2にセカンダリIPを追加し、それを新EC2に移動できるか検証

  1. 旧EC2(test_01)を停止 ※削除はしないこと!
  2. あらかじめ作成していたENIをアタッチしてセカンダリIP(10.0.6.197)を旧EC2に追加
  3. 旧EC2(test_01)から上記2でアタッチした2つ目のENIをデタッチ
    • 元から付いていた1つ目のENI(プライマリIP)は絶対に外すことはできない
  4. 旧EC2(test_01)のAMIから新EC2(test_02)を起動する際、上記3で外したENIを指定して起動
    • この方法だと指定したENIがプライマリになる
    • ENIを指定しないで新EC2を起動し、あとでENIをアタッチするとそれがセカンダリENIになる

結果:成功
 セカンダリIPであれば再割り当て可能。(同じVPC、サブネット上のEC2に限る。)

AWS様の公式ドキュメントにも明記されている機能。

⭕️方法③:旧EC2を完全に削除後、新EC2を旧EC2のIPで起動

  1. 旧EC2(test_01)を削除
    • EC2(test_01)にアタッチされていたENIも削除される
  2. 旧EC2(test_01)のAMIから新EC2(test_03)を起動する際、旧EC2(test_01)のIPアドレスを指定して起動

結果:成功
 旧EC2削除済みなら問題なく同じIPアドレスが使い回せる。(ENIは変わる。)

旧EC2のAMIからのEC2起動画面。削除した旧EC2のIPを指定。
旧EC2のIPアドレスで起動できた。

🎯3.まとめ

 他にも様々な方法があるかもしれませんが、今回の検証結果をまとめると以下のとおりです。

 ✅️ eth0のプライマリENIは、元EC2が存在する限り絶対に外せない。 
  どんな強引な手を使ってもデタッチ不可。AWSの仕様。

 ✅️元のEC2を残したまま「IPを移行したい」なら、やり方は以下のどちらになる。
  ・元EC2にセカンダリENIをアタッチして、そのENIごと移動する。
  ・もしくはセカンダリIPを 別のENIに付け替える。

  →最初から「移動したいIPはセカンダリにする」設計がベストプラクティス!

 ✅️元のEC2を完全に「削除」していいなら、悩まなくて済む。
  身も蓋もないですが、そのような仕様です。

📚 4.参考記事

 以下、参考記事などです。

🐥 5.ひとこと

検証の中で一番ハマったのは「プライマリIPを外して他のインスタンスで使う」という部分です。
できそうでできない罠でした!

同じような検証をする人の一助になれば幸いです。

以上

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次