ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Linuxインスタンスの2番目のインタフェースへのIPアドレスの割当て
イントロダクション
このチュートリアルでは、Oracle Linuxインスタンスのセカンダリ・ネットワーク・インタフェースにIPアドレスを割り当てる手順を順を追って説明します。ネットワーク構成を拡張する場合でも、特定のルーティング・ポリシーを設定する場合でも、2番目のインタフェースの追加と構成は重要なスキルです。
次の方法について学習します。
-
使用可能なネットワークインタフェースを特定します。
-
静的または動的IPアドレスを使用してセカンダリインタフェースを構成します。
-
再起動後の永続性のためにネットワーク構成ファイルを更新します。
-
構成を確認し、接続性を確保します。
このチュートリアルを終えるまでには、Oracle Linuxインスタンスのネットワーク機能を拡張し、複数のサブネットまたはネットワーク間でシームレスにやり取りできるようになります。
目的
このチュートリアルでは、Oracle Linuxインスタンスの2番目のネットワーク・インタフェースにIPアドレスを割り当てる方法を学習します。
-
セカンダリ・ネットワーク・インタフェースの設定に関連する構成ファイルを理解します。
-
2番目のインタフェースに静的IPアドレスを割り当てる方法を学習します。
-
新しく構成されたインタフェースの接続性と適切な機能を確認します。
前提条件
- 仮想クラウド・ネットワーク(VCN)および2つのxサブネットを作成します。
タスク1: OCIコンピュート・インスタンスの作成
このタスクでは、Oracle Cloud Infrastructure (OCI)に新しいインスタンスを作成します。
-
OCIコンソールに移動し、「コンピュート」、「インスタンス」に移動して、「インスタンスの作成」をクリックします。
-
「コンピュート・インスタンスの作成」に、次の情報を入力します。
- インスタンスの名前を入力します。この例では、
sriov-test-01
を使用します。 - 下へスクロール
- 「シェイプの変更」をクリックします。
- VM.Standard.E4を選択します。Flex。ただし、E5も使用できます。
- 下へスクロール
- 「既存の仮想クラウド・ネットワークを選択」をクリックします。
- VCNを選択します。この例では、
oke
VCNを使用しています。 - プライマリvNICの既存のサブネットを選択します。
- 下へスクロール
- 最初のVNICインタフェースのIPアドレスの「プライベートIPv4アドレス」で、「プライベートIPv4アドレスの自動割当て」を選択します。
- プライマリ・インタフェースのパブリック・サブネットを選択したため、「パブリックIPv4アドレス」で、「パブリックIPv4アドレスの自動割当て」を選択します。
- 下へスクロール
- 「公開キー・ファイル(.pub)のアップロード」をクリックして、既存の(以前に生成された)公開SSHキーおよび秘密SSHキーをアップロードします。
- 「参照」をクリックして、既存の公開キーを選択します。
- 既存の公開キーがアップロード用に選択されているかどうかを確認します。
- 「作成」をクリックします。
- インスタンスが正常にデプロイされた場合、ステータスは「実行中」になります。
- プライマリVNICが構成され、IPアドレスが自動的に割り当てられることに注意してください。
- インスタンスの名前を入力します。この例では、
タスク2: インスタンスへの2番目のVNICの追加
-
「インスタンスの詳細」ページに移動します。
- 「アタッチされたVNIC」をクリックします。
- VNICは1つのみで、この名前を
sr-iov-test-01
に変更しました(OCIが提供するデフォルト名は異なります)。 - 「VNICの作成」をクリックします。
-
「VNICの作成」に、次の情報を入力します。
- 2番目のVNICの「名前」を入力します。この例では、
secondary-vnic
を使用します。 - VCNを選択します。この例では、
oke
VCNを使用しています。 - セカンダリVNICの既存のサブネットを選択します。これは、プライマリVNICがアタッチされているサブネットとは別のサブネットです。
- 「ネットワーク・セキュリティ・グループを使用してトラフィックを制御(オプション)」を選択します。
- (オプション)「すべて許可」を選択して、すべてのイングレスおよびエグレス・トラフィックを許可するネットワーク・セキュリティ・グループを作成します。
- 下へスクロール
- 2番目のVNICインタフェースのIPアドレスの「プライベートIPv4アドレス」で、「プライベートIPv4アドレスの自動割当て」を選択します。
- 「変更の保存」をクリックします。
- 2番目のVNICの「名前」を入力します。この例では、
-
2番目のVNICが作成され、インスタンスおよび他のサブネットにアタッチされます。
ノート: OCIから2番目のVNICのIPアドレスを自動的に取得するオプションを選択している場合でも、オペレーティング・システム(Oracle Linux)はVNICのIPアドレスを構成しません。IPアドレスはOCIコンソールによって予約されていますが、まだ構成されていません。
タスク3: 2番目のVNICでのIPアドレスの構成
2番目のVNICのIPアドレスの構成は、複数の方法で実行できます。
-
方法1: Oracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI) (
oci-utils
パッケージ)を使用して、OCI-network-configコマンドを使用して、OCIコンピュート・インスタンスの2番目のインタフェースにIPアドレスを割り当てます。 -
方法2: OCI CLI (
oci-utils
パッケージ)を使用して、ocidデーモンを使用してOCIコンピュート・インスタンスの2番目のインタフェースにIPアドレスを割り当てます。 -
方法3: OCI_Multi_VNIC_Setupスクリプトを使用します。
-
方法4:新しいVNICのインタフェース構成ファイルを
/etc/sysconfig/network-scripts/
フォルダに手動で作成します。
ノート:包括的で実用的な学習エクスペリエンスを得るには、方法1または方法2から始めてください。OCIネイティブ・ツールを活用し、簡単な設定を提供するためです。わかりやすいように、方法3でスクリプトと自動化を確認し、最後に方法4で詳細な手動構成を試してください。
方法1: OCI CLI (oci-utils
パッケージ)を使用したoci-network-config
コマンドを使用した2番目のインタフェースへのIPアドレスの割当て
この方法では、sriov-test-04
という名前の新しいインスタンスを作成し、oci-network-configコマンドを使用してIPアドレスを2番目のインタフェースに割り当てます。
前提条件:新しいインスタンスをプロビジョニングし、2番目のVNICを追加しました。
-
次のコマンドを実行します。
ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens3
インタフェースに注意してください。ens3
インタフェースにIPアドレスが構成されていることに注意してください。ens5
インタフェースに注意してください。ens5
インタフェースにIPアドレスが構成されていないことに注意してください。route -n
コマンドを実行して、すべてのインタフェースのすべてのルートおよびデフォルト・ゲートウェイを取得します。ens3
インタフェースで使用可能なゲートウェイのみがあることに注意してください。
-
次のコマンドは、
oci-utils
コマンドがすぐに使用可能かどうかをテストするために使用されました。sudo oci-compartmentid
コマンドを実行して、インスタンスが属するコンパートメントのOCIDを取得します。sudo oci-instanceid
コマンドを実行して、インスタンスのOCIDを取得します。
ここでは、
oci-utils
コマンドが即時利用可能な機能であることが証明されています。 -
次のコマンドを実行します。
sudo oci-network-config show
コマンドを実行して、インスタンスからすべてのネットワーク構成を取得します。- エラーに注意してください: 情報を表示できません: APIセッションの取得に失敗しました。インスタンスのVNICに関する情報は、OCIレベルではなくオペレーティング・システム・レベルで提供されません。
ens3
インタフェースのオペレーティング・システム・レベルの情報に注意してください。ens5
インタフェースのオペレーティング・システム・レベルの情報に注意してください。- インタフェース
ens5
のADD
フラグに注意してください。
ADD
で現在フラグが設定されているens5
インタフェースを構成するには、sudo oci-network-config configure
コマンドを実行します。Cannot show information: Failed to get API sessionという
oci-network-config show
コマンドを実行すると同じエラーが発生するため、これは不可能です。質問:このエラーが表示されるのはなぜですか。
解決策: VCNは、インスタンスが所有するオブジェクトではありません。つまり、適切な認証がないと、インスタンスはVCN情報に直接アクセスできません。インスタンスがAPIからVCNの詳細をフェッチできるようにするには、インスタンスを含む動的グループを作成し、必要な権限を付与するポリシーを割り当てる必要があります。
-
OCIコンピュート・インスタンスがAPIを介してVCNの詳細をフェッチできるようにするには、次のステップを実行します:
-
動的グループの作成:この動的グループには、APIへのアクセスを必要とするインスタンスが含まれます。グループは、インスタンスOCIDやコンパートメントなどの属性に基づいてルールを使用して定義します。
-
ポリシーによる権限の割当て: VCN関連リソースの読取りまたは管理を行う権限を動的グループに付与するOracle Cloud Infrastructure Identity and Access Management (OCI IAM)ポリシーを作成する必要があります。たとえば次のようにします。
allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
-
認証にInstance Principalsを使用:動的グループ内のインスタンスは、アイデンティティを使用して直接認証されるため、アプリケーションに資格証明を埋め込むことなく、セキュアなAPIアクセスが可能になります。この方法では、堅牢なアクセス制御を維持しながら、セキュリティ管理を簡素化します。
-
-
OCIコンソールに移動します。
- ハンバーガー・メニュー(≡)をクリックし、「コンピュート」、「インスタンス」に移動して、次のコマンド
sudo oci-network-config show
およびsudo oci-network-config configure
を実行するコンピュート・インスタンスを選択します。 - 「表示」をクリックして、インスタンスのOCID値を表示します。
- 「コピー」をクリックして、インスタンスのOCID値をコピーします。
- ハンバーガー・メニュー(≡)をクリックし、「アイデンティティ」、「ドメイン」、「デフォルト・ドメイン」にナビゲートして、「動的グループ」をクリックします。
- 「動的グループの作成」をクリックします
- 動的グループの「名前」を入力します。この例では、
sriov-test-04
を使用します。 - 「ルール・ビルダー」をクリックします。
- 「インスタンスとの照合」で「インスタンスOCID」を選択します。
- 「値」にインスタンスOCIDの値を入力します。
- 「ルールの追加」をクリックします。
- 新しいルールがグループに追加されることに注意してください。
- 「作成」をクリックします。
- ハンバーガー・メニュー(≡)をクリックし、「コンピュート」、「インスタンス」に移動して、次のコマンド
-
インスタンスが属するグループがあるので、インスタンスを含むコンパートメント内にポリシーを作成する必要があります。このポリシーにより、グループ内のインスタンスは、サブネットなどのVCNオブジェクトに対して操作を実行できます。
- ハンバーガー・メニュー(≡)をクリックし、「アイデンティティ」に移動して「コンパートメント」をクリックします。
- ルート・コンパートメントをクリックします。この例では、
oraseemeaocids4
です。
- 現在は子コンパートメント内にあることに注意してください。
- 次の子コンパートメントをクリックします。この例では、
NETWORK
です。
- 次の子コンパートメントにいます。
- 次の子コンパートメントをクリックします。この例では、
Iwan
です。
- 適切なコンパートメントが選択されていることを確認します。
- 「ポリシー」をクリックします。
- ポリシーの作成をクリックします。
-
「ポリシーの作成」に、次の情報を入力します。
- ポリシーの「名前」を入力します。この例では、
allow-sriov-test-04-to-vcn
を使用します。 - ポリシーの「説明」を入力します。この例では、
allow-sriov-test-04-to-vcn
を使用します。 - 「手動エディタの表示」を選択します。
allow dynamic-group sriov-test-04 to manage all-resources in compartment Iwan
ポリシーを入力します。- 「作成」をクリックします。
- ポリシーの「名前」を入力します。この例では、
-
新しく作成したポリシー内の新しいポリシー・ステートメントに注意してください。
-
これで、インスタンスによるVCNへのOCI CLIを介したAPIコールの実行が可能になりました。
ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens5
インタフェースにIPアドレスが構成されていないことに注意してください。sudo oci-network-config show
コマンドを実行して、OCIレベルのインスタンスからすべてのネットワーク構成を取得します。エラーがなくなりました。ens5
インタフェース上のOCIレベルの情報と、インタフェースens5
のADD
フラグに注意してください。- オペレーティング・システム・レベルの情報は、
ens3
およびens5
インタフェースに記載されています。
-
sudo oci-network-config configure
コマンドを実行して2番目のVNICのIPアドレスを構成する前に、/etc/iproute2
という名前の新しいディレクトリと/etc/iproute2/rt_tables
という名前の新しいファイルを作成する必要があります。これは、この新しいインタフェースのルーティングおよびデフォルトゲートウェイをシステムが正しく構成できるようにするために必要です。/etc/iproute2/rt_tables
ファイルは、Linuxで複数のルーティング表を定義および管理し、ポリシーベースのルーティングを有効にするために使用されます。人間が読める名前をルーティングテーブル番号にマップし、さまざまなゲートウェイ、インタフェース、またはISPを通じて特定のトラフィックをルーティングするなどの高度な設定を可能にします。sudo mkdir -p /etc/iproute2
コマンドを実行して/etc/iproute2
という名前のディレクトリを作成し、sudo touch /etc/iproute2/rt_tables
コマンドを実行してrt_tables
という名前のファイルを作成します。 -
次のコマンドを実行します。
sudo oci-network-config configure
コマンドを実行して、2番目のVNICのIPアドレスを構成します。- 「構成済」メッセージを確認します。
sudo oci-network-config show
コマンドを実行して、OCIレベルのインスタンスからすべてのネットワーク構成を取得します。ens5
インタフェースのOCIレベル情報およびインタフェースens5
のADD
フラグがなくなりました。ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。- これで、
ens5
インタフェースにIPアドレスが構成されました。 route -n
コマンドを実行して、すべてのインタフェースのすべてのルートおよびデフォルト・ゲートウェイを取得します。- ゲートウェイが
ens5
インタフェースで使用できるようになりました。
more /etc/iproute2/rt_tables
コマンドを実行して、新しいエントリが作成されたかどうかを確認します。11 ort
エントリを書き留めます。ip route show table 11
コマンドを実行して、このマッピングのルーティング表を確認します。- インタフェース
ens5
には、インスタンス上の新しい2番目のVNICのデフォルト・ルートがあることに注意してください。
方法2: OCI CLI (oci-utils
パッケージ)を使用して、ocid daemon
を使用してIPアドレスを2番目のインタフェースに割り当てます
この方法では、sriov-test-01
という名前の新しいインスタンスを作成し、ocidデーモンを使用して2番目のインタフェースにIPアドレスを割り当てます。
前提条件:新しいインスタンスをプロビジョニングし、2番目のVNICを追加しました。
-
次のコマンドを実行します。
ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens5
インタフェースにIPアドレスが構成されていないことに注意してください。
route -n
コマンドを実行して、すべてのインタフェースのすべてのルートおよびデフォルト・ゲートウェイを取得します。ens3
インタフェースで使用可能なゲートウェイのみがあることに注意してください。
- フィルタ処理された
ip -f inet -o addr
コマンドを実行して、すべてのインタフェースで構成されたすべてのIPアドレスを表示します。 - 構成済のインタフェースのみがあり、IPアドレスは
ens3
インタフェースです。
systemctl list-unit-files ocid.service
コマンドを実行して、ocidデーモンが有効かどうかを確認します。- ocidデーモンが無効になっていることに注意してください。
sudo systemctl start ocid
コマンドを実行して、ocidデーモンを起動します。sudo systemctl status ocid
コマンドを実行して、ocidデーモンのステータスを確認します。- ocidデーモンがアクティブで稼働していることに注意してください。
- フィルタ処理された
ip -f inet -o addr
コマンドを実行して、すべてのインタフェースで構成されたすべてのIPアドレスを表示します。 ens5
インタフェースが構成され、IPアドレスがあることに注意してください。
ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens5
インタフェースにIPアドレスが構成されていることに注意してください。
route -n
コマンドを実行して、すべてのインタフェースのすべてのルートおよびデフォルト・ゲートウェイを取得します。- ゲートウェイが
ens5
インタフェースで使用できるようになりました。
-
リブート後にOCIDサービスが自動的に開始されるようにするには、
sudo systemctl enable ocid
コマンドを実行します。 -
方法1と同様に、
/etc/iproute2
という名前のディレクトリと/etc/iproute2/rt_tables
という名前のファイルを作成する必要があります。これは、この新しいインタフェースのルーティングおよびデフォルトゲートウェイをシステムが正しく構成できるようにするために必要です。/etc/iproute2/rt_tables
ファイルは、Linuxで複数のルーティング表を定義および管理し、ポリシーベースのルーティングを有効にするために使用されます。人間が読める名前をルーティングテーブル番号にマップし、さまざまなゲートウェイ、インタフェース、またはISPを通じて特定のトラフィックをルーティングするなどの高度な設定を可能にします。sudo mkdir -p /etc/iproute2
コマンドを実行して/etc/iproute2
という名前のディレクトリを作成し、sudo touch /etc/iproute2/rt_tables
コマンドを実行してrt_tables
という名前のファイルを作成します。 -
sudo reboot
コマンドを実行します。more /etc/iproute2/rt_tables
コマンドを実行して、新しいエントリが作成されたかどうかを確認します。11 ort3
エントリを書き留めます。ip route show table 11
コマンドを実行して、このマッピングのルーティング表を確認します。- インタフェース
ens5
には、インスタンス上の新しい2番目のVNICのデフォルト・ルートがあることに注意してください。
方法3: OCI_Multi_VNIC_Setup
スクリプトの使用
この方法では、sriov-test-02
という名前の新しいインスタンスを作成し、OCI_Multi_VNIC_Setupスクリプトを使用して2番目のVNICのIPアドレスを構成します。
前提条件:新しいインスタンスをプロビジョニングし、2番目のVNICを追加しました。
-
次のコマンドを実行します。
ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens5
インタフェースにIPアドレスが構成されていないことに注意してください。route -n
コマンドを実行して、すべてのインタフェースのすべてのルートおよびデフォルト・ゲートウェイを取得します。ens3
インタフェースで使用可能なゲートウェイのみがあることに注意してください。
-
次のcurlコマンドを使用してスクリプトをダウンロードします。
curl -o OCI_Multi_VNIC_Setup.sh https://raw.githubusercontent.com/Olygo/OCI_Multi_VNIC_Setup/refs/heads/main/OCI_Multi_VNIC_Setup.sh
-
ls -l
コマンドを実行して、すべてのファイルをリストします。 -
CI_Multi_VNIC_Setup.sh
スクリプトが正常にダウンロードされることに注意してください。 -
chmod +x ./OCI_Multi_VNIC_Setup.sh
コマンドを実行して、ダウンロードしたスクリプトを実行可能にします。 -
sudo ./OCI_Multi_VNIC_Setup.sh
コマンドを実行して、スクリプトを実行します。
-
スクリプトの実行時に入力として使用する必要がある情報をOCIコンソールから収集します。
- 「インスタンスの詳細」ページで、プライマリ・インタフェースのプライベートIPv4アドレスを書き留めます。
- 下へスクロール
- 「アタッチされたVNIC」をクリックします。
- 2番目のVNICをクリックします。
- 2番目のVNICのMACアドレスを書き留めます。
- 2番目のVNICのIPアドレスを書き留めます。
ノート: IPアドレスはインスタンスのオペレーティング・システムで構成されていませんが、IPアドレスはOCIコンソール管理によってすでに予約されています。
-
スクリプトでこの情報が必要になるため、IPアドレスおよびサブネット情報を使用して、サブネットのデフォルト・ゲートウェイを決定します。
ノート: OCIコンソールにはデフォルト・ゲートウェイの詳細は提供されませんが、通常、サブネット内で最初に使用可能なIPアドレスです。
次の情報があります。
プライマリ・インタフェース(ens3) セカンダリ・インタフェース(ens5) IPv4サブネット: 10.0.0.0/29 10.0.3.0/27 IPv4アドレス: 10.0.0.4 10.0.3.5/27 IPv4ゲートウェイ: 10.0.0.1 10.0.3.1 MACアドレス: スクリプトには不要 02:00:17:00:61:01 -
次の情報を入力します
- プライマリVNICインタフェース名:
ens3
と入力します。 - プライマリVNIC IP:
10.0.0.4
と入力します。 - プライマリVNICゲートウェイIP:
10.0.0.1
と入力します。 - セカンダリVNICインタフェース名:
ens5
と入力します。 - セカンダリVNIC IPアドレス(CIDR表記):完全なCIDR表記で
10.0.3.5/27
と入力します。 - セカンダリVNIC MACアドレス:
02:00:17:00:61:01
と入力します。 - このインタフェースは別のサブネットの一部になるため、ここに
y
と入力します。 - セカンダリVNICゲートウェイ:
10.0.3.1
と入力します。
- 情報を確認し、
y
と入力して確認します。 y
を入力して、設定を再度確認します。- スクリプトによってインタフェース構成が開始され、この実行中にステータス更新が提供されます。
- プライマリVNICインタフェース名:
-
ステータス・メッセージの完全な出力を次に示します。
Summary of your configuration: - The primary Vnic name is: ens3 - The primary Vnic IP is: 10.0.0.4 - The primary Vnic GW is: 10.0.0.1 - The secondary Vnic name is: ens5 - The secondary Vnic IP with CIDR is: 10.0.3.5/27 - The secondary Vnic MAC is: 02:00:17:00:61:01 - The secondary Vnic GW is: 10.0.3.1 Do you confirm these settings ? (y)es/(n)o/(q)uit: y User settings confirmed... Summary of your configuration: - The primary Vnic name is: ens3 - The primary Vnic IP is: 10.0.0.4 - The primary Vnic GW is: 10.0.0.1 - The secondary Vnic name is: ens5 - The secondary Vnic IP with CIDR is: 10.0.3.5/27 - The secondary Vnic MAC is: 02:00:17:00:61:01 - The secondary Vnic GW is: 10.0.3.1 Do you confirm these settings ? (y)es/(n)o/(q)uit: y User settings confirmed... *** Checking if NetworkManager CLI (nmcli) is installed *** nmcli is already installed. *** Configuring NetworkManager *** NetworkManager is already enabled. NetworkManager is already running. NetworkManager is configured and running. *** Check and install iproute if not installed *** Package 'iproute' is already installed. Proceeding. *** Ensure /etc/iproute2 directory exists *** Directory '/etc/iproute2' does not exist. Creating it... Directory '/etc/iproute2' created successfully. *** Ensure /etc/iproute2/rt_tables file exists *** File '/etc/iproute2/rt_tables' does not exist. Creating it... File '/etc/iproute2/rt_tables' created successfully with a default header. *** Starting ens5 configuration and persistence setup *** *** Configure secondary VNIC with NetworkManager *** Connection 'ens5' (582dd2d7-3a3e-45b9-8289-ce3d474f4b74) successfully added. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) *** Enable IP forwarding and configure reverse path filtering *** # Enable IP forwarding net.ipv4.ip_forward=1 # Configure reverse path filtering net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.default.rp_filter=2 net.ipv4.conf.ens3.rp_filter=2 net.ipv4.conf.ens5.rp_filter=2 *** Apply sysctl settings immediately *** kernel.unknown_nmi_panic = 1 net.ipv4.ip_forward = 1 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 net.ipv4.conf.ens3.rp_filter = 2 net.ipv4.conf.ens5.rp_filter = 2 *** Adding custom routing tables *** 100 vnic_1 200 vnic_2 *** Adding IP rules and routes *** *** Creating policy routing persistence script *** *** Creating systemd service for policy routing *** Created symlink /etc/systemd/system/multi-user.target.wants/policy-routing.service → /etc/systemd/system/policy-routing.service. *** Testing connectivity *** PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data. 64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=0.059 ms 64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=0.037 ms 64 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=0.031 ms 64 bytes from 10.0.0.4: icmp_seq=4 ttl=64 time=0.027 ms --- 10.0.0.4 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3073ms rtt min/avg/max/mdev = 0.027/0.038/0.059/0.013 ms PING 10.0.3.5 (10.0.3.5) 56(84) bytes of data. 64 bytes from 10.0.3.5: icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from 10.0.3.5: icmp_seq=2 ttl=64 time=0.022 ms 64 bytes from 10.0.3.5: icmp_seq=3 ttl=64 time=0.023 ms 64 bytes from 10.0.3.5: icmp_seq=4 ttl=64 time=0.035 ms --- 10.0.3.5 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3069ms rtt min/avg/max/mdev = 0.022/0.026/0.035/0.007 ms PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.098 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.097 ms 64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.067 ms 64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.060 ms --- 10.0.0.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3069ms rtt min/avg/max/mdev = 0.060/0.080/0.098/0.019 ms *** Network configuration completed *** IP rules: 0: from all lookup local 32764: from 10.0.3.5 lookup vnic_2 32765: from 10.0.0.4 lookup vnic_1 32766: from all lookup main 32767: from all lookup default $ nmcli device show ens5 GENERAL.DEVICE: ens5 GENERAL.TYPE: ethernet GENERAL.HWADDR: 02:00:17:00:61:01 GENERAL.MTU: 9000 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens5 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 10.0.3.5/27 IP4.GATEWAY: 10.0.3.1 IP4.ROUTE[1]: dst = 10.0.3.0/27, nh = 0.0.0.0, mt = 101 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.0.3.1, mt = 101 IP4.ROUTE[3]: dst = 0.0.0.0/0, nh = 10.0.3.1, mt = 0, table=200 IP6.ADDRESS[1]: fe80::70ba:d30f:3dac:6462/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024 *** Configuration complete! ens5 is set up and all settings are persistent *** [opc@sriov-test-02 ~]$
ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens5
インタフェースにIPアドレスが構成されていることに注意してください。route -n
コマンドを実行して、すべてのインタフェースのすべてのルートおよびデフォルト・ゲートウェイを取得します。ゲートウェイがens5
インタフェースで使用できるようになりました。
ノート:
- IPアドレスを構成し、ルーティングが正しく機能することを確認することは、2つの異なることです。
- スクリプトは、ルーティング部品も構成します。
- スクリプトの特定の出力に注意してください。
-
スクリプトの次の部分では、
/etc/iproute2 directory
という名前のディレクトリとrt_tables
という名前のファイルが作成されます。*** Ensure /etc/iproute2 directory exists *** Directory '/etc/iproute2' does not exist. Creating it... Directory '/etc/iproute2' created successfully. *** Ensure /etc/iproute2/rt_tables file exists *** File '/etc/iproute2/rt_tables' does not exist. Creating it... File '/etc/iproute2/rt_tables' created successfully with a default header.
-
スクリプトの次の部分は、必要なエントリを
rt_tables
ファイルに追加します。*** Adding custom routing tables *** 100 vnic_1 200 vnic_2
-
スクリプトの次の部分では、インスタンスでのポリシー・ベースのルーティングを許可するIPルーティング・ルールが追加され、複数のVNICを持つインスタンスがある場合に必要なポリシー・ベースのルーティングのサービスも有効化されます。
*** Adding IP rules and routes *** *** Creating policy routing persistence script *** *** Creating systemd service for policy routing *** Created symlink /etc/systemd/system/multi-user.target.wants/policy-routing.service → /etc/systemd/system/policy-routing.service.
-
次のコマンドを実行します。
more /etc/iproute2/rt_tables
コマンドを実行して、新しいエントリが作成されたかどうかを確認します。100 vnic_1
および200 vnic_2
エントリに注意してください。ip route show table 100
コマンドを実行して、このマッピングのルーティング表を確認し、インタフェースens3
のデフォルト・ルートがインスタンス上のプライマリVNICであることを確認します。ip route show table 200
コマンドを実行して、このマッピングのルーティング表を確認し、インタフェースens5
にインスタンス上の新しい2番目のVNICのデフォルト・ルートがあることを確認します。
方法4: インタフェース構成ファイルの手動作成
sriov-test-03
という名前の新しいインスタンスを作成し、/etc/sysconfig/network-scripts/
ディレクトリの新しいVNICの定義によって2番目のVNICのIPアドレスを構成します。
ノート:この方法では、メソッド3のスクリプトによって自動的に実行されたほぼすべてのステップを構成します。
前提条件:新しいインスタンスをプロビジョニングし、2番目のVNICを追加しました。
-
次のコマンドを実行します
ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens5
インタフェースにIPアドレスが構成されていないことに注意してください。route -n
コマンドを実行して、すべてのインタフェースのすべてのルートおよびデフォルト・ゲートウェイを取得します。ens3
インタフェースで使用可能なゲートウェイのみがあることに注意してください。
-
「インスタンス」、「アタッチされたVNICS」にナビゲートし、2番目のVNICを選択して2番目のVNICのIPアドレスを取得します。IPアドレスを書き留めます。
-
cd /etc/sysconfig/network-scripts/
コマンドを使用して/network-scripts
フォルダに移動し、sudo nano ifcfg-ens5
コマンドを使用してifcfg-ens5
という名前の同じフォルダに新しいファイルを作成します。 -
次のパラメータを使用して
ens5
インタフェースを構成します。NAME="ens5" DEVICE="ens5" IPADDR=10.0.3.19 NETMASK=255.255.255.224 GATEWAY=10.0.3.1 ONBOOT=yes
- IPアドレスは、OCIコンソールから取得したものと同じです。
- サブネットは、このインタフェースが接続されているVCN内のサブネットから導出されます。
- ゲートウェイIPアドレスは、サブネット内の最初のIPアドレスです。
-
ifcfg-ens5
という名前の構成ファイルをナノ・エディタで保存します。ls -l
コマンドを使用して、/etc/sysconfig/network-scripts/
ディレクトリのファイルをリストします。ens3
のインタフェース構成ファイルがあることに注意してください。ens5
のインタフェース構成ファイルがあることに注意してください。
more ifcfg-ens5
コマンドを使用して、ifcfg-ens5
ファイルの内容を確認します。- パラメータがすべて正しく構成されていることを確認します。
ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens5
インタフェースにはまだIPアドレスが構成されていないことに注意してください。
-
sudo reboot
コマンドを使用してインスタンスを再起動します。ip a
コマンドを実行して、すべてのインタフェースからIPアドレスを取得します。ens5
インタフェースにIPアドレスが構成されていることに注意してください。route -n
コマンドを実行して、すべてのインタフェースのすべてのルートおよびデフォルト・ゲートウェイを取得します。ゲートウェイがens5
インタフェースで使用できるようになりました。
ノート: IPアドレスを構成し、ルーティングが正しく機能することを確認する2つの点が異なります。
-
ルーティングの設定
/etc/iproute2/rt_tables
ファイルは、Linuxで複数のルーティング表を定義および管理し、ポリシーベースのルーティングを有効にするために使用されます。人間が読める名前をルーティングテーブル番号にマップし、さまざまなゲートウェイ、インタフェース、またはISPを通じて特定のトラフィックをルーティングするなどの高度な設定を可能にします。sudo mkdir -p /etc/iproute2
コマンドを実行して/etc/iproute2
という名前のディレクトリを作成し、sudo nano /etc/iproute2/rt_tables
コマンドを実行してrt_tables
という名前のファイルを作成します。 -
rt_tables
ファイルで次のパラメータを構成します。100 vnic_1 200 vnic_2
-
sudo nano /usr/local/bin/setup_policy_routing.sh
コマンドを使用して、ポリシー・ルーティング永続性スクリプトを作成します。#!/bin/bash # Reapply IP rules ip rule add from 10.0.0.3 table vnic_1 ip rule add from 10.0.3.19 table vnic_2 # Reapply routing rules ip route add default via 10.0.0.1 dev ens3 table vnic_1 ip route add default via 10.0.3.1 dev ens5 table vnic_2
-
sudo chmod +x /usr/local/bin/setup_policy_routing.sh
コマンドを実行して、ポリシー・ルーティング永続性スクリプトを実行可能にします。 -
nano /etc/systemd/system/policy-routing.service
コマンドを使用して、ポリシー・ルーティング・スクリプトのsystemdサービスを作成します。このコマンドは、複数のVNICを持つインスタンスが1つある場合に必要です。 -
policy-routing.service
ファイルで次のパラメータを構成します。[Unit] Description=Setup Policy Routing for Multiple VNICs After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/setup_policy_routing.sh RemainAfterExit=true [Install] WantedBy=multi-user.target
-
sudo chmod +x /etc/systemd/system/policy-routing.service
コマンドを実行して、ポリシー・ベースのルーティング実行可能なサービス・ファイルを作成します。 -
sudo systemctl start policy-routing.service
コマンドを実行して、ポリシー・ベースのルーティングのサービスを開始します。 -
sudo systemctl status policy-routing
コマンドを実行して、ポリシー・ベースのルーティングのサービスがロードされ、アクティブであることを確認します。[opc@sriov-test-03 ~]$ sudo systemctl status policy-routing ● policy-routing.service - Setup Policy Routing for Multiple VNICs Loaded: loaded (/etc/systemd/system/policy-routing.service; enabled; vendor preset: disabled) Active: active (exited) since Wed 2024-12-11 09:07:16 GMT; 4 weeks 1 days ago Process: 2415 ExecStart=/usr/local/bin/setup_policy_routing.sh (code=exited, status=0/SUCCESS) Main PID: 2415 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 99891) Memory: 0B CGroup: /system.slice/policy-routing.service Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. [opc@sriov-test-03 ~]$
-
sudo systemctl enable policy-routing.service
コマンドを実行して、インスタンスが(再)起動しているときにポリシー・ベースのルーティングのサービスが開始されるようにします。 -
sudo reboot
コマンドを使用してインスタンスを再起動します。 -
リブート後、次のコマンドを実行します。
more /etc/iproute2/rt_tables
コマンドを実行して、新しいエントリが作成されたかどうかを確認します。- 手動で構成した
100 vnic_1
および200 vnic_2
エントリに注意してください。 ip route show table 100
コマンドを実行して、このマッピングのルーティング表を確認し、インタフェースens3
のデフォルト・ルートがインスタンス上のプライマリVNICであることを確認します。ip route show table 200
コマンドを実行して、このマッピングのルーティング表を確認し、インタフェースens5
にインスタンス上の新しい2番目のVNICのデフォルト・ルートがあることを確認します。
次のステップ
OCI Linuxインスタンスで2番目のインタフェースを構成するための適切な方法を選択する方法は、要件、技術的な専門知識および必要な制御レベルによって異なります。簡単で効率的な設定をお探しの場合は、oci-utils
パッケージおよびOracleネイティブ・ツールを使用するメソッド1およびメソッド2を強くお薦めします。これらの方法は、手動構成や外部スクリプトに飛び込むことなく、OCIの組込み機能を活用したいユーザーに最適です。
また、自動化とスケーラビリティが重要な方法3では、OCI_Multi_VNIC_Setup
スクリプトを使用して柔軟なソリューションを提供します。これは、異なるインスタンス間で複数のインタフェースを管理する場合に特に有用であり、構成における時間の節約と一貫性を提供します。
一方、手動構成アプローチである方法4は、最高レベルのカスタマイズを提供します。この方法は、高度なユーザーまたは自動化ツールが使用できない、または推奨されない特定の環境に最適です。また、Oracle Linuxインスタンスでのネットワーキングの内部動作を理解するための優れた方法としても機能します。
これらの方法を理解することで、基本的な設定から複雑なマルチクラウド・アーキテクチャまで、さまざまなシナリオでセカンダリ・インタフェースを柔軟に構成できます。適切なアプローチにより、OCIワークロードに合せた信頼性と効率的なネットワーク構成を確保できます。
承認
- 作成者 - Iwan Hoogendoorn (OCIネットワーク・スペシャリスト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Assign an IP Address to a Second Interface on an Oracle Linux Instance
G25218-01
January 2025