すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:セカンダリENIの設定

最終更新日:Nov 11, 2024

セカンダリelastic network Interface (ENI) がElastic Compute Service (ECS) インスタンスにバインドされた後、インスタンスによって使用される一部のイメージは、セカンダリENIのIPアドレスを認識せず、セカンダリENIのルートを設定できない場合があります。 この問題が発生した場合、セカンダリENIはインスタンスで期待どおりに使用できません。 この問題を解決するには、このトピックで説明されているように、インスタンス内からセカンダリENIのIPアドレスが認識されるように設定することを推奨します。 また、ビジネス要件に基づいてセカンダリENIのルートを設定し、ネットワークトラフィックをより適切に管理および制御することもできます。

前提条件

セカンダリENIはECSインスタンスにバインドされています。 詳細については、「セカンダリENIのバインド」をご参照ください。

ステップ1: セカンダリENIを設定する必要があるかどうかを確認する

ECSインスタンスにバインドされているセカンダリENIを設定する必要があるかどうかを確認するには、セカンダリENIのIPアドレスが認識されているかどうか、またはインスタンスで使用されているイメージのタイプを確認します。

セカンダリENIを設定する必要がないイメージ

セカンダリENIを自動的に設定できる自動設定ツールは、特定のイメージにプリインストールされています。 このようなイメージをECSインスタンスで使用する場合、インスタンスにバインドされているセカンダリENIを設定する必要はありません。

説明

次のリストは、セカンダリENIを設定する必要がないイメージの例を示しています。

  • Linuxイメージ:

    • Alibaba Cloud Linux 3.2104 64ビット

    • Anolis OS 7.7 RHCK 64ビット、Anolis OS 8.2 RHCK 64ビット、Anolis OS 8.4 RHCK 64ビット、Anolis OS 8.6 RHCK 64ビット、Anolis OS 8.8 RHCK 64ビット、Anolis OS 7.7 ANCK 64ビット、Anolis OS 8.2 ANCK 64ビット、Anolis OS 8.4 ANCK 64ビット、Anolis OSビット8.6 ANCK 64ビット、Anolis 64ビット、Anolis 64ビット、Anolis anolis OS 8.4 RHCK 64ビット (UEFI) 、Anolis OS 8.6 RHCK 64ビット (UEFI) 、Anolis OS 8.4 ANCK 64ビット (UEFI) 、Anolis OS 8.6 ANCK 64ビット (UEFI) 、およびAnolis OS 8.8 ANCK 64ビット (MLPS 2.0レベル3)

    • CentOS 8.1 64ビット、CentOS 8.2 64ビット、CentOS 8.3 64ビット、CentOS 8.4 64ビット、CentOS 8.5 64ビット、CentOS 8.3 64ビット (UEFI) 、CentOS 8.4 64ビット (UEFI) 、およびCentOS 8.5 64ビット (UEFI)

    • Debian 11.8 64ビット、Debian 11.9 64ビット、Debian 12.2 64ビット、Debian 12.4 64ビット、Debian 12.5 64ビット、Debian 12.2 64ビット (UEFI)

    • Ubuntu 20.04 64ビット、Ubuntu 22.04 64ビット、およびUbuntu 24.04 64ビット

    • AlmaLinux 8.5 64ビット、AlmaLinux 8.6 64ビット、AlmaLinux 8.7 64ビット、AlmaLinux 8.8 64ビット、AlmaLinux 8.9 64ビット、AlmaLinux 9.0 64ビット、AlmaLinux 9.1 64ビット、AlmaLinux 9.2 64ビット、AlmaLinux 9.3 64ビット、AlmaLinux 8.7 64ビット (UEFI) 、AlmaLinux 8.8 64ビット (UEFI) 、およびAlmaLinux 9.2 64ビット (UEFI)

    • Rocky Linux 8.5 64ビット、Rocky Linux 8.6 64ビット、Rocky Linux 8.7 64ビット、Rocky Linux 8.8 64ビット、Rocky Linux 8.9 64ビット、Rocky Linux 9.0 64ビット、Rocky Linux 9.1 64ビット、Rocky Linux 9.2 64ビット、Rocky Linux 9.3 64ビット、Rocky Linux 8.7 64ビット (UEFI) 、rocky Linux 8.8 64ビット (UEFI) 、およびRocky Linux 9.1 64ビット (UEFI)

    • CentOS Stream 8 64ビット、CentOS Stream 9 64ビット、CentOS Stream 8 64ビット (UEFI) 、およびCentOS Stream 9 64ビット (UEFI)

    • Fedora 33 64ビット、Fedora 34 64ビット、Fedora 35 64ビット、Fedora 37 64ビット、Fedora 38 64ビット、Fedora 39 64ビット

  • Windows Server 2008 R2以降

  1. Linuxインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、セカンダリENIのIPアドレスが認識されているかどうかを確認します。

    ip address show
  3. 返された結果に基づいてセカンダリENIを設定する必要があるかどうかを判断します。

    • シナリオ1: eth0プライマリENIとeth1セカンダリENIの両方のIPアドレスが認識されます。 セカンダリENIを設定する必要はありません。

      サンプルコマンド出力:

      eth1-detected

    • シナリオ2: eth0プライマリENIのIPアドレスは認識されるが、eth1セカンダリENIのIPアドレスは認識されない。 このトピックで説明する操作を実行して、セカンダリENIを設定できます。

      サンプルコマンド出力:

      ip-detected

    説明

    上記のコマンド出力では、00:16:3e:16:**:** はプライマリENIのメディアアクセス制御 (MAC) アドレス、00:16:3e:0f:**:** はセカンダリENIのMACアドレスです。

(オプション) ステップ2: セカンダリENIの情報を取得する

セカンダリENIを設定する場合、プライマリプライベートIPアドレスとMACアドレスが必要になる場合があります。 後続の設定のために情報を準備します。

サンプル値は、以下の操作で使用される。 実際のシナリオでは、それらをセカンダリENIの属性値に置き換えます。

(推奨) ECSコンソールでセカンダリENIに関する情報を取得

  1. ECSコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[ネットワークとセキュリティ] > [Elastic Network Interface] を選択します。

  3. 上部のナビゲーションバーで、リソースが属するリージョンとリソースグループを選択します。 地域

  4. [Elastic Network Interface] ページで、情報を取得するセカンダリENIを見つけ、[IPアドレス] 列と [MACアドレス] 列でプライマリプライベートIPアドレスとMACアドレスを表示します。

インスタンスメタデータからセカンダリENIに関する情報を取得

  1. Linux ECSインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを順番に実行して、セカンダリENIの情報を取得します。

    • LinuxインスタンスにバインドされているすべてのENIのMACアドレスを取得します。

      curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/
      説明

      ENIのMACアドレスは、ENIのプライマリプライベートIPアドレス、サブネットマスク、およびゲートウェイアドレスを取得するために必要です。

    • 特定のENIのプライマリプライベートIPアドレスを取得します。

      curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/00:16:3e:19:**:**/primary-ip-address
    • 特定のENIのサブネットマスクを取得します。

      curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/00:16:3e:19:**:**/netmask
    • 特定のENIのゲートウェイアドレスを取得します。

      curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/00:16:3e:19:**:**/gateway

コマンド出力の例を次の図に示します。 サンプルコマンド出力では、00:16:3e:16:**:** はプライマリENIのMACアドレスであり、00:16:3e:0f:**:** はセカンダリENIのMACアドレスです。

説明

ip address showコマンドを実行した後、コマンド出力にMACアドレスが表示される順序に基づいて、プライマリENIとセカンダリENIを識別できます。

eni-status

ステップ3: セカンダリENIの設定

セカンダリENIの設定に必要な操作は、セカンダリENIがバインドされているインスタンスのオペレーティングシステムによって異なります。

Alibaba Cloud Linux 2、CentOS 6、CentOS 7、またはRed Hat

インスタンスがAlibaba Cloud Linux 2、CentOS 6、CentOS 7、またはRed Hatを実行している場合、multi-nic-utilツールを使用して、インスタンスにバインドされているENIの設定を自動的に設定または変更できます。

重要
  • multi-nic-utilツールを使用すると、ECSインスタンスの元のネットワーク設定が上書きされる可能性があります。 作業は慎重に行ってください。

  • Dockerまたはその他のコンテナ化された環境では、multi-nic-utilツールを使用しないことをお勧めします。

  • CentOSインスタンスの場合、マルチnic-utilツールを使用してセカンダリENIを構成できるのは、インスタンスがツールをサポートするCentOSイメージバージョンを使用している場合のみです。 次のCentOSイメージバージョンは、マルチnic-utilツールをサポートしています。

    • CentOS 6画像: CentOS 6.8以降

    • CentOS 7画像: CentOS 7.3以降

    • CentOSインスタンスがマルチnic-utilツールをサポートしていないCentOSイメージバージョンを使用している場合は、セカンダリENIの設定ファイルを変更して、インスタンスのセカンダリENIを設定します。

(推奨) 方法1: マルチnic-utilツールを使用してセカンダリENIを設定する

  1. 以下のコマンドを実行して、multi-nic-utilツールをダウンロードしてインストールします。

  2. wget https://image-offline.oss-cn-hangzhou.aliyuncs.com/multi-nic-util/multi-nic-util-0.6.tgz && \
    tar -zxvf multi-nic-util-0.6.tgz && \
    cd multi-nic-util-0.6 && \
    bash install.sh
  3. 次のコマンドを実行して、ENIサービスを再起動します。

    sudo systemctl restart eni.service

方法2: セカンダリENIの設定ファイルを変更してセカンダリENIを設定する

  1. 次のコマンドを実行して、セカンダリENIの設定ファイルを開きます。

  2. vi /etc/sysconfig/network-scripts/ifcfg-eth1
  3. Iキーを押してInsertモードに入り、セカンダリENIに関する情報を設定ファイルに追加します。 Escキーを押して挿入モードを終了し、:wqと入力して構成ファイルを保存して閉じます。

    セカンダリENIに関するサンプル情報:

    DEVICE=eth1  # Specify the name of the ENI that you want to configure. 
    BOOTPROTO=dhcp
    ONBOOT=yes
    TYPE=Ethernet
    USERCTL=yes
    PEERDNS=no
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    HWADDR=00:16:3e:0f:**:**  # Specify the MAC address of the ENI that you obtained. 
    DEFROUTE=no  # Indicates that the ENI is not used for the default route. To prevent the default route of the instance from being changed when you run the ifup command to start the secondary ENI, do not specify eth1 information as the default route.

  4. 次のいずれかのコマンドを実行して、ネットワークサービスを再起動します。

    • CentOS 7やRed Hat 7より前のバージョン (CentOS 6やRed Hat 6など):

    • sudo service network restart
    • CentOS 7以降、RedHat 7以降、およびAlibaba Cloud Linux 2:

    • sudo systemctl restart network
説明

eniが設定されているインスタンスからカスタムイメージを作成する前に、/etc/eni_utils/eni-cleanupコマンドを実行して、/etc/udev/rules.d/70-persistent-net.ru lesおよび /etc/sysconfig/network-scripts/ ファイルからネットワーク設定を削除します。

UbuntuまたはDebian

インスタンスがUbuntuまたはDebianを実行している場合は、イメージのバージョンに基づいてセカンダリENIの設定ファイルを変更します。

  • Ubuntu 14.04、Ubuntu 16.04、およびDebian

    1. 次のコマンドを実行して、セカンダリENIの設定ファイルを開きます。

      vi /etc/network/interfaces
    2. Iキーを押してInsertモードに入り、セカンダリENIに関する情報を設定ファイルに追加します。 次に、Escキーを押して挿入モードを終了し、:wqと入力して構成ファイルを保存して閉じます。

      セカンダリENIに関するサンプル情報:

      auto eth0
      iface eth0 inet dhcp
      
      auto eth1  # Specify the name of the ENI that you want to configure. 
      iface eth1 inet dhcp
      説明

      eth0プライマリENIは、eth1セカンダリENIが設定されているのと同じ設定ファイルで設定されます。 プライマリENIに関する情報を構成ファイルに追加する必要があります。

    3. 次のいずれかのコマンドを実行して、ネットワークサービスを再起動します。

      • Ubuntu 14.04:

        sudo service networking restart
      • Ubuntu 16.04とDebian:

        sudo systemctl restart networking

      セカンダリENIの設定は、次のアラート通知が表示されるかどうかに関係なく有効になります。 ip address showコマンドを実行して、セカンダリENIのIPアドレスが認識されているかどうかを確認できます。warning

  • Ubuntu 18.04、20.04、22.04、24.04

    説明

    既定では、Ubuntu 20.04、22.04、および24.04は、関連するセカンダリENIの自動設定をサポートしています。 自動設定に失敗した場合は、次の手動設定手順を参照してください。

    1. 次のコマンドを実行して、セカンダリENIの設定ファイルを開きます。

    2. vi /etc/netplan/eth1-netcfg.yaml
    3. Iキーを押してInsertモードに入り、セカンダリENIに関する情報を設定ファイルに追加します。 Escキーを押して挿入モードを終了し、:wqと入力して構成ファイルを保存して閉じます。

      説明

      設定ファイルを変更するときは、次の項目に注意してください。

      • 設定ファイルはYAML形式です。 設定ファイルを変更するときは、YAML構文ルールに従います。

      • YAMLファイルのインデントにスペースを使用します。 タブはサポートされていません。

      • フォーマットの問題を防ぐために、デフォルトの /etc/netplan/99-netcfg.yaml構成ファイルから情報をコピーすることを推奨します。

      セカンダリENIに関するサンプル情報:

      network:
        version: 2
        renderer: networkd
        ethernets:
          eth1:
            dhcp4: yes
            dhcp6: no
    4. 設定ファイルの変更を有効にするには、次のコマンドを実行します。

    5. netplan apply

SUSEまたはopenSUSE

インスタンスがSUSEまたはopenSUSEを実行している場合は、セカンダリENIの設定ファイルを変更する必要があります。

  1. 次のコマンドを実行して、セカンダリENIの設定ファイルを開きます。

    vi /etc/sysconfig/network/ifcfg-eth1
  2. Iキーを押してInsertモードに入り、セカンダリENIに関する情報を設定ファイルに追加します。 Escキーを押して挿入モードを終了し、:wqと入力して構成ファイルを保存して閉じます。

    次の例では、IPアドレスの割り当て方法はDynamic Host Configuration Protocol (DHCP) に設定されています。

    BOOTPROTO='dhcp4'
    STARTMODE='auto'
    USERCONTROL='no'
  3. 次のいずれかのコマンドを実行して、ネットワークサービスを再起動します。

    • SUSE Linux Enterprise Server 12およびopenSUSE 13.2より前のバージョン:

      sudo service network restart
    • SUSE Linux Enterprise Server 12以降、およびopenSUSE 13.2以降:

      sudo systemctl restart network

(条件付きで必要) 手順4: ルートの設定

route -nコマンドを実行して、現在のルート情報を照会できます。 セカンダリENIにルートが設定されていない場合、または既存のルートがビジネス要件を満たしていない場合は、このトピックの説明に従って、セカンダリENIのルートテーブルとルールを設定できます。 ルートテーブルとルールは、特定のゲートウェイを使用してトラフィックを転送するルーティングポリシーの実装に役立ちます。 これにより、ネットワークトラフィックをより細かく制御および管理できます。

要件に基づいてデフォルトルートを計画します。 この例では、次の表にリストされているサンプル値が使用されます。

セカンダリENI属性

サンプル値

ENI 名

eth1

プライマリプライベートIPアドレス

192.168。**。* 2

ゲートウェイアドレス

192.168.**.253

測定値

1001

Alibaba Cloud Linux 2またはCentOS 7を実行するインスタンスのセカンダリENIのルートの設定

  1. 次のコマンドを実行して、ルート情報を照会します。

    route -n

    コマンド出力のサンプル:

    • 次のコマンド出力には、eth0プライマリENIのルート情報のみが含まれます。 eth1セカンダリENIにはルートが設定されていません。 セカンダリENIのルートを設定するには、後続の操作を実行する必要があります。main-eni-route

    • 次のコマンド出力には、eth0プライマリENIとeth1セカンダリENIのルート情報が含まれています。 セカンダリENIのルートを設定するために、後続の操作を実行する必要はありません。 設定されたルートがビジネス要件を満たしていない場合は、ルート設定を変更できます。both-eni-route

  2. 次のコマンドを実行して、デフォルトルートを設定します。

    ip -4 route add default via 192.168.**.253 dev eth1 metric 1001 && \
    ip -4 route add default via 192.168.**.253 dev eth1 table 1001 && \
    ip -4 rule add from 192.168.**.*2 lookup 1001
    説明

    上記のコマンドを実行してeth1セカンダリENIのデフォルトルートを設定し、ルートテーブルを作成してから、テーブルにルーティングポリシーをアタッチできます。 この例では、table 1001という名前のルートテーブルが作成されます。 ルートテーブルの名前は、ENIのデフォルトルートのメトリック値と同じにすることをお勧めします。 192.168.**.253はゲートウェイアドレスであり、192.168.*.* 2はeth1セカンダリENIのプライマリプライベートIPアドレスです。 パラメーター値を実際の値に置き換えます。

  3. 次のコマンドを実行して、作成したルートテーブルとルーティングポリシーを照会します。

    ip route list table 1001 && \
    ip rule list

    次のコマンド出力は、ルートテーブルとルーティングポリシーが作成されたことを示します。view-route-policy

  4. インスタンスの起動時に自動的に更新するルートを設定します。

    eth1セカンダリENIのルートを設定した後、インスタンスの起動時に自動的に更新されるようにルートを設定する必要があります。 それ以外の場合、インスタンスの再起動時にルートは無効になります。

    1. 次のコマンドを実行して、/etc/rc.localファイルを開きます。

      vim /etc/rc.local
    2. Iキーを押して挿入モードに入り、次の内容を追加し、Escキーを押して挿入モードを終了し、:wqと入力してファイルを保存して閉じます。

      ip -4 route add default via 192.168.**.253 dev eth1 metric 1001
      ip -4 route add default via 192.168.**.253 dev eth1 table 1001
      ip -4 rule add from 192.168.**.*2 lookup 1001
    3. 次のコマンドを実行して、/etc/rc.localファイルに対する実行権限を付与します。

      sudo chmod +x /etc/rc.local

CentOS 8を実行するインスタンスのセカンダリENIのルートの設定

  1. 次のコマンドを実行して、ルート情報を照会します。

    route -n

    次のコマンド出力には、eth0プライマリENIとeth1セカンダリENIのルート情報が含まれています。centos8-route

  2. ルートの設定に使用するスクリプトを作成します。

    1. 次のコマンドを実行して、/home/route.shファイルを作成して開きます。

      vi /home/route.sh
    2. Iキーを押して挿入モードに入り、次の内容を追加し、Escキーを押して挿入モードを終了し、:wqと入力してファイルを保存して閉じます。

      説明

      次のサンプルスクリプトは、eth1セカンダリENIのルートテーブルを作成し、ルーティングポリシーをルートテーブルにアタッチする方法の例を示しています。 この例では、テーブル1001という名前のルートテーブルが作成されます。192.168.**.253はゲートウェイアドレスで、192.168.*.* 2はeth1セカンダリENIのプライマリプライベートIPアドレスです。

      #!/bin/bash
      
      i=0
      while true; do
              /usr/sbin/ip -4 route add default via 192.168.**.253 dev eth1 table 1001
              if [ $? -eq 0 ]; then
                      break
          fi
              sleep 3
              let i++
              if [ $i -gt 10 ]; then
                      exit -1
              fi
      done
      
      i=0
      while true; do
              /usr/sbin/ip -4 rule add from 192.168.**.*2 lookup 1001
              if [ $? -eq 0 ]; then
                      break
          fi
              sleep 3
              let i++
              if [ $i -gt 10 ]; then
                      exit -1
              fi
      done
  3. 次のコマンドを実行して、デフォルトルートを設定します。

    sh /home/route.sh
  4. 次のコマンドを実行して、作成したルートテーブルとルーティングポリシーを照会します。

    ip route list table 1001 && \
    ip rule list

    コマンド出力の例を次の図に示します。 view-route-policy

  5. インスタンスの起動時に自動的に更新するルートを設定します。

    上記の手順を実行してeth1セカンダリENIのルートを設定した後、次の手順を実行して、インスタンスの起動時に自動的に更新されるルートを設定する必要があります。 それ以外の場合、インスタンスの再起動後にルートは無効になります。

    1. 次のコマンドを実行して、/etc/rc.localファイルを開きます。

      vim /etc/rc.local
    2. Iキーを押して挿入モードに入り、次の内容を追加し、Escキーを押して挿入モードを終了し、:wqと入力してファイルを保存して閉じます。

      sh /home/route.sh
    3. 次のコマンドを実行して、/etc/rc.localファイルに対する実行権限を付与します。

      sudo chmod +x /etc/rc.local