Oracle Cloud Infrastructureドキュメント

仮想ネットワーク・インタフェース・カード(VNIC)

このトピックでは、仮想クラウド・ネットワーク(VCN)でバーチャル・ネットワーク・インタフェース・カード(VNIC)を管理する方法について説明します。

警告

Oracle Cloud Infrastructureコンソール、APIまたはCLIを使用してクラウド・リソースに説明、タグまたはわかりやすい名前を割り当てるときは、機密情報を入力しないでください。

VNICと物理NICの概要

Oracle Cloud Infrastructureデータセンターのサーバーには、物理ネットワーク・インタフェース・カード(NIC)があります。 これらのサーバーのいずれかでインスタンスを起動すると、インスタンスは物理NICに関連付けられたネットワーキング service virtual NIC (VNIC)を使用して通信します。 次のセクションでは、VNICとNIC、およびそれらがどのように関連しているかについて説明します。

VNICについて

VNICはインスタンスがVCNに接続することを可能にし、インスタンスがVCNの内外のエンドポイントとどのように接続するかを決定します。 各VNICは、VCN内のサブネットに存在し、次のアイテムを含みます:

  • 1つのprimaryプライベートIPv4アドレス。VNICが属するサブネットから、あなたまたはOracleによって選択されます。
  • あなたまたはOracleによって選択された、VNICがある同じサブネットから最大31のオプションのsecondaryプライベートIPv4アドレス」
  • Oracleによって選択されたが、裁量で割り当てた各プライベートIP用のオプションの「パブリックIPv4アドレス」
  • 各プライベートIPアドレスのDNSのオプションのホスト名(「仮想クラウド・ネットワークのDNS」を参照)。
  • MACアドレス。
  • Oracleによって割り当てられ、インスタンスへのVNICのアタッチが完了したときに使用可能なVLANタグ(ベアメタル・インスタンスにのみ該当)。
  • VNICネットワーク・トラフィックの送信元/宛先チェックを有効または無効にするフラグです(「ソース/宛先チェック」を参照)。

各VNICには、割り当て可能なフレンドリ名と、Oracleが割り当てたOCID (「リソース識別子」を参照)もあります。

各インスタンスには、起動時に自動的に作成されてアタッチされる「プライマリVNIC」があります。 そのVNICは、起動時に指定したサブネットに存在します。 プライマリVNICはインスタンスから削除できません。

VNICと物理NICの関係

このセクションは、ベアメタル・インスタンスに関連しています。

ベアメタル・インスタンス上のOSは、2つの物理ネットワーク・デバイスを認識し、2つの物理NIC (0と1)として構成します。 両方がアクティブであるかどうかは、基本となるハードウェアによって異なります:

  • Oracle X5サーバー(first-generationとも呼ばれます): NIC 0だけがアクティブです。
  • Oracle X7サーバー(second-generationとも呼ばれます): NIC 0とNIC 1の両方がアクティブです。 各物理NICには25 Gbpsの帯域幅があります。

NIC 0は、プライマリVNIC IP構成(IPアドレス、DNSホスト名など)で自動的に構成されます。

「セカンダリVNIC」を第2世代のインスタンスに追加する場合は、セカンダリVNICが使用する物理NICを指定する必要があります。 また、物理NICがセカンダリVNIC IP構成を持つようにOSを構成する必要があります。 Linuxインスタンスの場合は、「Linux: セカンダリVNIC用のOSの構成」を参照してください。 Windowsのインスタンスについては、「Windows: セカンダリVNIC用のOSの構成」を参照してください。

セカンダリVNICについて

セカンダリVNICは、起動後にインスタンスに追加できます。 各セカンダリVNICは、プライマリVNICと同じVCN内のサブネット内、または同じVCNまたは異なるサブネット内にある可能性があります。 ただし、VNICはすべてインスタンスと同じ「可用性ドメイン」内にある必要があります。

セカンダリVNICを使用する理由をいくつか次に示します:

  • ベアメタル・インスタンスで独自のハイパーバイザを使用する:ベアメタル・インスタンス上の仮想マシンはそれぞれ専用のセカンダリVNICを持ち、VNIC VCN内のほかのインスタンスとサービスに直接接続します。 詳細は、「マルチVNICを使用したベア・メタル・インスタンスへのKVMのインストールと構成」を参照してください。
  • インスタンスを複数のVCN内のサブネットに接続する手順:たとえば、vcn間のトラフィックを保護するために独自のファイアウォールを設定すると、インスタンスは別のvcn内のサブネットに接続する必要があります。

セカンダリVNICの詳細は次のとおりです:

  • これらは、次のタイプのインスタンスでサポートされています:

  • インスタンスにアタッチできるVNICの数には制限があり、シェイプによって異なります。 これらの制限については、「コンピュート・シェイプ」を参照してください。
  • これらは、インスタンスの起動後にのみ追加できます。
  • それらは常にインスタンスにアタッチされ、移動できません。 セカンダリVNICを作成するプロセスは、それをインスタンスに自動的にアタッチします。 セカンダリVNICをデタッチすると、自動的にセカンダリVNICが削除されます。
  • それらは自動的にデタッチされ、インスタンスを終了すると削除されます。
  • インスタンス帯域幅は、アタッチされているVNICの数に関係なく固定されています。 インスタンス上の特定のVNICの帯域幅制限を指定することはできません。
  • 同じサブネットCIDRブロックから複数のVNICをインスタンスにアタッチすると、特にLinuxの変種を使用するインスタンスで、非対称ルーティングが導入される可能性があります。 このようなタイプの構成が必要な場合、Oracleは、複数の「プライベートIPアドレス」をVNICに割り当てるか、このトピックの後半に示すようにポリシーベースのルーティングを使用することを推奨します。

ソース/宛先チェック

デフォルトでは、すべてのVNICはネットワーク・トラフィックの送信元/宛先のチェックを実行します。 VNICは、各ネットワーク・パケットのヘッダーにリストされている送信元と宛先を調べます。 VNICが送信元または宛先でない場合、パケットは廃棄されます。

VNICがトラフィックを転送する必要がある場合(たとえば、ネットワーク・アドレス変換(NAT)を実行する必要がある場合など)は、VNICの送信元/宛先のチェックを無効にする必要があります。 手順については、「既存のVNICを更新するには」を参照してください。 一般的なシナリオについては、「プライベートIPをルート・ターゲットとして使用」を参照してください。

インスタンス・メタデータ内のVNIC情報

「インスタンス・メタデータ」には、次のURLにあるVNICに関する情報が含まれています:

http://169.254.169.254/opc/v1/vnics/

レスポンスの例を以下に示します:

[ {
  "vnicId" : "ocid1.vnic.oc1.phx.examplevq7kncmdtfr23dznohdkd2cywjcem33eg3dxa",
  "privateIp" : "10.0.3.6",
  "vlanTag" : 11,
  "macAddr" : "02:00:17:00:12:D3",
  "virtualRouterIp" : "10.0.3.1",
  "subnetCidrBlock" : "10.0.3.0/24",
  "nicIndex" : 0
}, {
  "vnicId" : "ocid1.vnic.oc1.phx.exampledfslcmdyepqc73ntv25ft3rqxsooplb4l2zg7q",
  "privateIp" : "10.0.4.3",
  "vlanTag" : 12,
  "macAddr" : "02:00:17:00:13:13",
  "virtualRouterIp" : "10.0.4.1",
  "subnetCidrBlock" : "10.0.4.0/24",
  "nicIndex" : 0
} ]

必要なIAMポリシー

Oracle Cloud Infrastructureを使用するには、管理者が作成するポリシーで、コンソールまたはSDK、CLIまたはその他のツールを使用したREST APIのどちらを使用しているかにかかわらず、必要なタイプのアクセスを付与する必要があります。 アクションを実行しようとしたときに、権限のないメッセージや権限のないメッセージを取得する場合は、管理者に付与されているアクセスのタイプと作業するコンパートメントを確認してください。

管理者向け: 「ネットワーキングのIAMポリシー」を参照してください。

リソースのモニター

Oracle Cloud Infrastructureリソースのヘルス、容量、およびパフォーマンスをモニターするには、メトリック、アラーム、および通知を使用します。 詳細は、「モニタリング概要」および「通知概要」を参照してください。

VNICからのトラフィックのモニタリングについては、「ネットワーキング・メトリック」を参照してください。

コンソールの使用

インスタンスVNICを表示するには
セカンダリVNICを作成してアタッチするには
既存のVNICを更新するには
セカンダリVNICを削除するには
VNICのタグを管理するには

APIの使用

APIおよび署名リクエストの使用については、REST APIおよび「セキュリティ資格証明」を参照してください。 SDKの詳細は、「ソフトウェア開発キットとコマンドライン・インタフェース」を参照してください。

インスタンスでVNICを管理するには、次の操作を使用します:

  • ListVnicAttachments: これを使用して、インスタンスにアタッチされたVNICをリストします。
  • GetVnicAttachment: これを使用して、VNIC VLANタグおよびその他のプロパティを取得します。
  • GetVnic: これを使用して、VNICプライベートIPアドレス、MACアドレス、オプションのパブリックIPアドレス、オプションのDNSホスト名、およびその他のプロパティを取得します。
  • AttachVnic
  • DetachVnic
  • UpdateVnic

Linux: セカンダリVNIC用のOSの構成

このセクションでは、Linuxの亜種を実行するインスタンス上のセカンダリVNICに必要なOSの構成について詳しく説明します。

このセクションの最後には、VMインスタンスまたはベアメタル・インスタンスのいずれかでセカンダリVNICを構成するために使用できるスクリプトがあります。

Linux VMインスタンス

セカンダリVNICをLinux VMインスタンスに追加すると、新しいインタフェース(イーサネット・デバイス)がインスタンスに追加され、OSによって自動的に認識されます。 ただし、DHCPはセカンダリVNICでアクティブではないため、静的IPアドレスとデフォルト・ルートでインタフェースを構成する必要があります。 ここに用意されているスクリプトがその構成を処理します。

Linuxのベア・メタル・インスタンス

セカンダリVNICをLinuxのベアメタル・インスタンスに追加すると、OSはセカンダリVNICを自動的に認識しないため、OSで構成する必要があります。 要件に応じて、次のいずれかの方法で構成できます:

Linux VMインスタンスまたはLinux用の構成スクリプト・ベア・メタル・インスタンス

次のスクリプトは、VMインスタンスとベアメタル・インスタンスの両方で動作します。 「インスタンス・メタデータ」内のセカンダリVNIC情報を調べ、それに応じてOSを構成します。 スクリプトを定期的に実行して、インスタンスのメタデータを使用してOSの構成を最新のものにすることができます。

特にVMインスタンスの場合、OSは自動的にセカンダリVNICインタフェースを認識し、スクリプトはティックIPアドレスとデフォルト・ルートを構成するだけで済みます。

特にベアメタル・インスタンスの場合、スクリプトはセカンダリVNICのインタフェースを作成し、関連する情報を構成します。 インスタンスに「2つのアクティブな物理NIC」 (NIC 0とNIC 1を持つX7/2世代目のシェイプ)がある場合、スクリプトは「VNICをインスタンスに追加しました」のときに選択した物理NICを使用するようにセカンダリVNICを構成します。 NIC 1では、セカンダリVNICにVLANタグ0が設定されている場合、NICインタフェースが使用されます。 スクリプトは、そのセカンダリVNICのインタフェースを作成しません。

VMインスタンスとベアメタル・インスタンスの両方でスクリプトがどのように機能するかに関する追加の注意事項を次に示します:

  • デフォルトのネームスペースとポリシーベースのルーティング: デフォルトでは、このスクリプトは、アプリケーションがVNICサブネット外のホストとVNICを介して通信できるように、デフォルト・ネームスペースとポリシーベース・ルーティングでセカンダリVNICを構成します。 このポリシーベースのルーティングは、パケットがセカンダリVNICのIPアドレスから供給されている場合にのみ有効です。 特定の送信元IPアドレスまたは送信元インタフェースにバインドする機能は、ほとんどのツール(ssh、ping、wgetなど)と接続を開始するライブラリに存在します。 たとえば、ssh -bオプションを使用すると、セカンダリVNICのプライベートIPアドレスにバインドできます:

    ssh -b <secondary_VNIC_IP_address> <destination_IP_address>

    セカンダリVNICインタフェースを介してインスタンス上のサービスにトラフィックが着信し、そのサービスが応答すると、応答パケットは自動的に送信元IPアドレスとしてVNICインタフェースのIPアドレスを持つことに注意してください。 その応答が同じインタフェース上に戻って正しいデフォルト・ゲートウェイを見つけるためには、ポリシーベースのルーティングが必要です。

  • 別のネームスペース: ネームスペースに精通している場合は、-nオプションを使用してスクリプトを実行して、別のネームスペースにセカンダリVNICを構成することができます。 インスタンスに、異なるVCNのサブネットにアタッチされているセカンダリVNICがあり、それらのサブネットに重複するCIDRブロックがある場合は、別のネームスペースが必要です。
  • セカンダリ・プライベートIP: インスタンス・メタデータには、インスタンスに割り当てられたセカンダリ・プライベートIPに関する情報は含まれません。 これをスクリプトOS構成の一部として含めるには、スクリプトを実行するときにコマンド・ラインでセカンダリ・プライベートIPアドレスとOCIDを指定する必要があります。
  • セカンダリVNICの削除: インスタンスからセカンダリVNICを削除の後、スクリプトを実行すると、OS構成からVNIC情報が削除されます。

重要

スクリプトは、インスタンスを再起動しても保持されない単純な構成プロセスを使用します。
スクリプトを使用する場合は、再起動するたびにスクリプトを再実行してください。

スクリプトの実行方法の基本的な例を次に示します:

  • <script_name> -c: セカンダリVNICホストIP構成の構成(追加または削除)
  • <script_name> -c -n: 同じだが別々のネームスペースを使用
  • <script_name> -d: 強制はすべてのセカンダリVNICホストIP構成を削除

詳細については、スクリプト・ヘルプを参照してください。

新しいセカンダリVNICのLinux版OSを構成するスクリプトを表示

Windows: セカンダリVNIC用のOSの構成

セカンダリVNICは、VMおよびベアメタルのインスタンス「X7/第二世代のシェイプにのみ適用されます」 (VM.Standard2.16およびBM.Standard2.52などの「名前に2が付いたシェイプ」)でサポートされています。 ベアメタルの場合、セカンダリVNICは「2番目の物理NIC上でのみ」に対応しています。

ヒント

最初の物理NICはNIC 0で、2番目の物理NICはNIC 1です。

OS内でセカンダリVNICを構成する必要があります。 構成を実行するOracle提供のPowerShellスクリプトがあります。 スクリプトを実行するときに、オプションでセカンダリVNIC OCID (「インスタンスVNICメタデータ」から取得できます)を指定できます:

.\secondary_vnic_windows_configure.ps1 "<secondary_VNIC_OCID>"

それ以外の場合、スクリプトはインスタンス上のセカンダリVNICのリストを表示し、構成するインスタンスを選択するように求めます。 これは一般的にスクリプトが行うことです:

  1. スクリプトは、ネットワーク・インタフェースにIPアドレスとデフォルト・ルートがあるかどうかを確認します。
  2. OSがセカンダリVNICを認識できるようにするには、「スクリプトは静的な設定でIPアドレスとデフォルト・ルートを上書きする必要があります(DHCPを効果的に無効にします)」を使用します。 スクリプトはあなたに選択肢を促します: 静的な設定で上書きするか、終了します。

新しいセカンダリVNIC用にWindowsを構成するPowershellスクリプトを表示

構成の全体的なプロセスは、インスタンスのタイプ(VMまたはベアメタル)、およびインスタンスに追加するセカンダリVNICの数によってわずかに異なります。

Windows VMインスタンス
Windowsベアメタル・インスタンス: 最初のセカンダリVNICを追加
Windowsベアメタル・インスタンス: セカンダリVNICを追加