新規EC2に既存のプライベートIPアドレス及びMACアドレスを引き継ぐ - サーバーワークスエンジニアブログ

新規EC2に既存のプライベートIPアドレス及びMACアドレスを引き継ぐ

記事タイトルとURLをコピーする

こんにちは!技術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, CLF
・Azure AZ-900
・EC-Council CCSE

趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽