インスタンスに Dynamic Network Interface を追加する
このページでは、既存の Compute Engine インスタンスに Dynamic Network Interface(NIC)を追加する方法について説明します。
新しいインスタンスの作成については、複数のネットワーク インターフェースを持つ VM を作成するをご覧ください。
始める前に
インスタンスに Dynamic NIC を追加する前に、次の操作を行います。
- 複数のネットワーク インターフェースの概要で説明されているように、Dynamic NIC のプロパティと制限事項をよく理解しておいてください。
- 必要に応じて、インスタンスのネットワーク インターフェースを表示するの手順に沿って、インスタンスの既存のネットワーク インターフェースを確認します。
Dynamic NIC を追加する
以降のセクションでは、マネージド インスタンス グループ(MIG)に属する個々のインスタンスまたはインスタンスに Dynamic NIC を追加する方法について説明します。
Dynamic NIC を追加すると、伝播遅延が発生することがあります。通常は数秒ですが、まれに 1 分程度になることがあります。
インスタンスに Dynamic NIC を追加する
このセクションでは、インスタンスに Dynamic NIC を追加する方法について説明します。
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
Dynamic NIC を追加するインスタンスの名前をクリックします。
インスタンスの詳細ページで、[編集] をクリックします。
[動的ネットワーク インターフェース] セクションで、[Dynamic Network Interface を追加] をクリックして、次の操作を行います。
[親ネットワーク インターフェース] フィールドで、Dynamic NIC を作成する親 vNIC を選択します。
[VLAN ID] フィールドに、Dynamic NIC の VLAN ID を入力します。
[ネットワーク] と [サブネットワーク] で、使用するネットワークとサブネットワークを選択します。
Dynamic NIC の [IP スタックタイプ] に、次のいずれかのオプションを選択します。
- IPv4(シングル スタック)
- IPv4 と IPv6(デュアル スタック)
- IPv6(シングル スタック)
IPv4 アドレスを持つ Dynamic NIC の場合は、次の操作を行います。
[プライマリ内部 IPv4 アドレス] で次のいずれかを選択します。
- エフェメラル(自動): 新しいエフェメラル IPv4 アドレスを自動的に割り当てます。
- エフェメラル(カスタム): 新しいエフェメラル IPv4 アドレスを手動で指定します。
- リストから予約された静的内部 IPv4 アドレス。
- 静的内部 IPv4 アドレスを予約: 新しい静的内部 IPv4 アドレスを予約して割り当てます。
[外部 IPv4 アドレス] で、次のいずれかを選択します。
- エフェメラル: 新しいエフェメラル IPv4 アドレスを割り当てます。
- なし: 外部 IPv4 アドレスを割り振りません。
- リストから予約された静的 IPv4 アドレス。
- 静的外部 IP アドレスを予約: 新しい静的外部 IPv4 アドレスを予約して割り当てます。
必要に応じて、1 つ以上のエイリアス IP 範囲をネットワーク インターフェースに割り当てることが可能です。エイリアス IP 範囲を割り当てるには、次の操作を行います。
- [エイリアス IP 範囲] で、[IP 範囲を追加] をクリックします。
- [サブネット範囲] で、使用するサブネットのプライマリ IPv4 アドレス範囲またはサブネットのセカンダリ IPv4 アドレス範囲を選択します。
- [エイリアス IP 範囲] に、IP 範囲を CIDR 表記で入力します。 この範囲は、選択したサブネット IP 範囲の未使用範囲でなければなりません。
エイリアス IP 範囲を VM ネットワーク インターフェースに割り当てる方法については、エイリアス IP 範囲を構成するをご覧ください。
IPv6 アドレスを持つ Dynamic NIC の場合は、接続されたサブネットのアクセスタイプに応じて、内部 IPv6 アドレス範囲または外部 IPv6 アドレス範囲を構成します。[プライマリ内部 IPv6 アドレス] または [外部 IPv6 アドレス] で、次のいずれかを選択します。
- エフェメラル(自動): 新しいエフェメラル IPv6 アドレス範囲を自動的に割り当てます。
- エフェメラル(カスタム): 新しいエフェメラル IPv6 アドレス範囲を手動で指定します。
- リストから予約された静的 IPv6 アドレス範囲。
- 静的内部 IPv6 アドレスを予約または静的外部 IPv6 アドレスを予約: 新しい静的 IPv6 アドレス範囲を予約して割り当てます。
Dynamic NIC のプロパティの編集を完了するには、[完了] をクリックします。
構成を保存するには、[保存] をクリックします。
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 IDPARENT_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: インスタンスが含まれているプロジェクトの IDZONE: インスタンスを含むゾーン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 を追加する方法について説明します。既存のインスタンス テンプレートの更新はサポートされていません。
インスタンス テンプレート作成の詳細については、インスタンス テンプレートを作成するをご覧ください。 既存のインスタンス テンプレートを表示するには、インスタンス テンプレートの取得、一覧表示、削除をご覧ください。
コンソール
[インスタンス テンプレート] ページに移動します。
コピーして更新するインスタンス テンプレートをクリックします。
[同様のものを作成] をクリックします。
[詳細オプション] セクションを開き、[ネットワーキング] セクションを開きます。
[動的ネットワーク インターフェース] セクションで、[Dynamic Network Interface を追加] をクリックして、次の操作を行います。
[親ネットワーク インターフェース] フィールドで、Dynamic NIC を作成する親 vNIC を選択します。
[VLAN ID] フィールドに、Dynamic NIC の VLAN ID を入力します。
[ネットワーク] と [サブネットワーク] で、使用するネットワークとサブネットワークを選択します。
Dynamic NIC の [IP スタックタイプ] に、次のいずれかのオプションを選択します。
- IPv4(シングル スタック)
- IPv4 と IPv6(デュアル スタック)
- IPv6(シングル スタック)
IPv4 アドレスを持つ Dynamic NIC の場合は、次の操作を行います。
[プライマリ内部 IPv4 アドレス] で次のいずれかを選択します。
- エフェメラル(自動): 新しいエフェメラル IPv4 アドレスを自動的に割り当てます。
- エフェメラル(カスタム): 新しいエフェメラル IPv4 アドレスを手動で指定します。
- リストから予約された静的内部 IPv4 アドレス。
- 静的内部 IPv4 アドレスを予約: 新しい静的内部 IPv4 アドレスを予約して割り当てます。
[外部 IPv4 アドレス] で、次のいずれかを選択します。
- エフェメラル: 新しいエフェメラル IPv4 アドレスを割り当てます。
- なし: 外部 IPv4 アドレスを割り振りません。
- リストから予約された静的 IPv4 アドレス。
- 静的外部 IP アドレスを予約: 新しい静的外部 IPv4 アドレスを予約して割り当てます。
必要に応じて、1 つ以上のエイリアス IP 範囲をネットワーク インターフェースに割り当てることが可能です。エイリアス IP 範囲を割り当てるには、次の操作を行います。
- [エイリアス IP 範囲] で、[IP 範囲を追加] をクリックします。
- [サブネット範囲] で、使用するサブネットのプライマリ IPv4 アドレス範囲またはサブネットのセカンダリ IPv4 アドレス範囲を選択します。
- [エイリアス IP 範囲] に、IP 範囲を CIDR 表記で入力します。 この範囲は、選択したサブネット IP 範囲の未使用範囲でなければなりません。
エイリアス IP 範囲を VM ネットワーク インターフェースに割り当てる方法については、エイリアス IP 範囲を構成するをご覧ください。
IPv6 アドレスを持つ Dynamic NIC の場合は、接続されたサブネットのアクセスタイプに応じて、内部 IPv6 アドレス範囲または外部 IPv6 アドレス範囲を構成します。[プライマリ内部 IPv6 アドレス] または [外部 IPv6 アドレス] で、次のいずれかを選択します。
- エフェメラル(自動): 新しいエフェメラル IPv6 アドレス範囲を自動的に割り当てます。
- エフェメラル(カスタム): 新しいエフェメラル IPv6 アドレス範囲を手動で指定します。
- リストから予約された静的 IPv6 アドレス範囲。
- 静的内部 IPv6 アドレスを予約または静的外部 IPv6 アドレスを予約: 新しい静的 IPv6 アドレス範囲を予約して割り当てます。
Dynamic NIC のプロパティの編集を完了するには、[完了] をクリックします。
[作成] をクリックしてインスタンス テンプレートを作成します。
MIG で新しい VM 構成を適用するの手順に沿って操作します。
インスタンスを再起動または再作成せずに更新する場合は、最小アクションを
REFRESHに設定します。詳しくは以下をご覧ください。
gcloud
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_A、NETWORK_B: インターフェースが接続するネットワーク。SUBNET_A、SUBNET_B: インターフェースが接続するサブネット。VLAN_ID: VLAN ID。VLAN ID を指定すると、ネットワーク インターフェースが Dynamic NIC として構成されます。コマンドでは、Dynamic NIC を親 vNIC の後に配置する必要があります。
MIG で新しい VM 構成を適用するの手順に沿って操作します。
インスタンスを再起動または再作成せずに更新する場合は、最小アクションを
REFRESHに設定します。詳しくは以下をご覧ください。
API
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: インスタンス テンプレートが含まれているプロジェクトの IDREGION: インスタンスが含まれるリージョン。SUBNET_A, SUBNET_B: 各ネットワーク インターフェースが配置されているサブネット。VLAN_ID: VLAN ID。VLAN ID を指定すると、ネットワーク インターフェースが Dynamic NIC として構成されます。Dynamic NIC は、リクエストの親 vNIC の後に配置する必要があります。
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.00~20251030.01 では、Dynamic NIC が自動的にインストールおよび管理されないという既知の問題があります。 |
| ゲスト OS を手動で構成する | ゲスト OS でコマンドを実行して、Dynamic NIC をインストールします。 このオプションを使用すると、インスタンスの再起動後に構成が自動的に保持されません。再起動後も構成を保持するには、Linux ディストリビューションの永続ネットワーク インターフェースを構成する推奨の方法を使用します。たとえば、Debian の NetworkConfiguration と Ubuntu の interfaces をご覧ください。 |
Dynamic NIC の自動管理を構成する
このセクションでは、ゲスト エージェントを使用して Dynamic NIC の自動管理を構成する方法について説明します。
これらの手順は、インスタンスごとに 1 回だけ実行する必要があります。これらの手順をすでに完了しているインスタンスに Dynamic NIC を追加した場合は、これらの手順を繰り返す必要はありません。
Dynamic NIC の自動管理を構成するには:
インスタンスでゲスト エージェント バージョン 20251030.02 以降が実行されていることを確認します。
インスタンスがゲスト エージェントを実行しているかどうかを確認するには、ゲスト環境でインストールされるパッケージに記載されている適切なコマンドを実行します。
インスタンスがゲスト エージェントを実行していない場合は、ゲスト環境をインストールします。
インスタンスでゲスト エージェントが実行されている場合は、ゲスト環境を更新します。
ゲスト環境をインストールまたは更新すると、最新バージョンのゲスト エージェントがインストールされます。バージョンは、ゲスト環境を検証するの手順に沿って確認できます。
Dynamic NIC を管理するようにゲスト エージェントを構成します。
ゲスト環境構成ファイルを開くか、作成します。
edit /etc/default/instance_configs.cfg次のものを構成ファイルに追加し、変更を保存してエディタを終了します。
[NetworkInterfaces] vlan_setup_enabled = true manage_primary_nic = true
これらの設定については、以下をご覧ください。
vlan_setup_enabled = true: Dynamic NIC をインストールして管理するようにゲスト エージェントを構成します。manage_primary_nic = true:nic0で作成された Dynamic NIC をゲスト エージェントが管理するために必要な追加設定
ゲスト エージェントの構成ファイルの編集の詳細については、ゲスト エージェントのドキュメントで構成をご覧ください。
次のコマンドを実行して、ゲスト エージェントを再起動します。また、インスタンスを再起動することもできます。
sudo systemctl restart google-guest-agent.service
インスタンスのネットワーク インターフェースを一覧表示して、ゲスト エージェントが Dynamic NIC をインストールしたことを確認します。
たとえば、次のコマンドは、
ens4インターフェースの子として作成された VLAN ID が11の Dynamic NIC の名前を表示します(a-gcp.ens4.11など)。sudo ip -d addr
ゲスト OS を手動で構成する
インスタンスのゲスト OS で Dynamic NIC を手動で構成するには:
インスタンスでゲスト エージェントが実行されている場合は、Dynamic NIC の自動管理を無効にします。インスタンスがゲスト エージェントを実行しているかどうかを確認するには、ゲスト環境でインストールされるパッケージに記載されている適切なコマンドを使用します。
Dynamic NIC の自動管理を無効にするには:
ゲスト環境構成ファイルを開くか、作成します。
edit /etc/default/instance_configs.cfg次のものを構成ファイルに追加し、変更を保存してエディタを終了します。
[NetworkInterfaces] vlan_setup_enabled = false manage_primary_nic = false
ゲスト エージェントの構成ファイルの編集の詳細については、ゲスト エージェントのドキュメントで構成をご覧ください。
次のコマンドを実行して、ゲスト エージェントを再起動します。また、インスタンスを再起動することもできます。
sudo systemctl restart google-guest-agent.service
作成した Dynamic NIC ごとに、次の操作を行います。
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/2、nic1.4の場合は1/4です。インスタンスのゲスト 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 の名前(eth1、ens4など)IP_ADDRESS: 作成した Dynamic NIC の IP アドレスVLAN_ID: Dynamic NIC に割り当てた VLAN IDMAC_ADDRESS: 前の手順で取得した MAC アドレス
次のステップ
- 追加のインターフェースのルーティングを構成する
- インスタンスのネットワーク インターフェースを表示する
- インスタンスのネットワーク インターフェースを更新する
- インスタンスから Dynamic NIC を削除する