こんにちは!技術4課のイーゴリです。
本件の記事では、新規EC2に既存のプライベートIPアドレス及びMACアドレスを引き継ぐ方法をご紹介させて頂きます。
下記のパターンの場合、既存のENIを移行する必要があるため、下記に手順を記載します。
- 新規EC2に既存のEC2のプライベートIPアドレス及びMACアドレスを引き継ぎたい
- EC2を再構築する時に同じプライベートIPアドレス及びMACアドレスが必要

考慮事項
- デフォルトの動作だと、既存のEC2のENIがEC2と一緒に自動的に削除されますので、ご注意ください。
- ENIを削除してしまうと、本件の記事の方法でMACアドレスを引き継ぐことができませんので、ご注意ください。
- 対象サブネットCIDR外のIPアドレスの指定は不可となりますので、ご注意ください。
- 同じMACアドレスが必要ない場合、既存のENIの移行が必要ないため、下記の画像の通り、EC2構築時に、手動でプライベートIPを指定すれば充分です。

事前確認
既存EC2のIP及びMACアドレス、Instance ID、ENI IDの情報を確認します(Amazon Linuxの場合)。
- IP及びMACアドレスの情報取得
[ec2-user@ip-10-123-10-56 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 06:26:4d:e1:69:61 brd ff:ff:ff:ff:ff:ff
inet 10.123.10.56/24 brd 10.123.10.255 scope global dynamic eth0
valid_lft 3135sec preferred_lft 3135sec
inet6 fe80::426:4dff:fee1:6961/64 scope link
valid_lft forever preferred_lft forever
- Instance ID情報取得
[ec2-user@ip-10-123-10-56 ~]$ curl http://169.254.169.254/latest/meta-data/instance-id i-06c9b143be3819772
- ENI ID情報取得
[ec2-user@ip-10-123-10-56 ~]$ curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/"$(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs)"interface-id
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 18 100 18 0 0 2923 0 --:--:-- --:--:-- --:--:-- 3000
eni-0aeabb99c8222f665
ENIの削除時の動作を変更
[サービス]>[EC2]>[インスタンス]>対象EC2>[ネットワーキング]タブをクリックします。

対象ENI(上記の確認結果とあっているENI→eni-0aeabb99c8222f665)を選択し、[アクション]>[終了時の動作を変更]をクリックします。

[終了時の動作を変更]の画面で、[インスタンスの削除時に削除]の[有効化]のチェックを外し、[保存]をクリックします。

既存のEC2を削除
既存のEC2を削除します。


新規EC2に既存のENIを設定
[サービス]>[EC2]>[インスタンスを起動]をクリックします。
[3. インスタンスの設定]の画面で、[ネットワークインターフェイス]で残したENIを選択します。


EC2を作成します。

結果確認
- IP及びMACアドレスの情報取得
[ec2-user@ip-10-123-10-56 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 06:26:4d:e1:69:61 brd ff:ff:ff:ff:ff:ff
inet 10.123.10.56/24 brd 10.123.10.255 scope global dynamic eth0
valid_lft 3330sec preferred_lft 3330sec
inet6 fe80::426:4dff:fee1:6961/64 scope link
valid_lft forever preferred_lft forever
[ec2-user@ip-10-123-10-56 ~]$
IP及びMACアドレスは変わらないです。
link/ether 06:26:4d:e1:69:61 brd ff:ff:ff:ff:ff:ff
inet 10.123.10.56/24 brd 10.123.10.255 scope global dynamic eth0
- Instance ID情報取得
[ec2-user@ip-10-123-10-56 ~]$ curl http://169.254.169.254/latest/meta-data/instance-id i-06aa42411019ba152
新しいInstance IDになりました。
- ENI ID情報取得
[ec2-user@ip-10-123-10-56 ~]$ curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/"$(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs)"interface-id
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 18 100 18 0 0 26124 0 --:--:-- --:--:-- --:--:-- 18000
eni-0aeabb99c8222f665
ENI IDは変わらないです。
上記のパラメーターを確認しましたところ、想定通りENI切り替えが完了しました。
以上、御一読ありがとうございました。
本田 イーゴリ (記事一覧)
カスタマーサクセス部
・2024 Japan AWS Top Engineers (Security)
・AWS SAP, DOP, SCS, DBS, SAA, DVA, COA, CLF, ANS, AIF, MLS, MLA, DEA
・Azure AZ-900
・EC-Council CCSE
趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽