インスタンスに Dynamic Network Interface を追加する

このページでは、既存の Compute Engine インスタンスに Dynamic Network Interface(NIC)を追加する方法について説明します。

新しいインスタンスの作成については、複数のネットワーク インターフェースを持つ VM を作成するをご覧ください。

始める前に

インスタンスに Dynamic NIC を追加する前に、次の操作を行います。

Dynamic NIC を追加する

以降のセクションでは、マネージド インスタンス グループ(MIG)に属する個々のインスタンスまたはインスタンスに Dynamic NIC を追加する方法について説明します。

Dynamic NIC を追加すると、伝播遅延が発生することがあります。通常は数秒ですが、まれに 1 分程度になることがあります。

インスタンスに Dynamic NIC を追加する

このセクションでは、インスタンスに Dynamic NIC を追加する方法について説明します。

コンソール

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. Dynamic NIC を追加するインスタンスの名前をクリックします。

  3. インスタンスの詳細ページで、[編集] をクリックします。

  4. [動的ネットワーク インターフェース] セクションで、[Dynamic Network Interface を追加] をクリックして、次の操作を行います。

    1. [親ネットワーク インターフェース] フィールドで、Dynamic NIC を作成する親 vNIC を選択します。

    2. [VLAN ID] フィールドに、Dynamic NIC の VLAN ID を入力します。

    3. [ネットワーク] と [サブネットワーク] で、使用するネットワークとサブネットワークを選択します。

    4. Dynamic NIC の [IP スタックタイプ] に、次のいずれかのオプションを選択します。

      • IPv4(シングル スタック)
      • IPv4 と IPv6(デュアル スタック)
      • IPv6(シングル スタック)
    5. IPv4 アドレスを持つ Dynamic NIC の場合は、次の操作を行います。

      1. [プライマリ内部 IPv4 アドレス] で次のいずれかを選択します。

        • エフェメラル(自動): 新しいエフェメラル IPv4 アドレスを自動的に割り当てます。
        • エフェメラル(カスタム): 新しいエフェメラル IPv4 アドレスを手動で指定します。
        • リストから予約された静的内部 IPv4 アドレス。
        • 静的内部 IPv4 アドレスを予約: 新しい静的内部 IPv4 アドレスを予約して割り当てます。
      2. [外部 IPv4 アドレス] で、次のいずれかを選択します。

        • エフェメラル: 新しいエフェメラル IPv4 アドレスを割り当てます。
        • なし: 外部 IPv4 アドレスを割り振りません。
        • リストから予約された静的 IPv4 アドレス。
        • 静的外部 IP アドレスを予約: 新しい静的外部 IPv4 アドレスを予約して割り当てます。
      3. 必要に応じて、1 つ以上のエイリアス IP 範囲をネットワーク インターフェースに割り当てることが可能です。エイリアス IP 範囲を割り当てるには、次の操作を行います。

        1. [エイリアス IP 範囲] で、[IP 範囲を追加] をクリックします。
        2. [サブネット範囲] で、使用するサブネットのプライマリ IPv4 アドレス範囲またはサブネットのセカンダリ IPv4 アドレス範囲を選択します。
        3. [エイリアス IP 範囲] に、IP 範囲を CIDR 表記で入力します。 この範囲は、選択したサブネット IP 範囲の未使用範囲でなければなりません。

        エイリアス IP 範囲を VM ネットワーク インターフェースに割り当てる方法については、エイリアス IP 範囲を構成するをご覧ください。

    6. IPv6 アドレスを持つ Dynamic NIC の場合は、接続されたサブネットのアクセスタイプに応じて、内部 IPv6 アドレス範囲または外部 IPv6 アドレス範囲を構成します。[プライマリ内部 IPv6 アドレス] または [外部 IPv6 アドレス] で、次のいずれかを選択します。

      • エフェメラル(自動): 新しいエフェメラル IPv6 アドレス範囲を自動的に割り当てます。
      • エフェメラル(カスタム): 新しいエフェメラル IPv6 アドレス範囲を手動で指定します。
      • リストから予約された静的 IPv6 アドレス範囲。
      • 静的内部 IPv6 アドレスを予約または静的外部 IPv6 アドレスを予約: 新しい静的 IPv6 アドレス範囲を予約して割り当てます。
    7. Dynamic NIC のプロパティの編集を完了するには、[完了] をクリックします。

  5. 構成を保存するには、[保存] をクリックします。

gcloud

既存のインスタンスに Dynamic NIC を追加するには、gcloud compute instances network-interfaces add コマンドを使用します。

gcloud compute instances network-interfaces add INSTANCE_NAME \
   --zone=ZONE \
   --vlan=VLAN_ID \
   --parent-nic-name=PARENT_VNIC_NAME \
   --network=NETWORK \
   --subnetwork=SUBNET

次のように置き換えます。

  • INSTANCE_NAME: Dynamic NIC を追加するインスタンスの名前
  • ZONE: インスタンスのゾーン
  • VLAN_ID: Dynamic NIC の VLAN ID
  • PARENT_VNIC_NAME: 親 vNIC の名前(nic0 など)
  • NETWORK: Dynamic NIC が接続するネットワーク
  • SUBNET: Dynamic NIC が接続するサブネット

また、インスタンスのプロパティを更新するときに、インスタンスに Dynamic NIC を追加することもできます。詳細については、インスタンス プロパティを更新するをご覧ください。

API

既存のインスタンスに Dynamic NIC を追加するには、instances.addNetworkInterface メソッドを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addNetworkInterface
{
  "subnetwork": "regions/REGION/subnetworks/SUBNET",
  "parentNicName": "PARENT_VNIC_NAME",
  "vlan": "VLAN_ID"
}

次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれているプロジェクトの ID
  • ZONE: インスタンスを含むゾーン
  • INSTANCE_NAME: Dynamic NIC を追加するインスタンスの名前
  • REGION: インスタンスが含まれるリージョン
  • SUBNET: Dynamic NIC が接続するサブネット
  • PARENT_VNIC_NAME: 親 vNIC の名前(nic0 など)
  • VLAN_ID: Dynamic NIC の VLAN ID

また、インスタンスのプロパティを更新するときに、インスタンスに Dynamic NIC を追加することもできます。詳細については、インスタンス プロパティを更新するをご覧ください。

MIG 内のインスタンスに Dynamic NIC を追加する

このセクションでは、新しいインスタンス テンプレートを作成して構成を MIG に適用することで、MIG 内のインスタンスに Dynamic NIC を追加する方法について説明します。既存のインスタンス テンプレートの更新はサポートされていません。

インスタンス テンプレート作成の詳細については、インスタンス テンプレートを作成するをご覧ください。 既存のインスタンス テンプレートを表示するには、インスタンス テンプレートの取得、一覧表示、削除をご覧ください。

コンソール

  1. [インスタンス テンプレート] ページに移動します。

    [インスタンス テンプレート] に移動

  2. コピーして更新するインスタンス テンプレートをクリックします。

  3. [同様のものを作成] をクリックします。

  4. [詳細オプション] セクションを開き、[ネットワーキング] セクションを開きます。

  5. [動的ネットワーク インターフェース] セクションで、[Dynamic Network Interface を追加] をクリックして、次の操作を行います。

    1. [親ネットワーク インターフェース] フィールドで、Dynamic NIC を作成する親 vNIC を選択します。

    2. [VLAN ID] フィールドに、Dynamic NIC の VLAN ID を入力します。

    3. [ネットワーク] と [サブネットワーク] で、使用するネットワークとサブネットワークを選択します。

    4. Dynamic NIC の [IP スタックタイプ] に、次のいずれかのオプションを選択します。

      • IPv4(シングル スタック)
      • IPv4 と IPv6(デュアル スタック)
      • IPv6(シングル スタック)
    5. IPv4 アドレスを持つ Dynamic NIC の場合は、次の操作を行います。

      1. [プライマリ内部 IPv4 アドレス] で次のいずれかを選択します。

        • エフェメラル(自動): 新しいエフェメラル IPv4 アドレスを自動的に割り当てます。
        • エフェメラル(カスタム): 新しいエフェメラル IPv4 アドレスを手動で指定します。
        • リストから予約された静的内部 IPv4 アドレス。
        • 静的内部 IPv4 アドレスを予約: 新しい静的内部 IPv4 アドレスを予約して割り当てます。
      2. [外部 IPv4 アドレス] で、次のいずれかを選択します。

        • エフェメラル: 新しいエフェメラル IPv4 アドレスを割り当てます。
        • なし: 外部 IPv4 アドレスを割り振りません。
        • リストから予約された静的 IPv4 アドレス。
        • 静的外部 IP アドレスを予約: 新しい静的外部 IPv4 アドレスを予約して割り当てます。
      3. 必要に応じて、1 つ以上のエイリアス IP 範囲をネットワーク インターフェースに割り当てることが可能です。エイリアス IP 範囲を割り当てるには、次の操作を行います。

        1. [エイリアス IP 範囲] で、[IP 範囲を追加] をクリックします。
        2. [サブネット範囲] で、使用するサブネットのプライマリ IPv4 アドレス範囲またはサブネットのセカンダリ IPv4 アドレス範囲を選択します。
        3. [エイリアス IP 範囲] に、IP 範囲を CIDR 表記で入力します。 この範囲は、選択したサブネット IP 範囲の未使用範囲でなければなりません。

        エイリアス IP 範囲を VM ネットワーク インターフェースに割り当てる方法については、エイリアス IP 範囲を構成するをご覧ください。

    6. IPv6 アドレスを持つ Dynamic NIC の場合は、接続されたサブネットのアクセスタイプに応じて、内部 IPv6 アドレス範囲または外部 IPv6 アドレス範囲を構成します。[プライマリ内部 IPv6 アドレス] または [外部 IPv6 アドレス] で、次のいずれかを選択します。

      • エフェメラル(自動): 新しいエフェメラル IPv6 アドレス範囲を自動的に割り当てます。
      • エフェメラル(カスタム): 新しいエフェメラル IPv6 アドレス範囲を手動で指定します。
      • リストから予約された静的 IPv6 アドレス範囲。
      • 静的内部 IPv6 アドレスを予約または静的外部 IPv6 アドレスを予約: 新しい静的 IPv6 アドレス範囲を予約して割り当てます。
    7. Dynamic NIC のプロパティの編集を完了するには、[完了] をクリックします。

  6. [作成] をクリックしてインスタンス テンプレートを作成します。

  7. MIG で新しい VM 構成を適用するの手順に沿って操作します。

    インスタンスを再起動または再作成せずに更新する場合は、最小アクションを REFRESH に設定します。詳しくは以下をご覧ください。

gcloud

  1. Dynamic NIC を追加する新しいインスタンス テンプレートを作成するには、gcloud compute instance-templates create コマンドを使用します。

    既存のインスタンス テンプレートのネットワーク インターフェースごとに --network-interface フラグを指定し、vlan キーを指定する新しいネットワーク インターフェースを追加して、Dynamic NIC を作成します。

    次の例では、nic0 の下に Dynamic NIC を追加します。必要に応じて、追加のネットワーク インターフェースとプロパティを指定できます。複数のネットワーク インターフェースを持つインスタンスの作成方法のその他の例については、複数のネットワーク インターフェースを持つ VM を作成するをご覧ください。

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
       --network-interface=network=NETWORK_A,subnet=SUBNET_A \
       --network-interface=network=NETWORK_B,subnet=SUBNET_B,vlan=VLAN_ID
    

    次のように置き換えます。

    • INSTANCE_TEMPLATE_NAME: 新しいインスタンス テンプレートの名前
    • NETWORK_ANETWORK_B: インターフェースが接続するネットワーク。
    • SUBNET_ASUBNET_B: インターフェースが接続するサブネット。
    • VLAN_ID: VLAN ID。VLAN ID を指定すると、ネットワーク インターフェースが Dynamic NIC として構成されます。コマンドでは、Dynamic NIC を親 vNIC の後に配置する必要があります。
  2. MIG で新しい VM 構成を適用するの手順に沿って操作します。

    インスタンスを再起動または再作成せずに更新する場合は、最小アクションを REFRESH に設定します。詳しくは以下をご覧ください。

API

  1. Dynamic NIC を追加する新しいインスタンス テンプレートを作成するには、instanceTemplates.insert メソッドを使用してグローバル インスタンス テンプレートを作成するか、regionInstanceTemplates.insert メソッドを使用してリージョン インスタンス テンプレートを作成します。

    networkInterfaces フィールドで、既存のインスタンス テンプレートから各ネットワーク インターフェースを指定し、vlan フィールドを含む新しいネットワーク インターフェースを追加して、Dynamic NIC を作成します。

    次の例では、nic0 の下に Dynamic NIC を追加します。必要に応じて、追加のネットワーク インターフェースとプロパティを指定できます。複数のネットワーク インターフェースを持つインスタンスの作成方法のその他の例については、複数のネットワーク インターフェースを持つ VM を作成するをご覧ください。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    {
       ....
    
       "networkInterfaces": [
         {
           "subnetwork": "regions/REGION/subnetworks/SUBNET_A"
         },
         {
           "subnetwork": "regions/REGION/subnetworks/SUBNET_B",
           "vlan": "VLAN_ID"
         },
           additional network interfaces...
       ],
       other instance settings...
     }
    

    次のように置き換えます。

    • PROJECT_ID: インスタンス テンプレートが含まれているプロジェクトの ID
    • REGION: インスタンスが含まれるリージョン。
    • SUBNET_A, SUBNET_B: 各ネットワーク インターフェースが配置されているサブネット。
    • VLAN_ID: VLAN ID。VLAN ID を指定すると、ネットワーク インターフェースが Dynamic NIC として構成されます。Dynamic NIC は、リクエストの親 vNIC の後に配置する必要があります。
  2. MIG で新しい VM 構成を適用するの手順に沿って操作します。

    インスタンスを再起動または再作成せずに更新する場合は、最小アクションを REFRESH に設定します。詳しくは以下をご覧ください。

Dynamic NIC 用にゲスト OS を構成する

このセクションでは、新しいインスタンスまたは既存のインスタンスに Dynamic NIC を追加するときに必要な追加のゲスト OS 構成を完了する方法について説明します。

次のいずれかの構成オプションを選択します。

構成オプション 説明
Dynamic NIC の自動管理を構成する(推奨)

Dynamic NIC の自動管理には、ゲスト エージェントを使用します。

ゲスト環境にはゲスト エージェントが含まれています。このエージェントは、 Google Cloud OS イメージの Linux ディストリビューションのルート名前空間で VLAN インターフェースのインストールと管理を自動化します。

Dynamic NIC の自動管理を構成する場合は、ゲスト エージェント バージョン 20251030.02 以降を使用します。この機能のサポートはゲスト エージェント バージョン 20250204.02 で導入されましたが、ゲスト エージェント バージョン 20250901.0020251030.01 では、Dynamic NIC が自動的にインストールおよび管理されないという既知の問題があります。

ゲスト OS を手動で構成する

ゲスト OS でコマンドを実行して、Dynamic NIC をインストールします。

このオプションを使用すると、インスタンスの再起動後に構成が自動的に保持されません。再起動後も構成を保持するには、Linux ディストリビューションの永続ネットワーク インターフェースを構成する推奨の方法を使用します。たとえば、Debian の NetworkConfiguration と Ubuntu の interfaces をご覧ください。

Dynamic NIC の自動管理を構成する

このセクションでは、ゲスト エージェントを使用して Dynamic NIC の自動管理を構成する方法について説明します。

これらの手順は、インスタンスごとに 1 回だけ実行する必要があります。これらの手順をすでに完了しているインスタンスに Dynamic NIC を追加した場合は、これらの手順を繰り返す必要はありません。

Dynamic NIC の自動管理を構成するには:

  1. SSH を使用してインスタンスに接続します

  2. インスタンスでゲスト エージェント バージョン 20251030.02 以降が実行されていることを確認します。

    1. インスタンスがゲスト エージェントを実行しているかどうかを確認するには、ゲスト環境でインストールされるパッケージに記載されている適切なコマンドを実行します。

      1. インスタンスがゲスト エージェントを実行していない場合は、ゲスト環境をインストールします。

      2. インスタンスでゲスト エージェントが実行されている場合は、ゲスト環境を更新します。

      ゲスト環境をインストールまたは更新すると、最新バージョンのゲスト エージェントがインストールされます。バージョンは、ゲスト環境を検証するの手順に沿って確認できます。

  3. Dynamic NIC を管理するようにゲスト エージェントを構成します。

    1. ゲスト環境構成ファイルを開くか、作成します。

      edit /etc/default/instance_configs.cfg
      
    2. 次のものを構成ファイルに追加し、変更を保存してエディタを終了します。

      [NetworkInterfaces]
      vlan_setup_enabled = true
      manage_primary_nic = true
      

      これらの設定については、以下をご覧ください。

      • vlan_setup_enabled = true: Dynamic NIC をインストールして管理するようにゲスト エージェントを構成します。
      • manage_primary_nic = true: nic0 で作成された Dynamic NIC をゲスト エージェントが管理するために必要な追加設定

      ゲスト エージェントの構成ファイルの編集の詳細については、ゲスト エージェントのドキュメントで構成をご覧ください。

    3. 次のコマンドを実行して、ゲスト エージェントを再起動します。また、インスタンスを再起動することもできます。

      sudo systemctl restart google-guest-agent.service
      
  4. インスタンスのネットワーク インターフェースを一覧表示して、ゲスト エージェントが Dynamic NIC をインストールしたことを確認します。

    たとえば、次のコマンドは、ens4 インターフェースの子として作成された VLAN ID が 11 の Dynamic NIC の名前を表示します(a-gcp.ens4.11 など)。

    sudo ip -d addr
    

ゲスト OS を手動で構成する

インスタンスのゲスト OS で Dynamic NIC を手動で構成するには:

  1. SSH を使用してインスタンスに接続します

  2. インスタンスでゲスト エージェントが実行されている場合は、Dynamic NIC の自動管理を無効にします。インスタンスがゲスト エージェントを実行しているかどうかを確認するには、ゲスト環境でインストールされるパッケージに記載されている適切なコマンドを使用します。

    Dynamic NIC の自動管理を無効にするには:

    1. ゲスト環境構成ファイルを開くか、作成します。

        edit /etc/default/instance_configs.cfg
        

    2. 次のものを構成ファイルに追加し、変更を保存してエディタを終了します。

      [NetworkInterfaces]
      vlan_setup_enabled = false
      manage_primary_nic = false
      

      ゲスト エージェントの構成ファイルの編集の詳細については、ゲスト エージェントのドキュメントで構成をご覧ください。

    3. 次のコマンドを実行して、ゲスト エージェントを再起動します。また、インスタンスを再起動することもできます。

      sudo systemctl restart google-guest-agent.service
      
  3. 作成した Dynamic NIC ごとに、次の操作を行います。

    1. Dynamic NIC の MAC アドレスを取得します。MAC アドレスを確認するには、次のコマンドを実行してメタデータ サーバーをクエリします。

      curl http://metadata.google.internal/computeMetadata/v1/instance/vlan-network-interfaces/VNIC_NUMBER/VLAN_ID/mac -H "Metadata-Flavor: Google"
      

      VNIC_NUMBER/VLAN_ID は、親 vNIC の番号と Dynamic NIC の VLAN ID に置き換えます。たとえば、nic0.2 の場合は 0/2nic1.4 の場合は 1/4 です。

    2. インスタンスのゲスト OS でサブインターフェースを構成します。たとえば、Debian VM で次のコマンドを実行します。

      sudo modprobe 8021q
      sudo ip link add link VNIC_NAME name VNIC_NAME.VLAN_ID type vlan id VLAN_ID
      sudo ip addr add IP_ADDRESS dev VNIC_NAME.VLAN_ID
      sudo ip link set dev VNIC_NAME.VLAN_ID address MAC_ADDRESS
      sudo ip link set up VNIC_NAME.VLAN_ID
      

      次のように置き換えます。

      • VNIC_NAME: オペレーティング システムによって割り当てられた親 vNIC の名前(eth1ens4 など)
      • IP_ADDRESS: 作成した Dynamic NIC の IP アドレス
      • VLAN_ID: Dynamic NIC に割り当てた VLAN ID
      • MAC_ADDRESS: 前の手順で取得した MAC アドレス

次のステップ