附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
將 IP 位址指定給 Oracle Linux 執行處理上的第二個介面
簡介
本教學課程提供有關如何將 IP 位址指定給 Oracle Linux 執行處理上次要網路介面的逐步指示。無論是擴充網路組態還是設定特定的路由原則,新增和設定第二個介面都是一項重要技能。
您將瞭解如何:
-
識別可用的網路介面。
-
請使用靜態或動態 IP 位址設定次要介面。
-
更新網路組態檔以在重新啟動後持續保留。
-
請檢查組態並確定連線。
本教學課程結束後,您將能夠擴充 Oracle Linux 執行處理的網路功能,使其能夠跨多個子網路或網路順暢地進行互動。
目標
在本教學課程中,我們將學習如何將 IP 位址指定給 Oracle Linux 執行處理的第二個網路介面。
-
瞭解設定次要網路介面的相關配置檔案。
-
瞭解如何將靜態 IP 位址指定給第二個介面。
-
驗證新設定介面的連線與適當功能。
必要條件
- 建立虛擬雲端網路 (VCN) 和 2 個子網路。
作業 1:建立 OCI Compute 執行處理
在這項任務中,我們將在 Oracle Cloud Infrastructure (OCI) 中建立新的執行處理。
-
移至 OCI 主控台,瀏覽至運算、執行處理,然後按一下建立執行處理。
-
在建立運算執行處理中,輸入下列資訊。
- 輸入執行處理的名稱。在此範例中,我們將使用
sriov-test-01
。 - 向下捲動。
- 按一下變更資源配置。
- 選取 VM.Standard.E4。彈性,但您也可以使用 E5。
- 向下捲動。
- 按一下選取現有的虛擬雲端網路。
- 選取 VCN。在此範例中,我們使用
oke
VCN。 - 選取主要 vNIC 的現有子網路。
- 向下捲動。
- 對於第一個 VNIC 介面 IP 位址,在專用 IPv4 位址中,選取自動指派專用 IPv4 位址。
- 選取主要介面的公用子網路時,請在公用 IPv4 位址中選取自動指定公用 IPv4 位址。
- 向下捲動。
- 按一下上傳公開金鑰檔案 (.pub) 以上傳現有 (先前產生的) 公用金鑰和私密 SSH 金鑰。
- 按一下瀏覽以選取現有的公用金鑰。
- 檢查是否已選取要上傳現有的公開金鑰。
- 按一下建立。
- 如果已順利建置執行處理,則狀態會顯示執行中。
- 請注意,主要 VNIC 已設定,而且會自動指派 IP 位址。
- 輸入執行處理的名稱。在此範例中,我們將使用
作業 2:新增第二個 VNIC 至執行處理
-
前往執行處理詳細資訊頁面。
- 按一下連附的 VNIC 。
- 請注意,只有一個 VNIC,我們會將此名稱重新命名為
sr-iov-test-01
(OCI 提供的預設名稱不同)。 - 按一下建立 VNIC 。
-
在建立 VNIC 中,輸入下列資訊。
- 輸入第二個 VNIC 的名稱。在此範例中,我們將使用
secondary-vnic
。 - Select the VCN.在此範例中,我們使用
oke
VCN。 - 選取次要 VNIC 的現有子網路。此子網路與主要 VNIC 所連附的子網路不同。
- 選取使用網路安全群組控制流量 (選擇性) 。
- ( 選擇性 ) 選取全部允許以建立允許所有傳入和傳出流量的網路安全群組。
- 向下捲動。
- 對於第二個 VNIC 介面 IP 位址,在專用 IPv4 位址中,選取自動指派專用 IPv4 位址。
- 按一下儲存變更。
- 輸入第二個 VNIC 的名稱。在此範例中,我們將使用
-
請注意,第二個 VNIC 現在已建立並連附至執行處理和其他子網路。
注意:即使我們已選擇自動從 OCI 取得第二個 VNIC 的 IP 位址,作業系統 (Oracle Linux) 也不會在 VNIC 上設定 IP 位址。IP 位址是由 OCI 主控台所保留,但尚未設定。
作業 3:在第二個 VNIC 上設定 IP 位址
第二個 VNIC 上的 IP 位址配置可以使用多種方法完成。
-
方法 1:使用 Oracle Cloud Infrastructure 命令行介面 (OCI CLI) (
oci-utils
套裝程式),使用 OCI-network-config 命令,將 IP 位址指定給 OCI Compute 執行處理的第二個介面。 -
方法 2:使用 OCI CLI (
oci-utils
套裝程式) 使用 ocid 協助程式,將 IP 位址指派給 OCI Compute 執行處理的第二個介面。 -
方法 3:使用 OCI_Multi_VNIC_Setup 程序檔。
-
方法 4:手動為
/etc/sysconfig/network-scripts/
資料夾中的新 VNIC 建立介面組態檔。
注意:為獲得全面且實用的學習體驗,請從方法 1 或方法 2 開始,因為這些方法運用 OCI 原生工具並提供直接的設定。熟悉之後,請探索指令碼和自動化的方法 3 ,最後嘗試使用方法 4 進行進階手動組態設定。
方法 1:使用 OCI CLI (oci-utils
套裝程式) 使用 oci-network-config
命令將 IP 位址指派給第二個介面
在這個方法中,建立一個名為 sriov-test-04
的新實例,然後使用 oci-network-config 指令,將 IP 位址指派給第二個介面。
先決條件: 已佈建新的執行處理並新增第二個 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
命令。不可能發生此情況,因為當我們執行無法顯示資訊:無法取得 API 階段作業的
oci-network-config show
命令時,將會發生相同的錯誤。問題:為什麼我們收到此錯誤?
解決方案:VCN 不是執行處理擁有的物件,這表示在沒有適當認證的情況下,執行處理無法直接存取 VCN 資訊。若要讓執行處理能夠從 API 擷取 VCN 詳細資訊,您必須建立包含此執行處理的動態群組,並指定授予必要權限的原則。
- 執行
-
若要讓 OCI Compute 執行處理能夠透過 API 擷取 VCN 詳細資訊,請依照下列步驟進行:
-
建立動態群組:此動態群組包括需要存取 API 的執行處理。您可以使用以執行處理 OCID 或區間等屬性為基礎的規則來定義群組。
-
指定權限給原則: 您需要建立一個 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 原則,此原則可授予動態群組讀取或管理 VCN 相關資源的權限。舉例而言:
allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
-
使用執行處理主體進行認證:動態群組中的執行處理會直接使用其識別進行認證,允許不將證明資料內嵌在應用程式中,即可進行安全的 API 存取。此方法可簡化安全性管理,同時維持健全的存取控制。
-
-
前往 OCI 主控台。
- 按一下漢堡功能表 (簡稱),瀏覽至運算、執行處理,然後選取要執行下列命令的運算執行處理
sudo oci-network-config show
和sudo oci-network-config configure
。 - 按一下顯示即可顯示執行處理 OCID 值。
- 按一下複製即可複製執行處理 OCID 值。
- 按一下漢堡功能表 (1),瀏覽至識別、網域、預設網域,然後按一下動態群組。
- 按一下建立動態群組。
- 輸入動態群組的名稱。在此範例中,我們將使用
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
。 - 按一下建立。
- 輸入規定的名稱。在此範例中,我們將使用
-
請記下新建立之原則內的新原則敘述句。
-
現在,我們允許執行處理透過 OCI CLI 對 VCN 執行 API 呼叫。
- 執行
ip a
指令以從所有介面擷取 IP 位址。 - 請注意,
ens5
介面未配置 IP 位址。 - 執行
sudo oci-network-config show
命令,從 OCI 層次的執行處理擷取所有網路組態。錯誤現在已消失。 - 請注意
ens5
介面上的 OCI 層次資訊,以及ens5
介面的ADD
旗標。 - 請注意
ens3
和ens5
介面上的「作業系統」層次資訊。
- 執行
-
執行
sudo oci-network-config configure
命令來設定第二個 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
命令以設定第二個 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
是執行處理上新的第二個 VNIC。
- 執行
方法 2:使用 OCI CLI (oci-utils
套裝程式) 使用 ocid daemon
將 IP 位址指派給第二個介面
在這個方法中,建立一個名為 sriov-test-01
的新執行處理,然後使用 ocid 常駐程式,將 IP 位址指派給第二個介面。
先決條件: 已佈建新的執行處理並新增第二個 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
是執行處理上新的第二個 VNIC。
- 執行
方法 3:使用 OCI_Multi_VNIC_Setup
命令檔
在這個方法中,建立一個名為 sriov-test-02
的新執行處理,然後使用 OCI_Multi_VNIC_Setup 命令檔來設定第二個 VNIC 的 IP 位址。
先決條件: 已佈建新的執行處理並新增第二個 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 。
- 按一下第二個 VNIC。
- 請注意第二個 VNIC 的 MAC 位址。
- 將第二個 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 位址並確定路由的運作方式有兩種不同。
- 此指令檔也會為我們設定路由部分。
- 請注意命令檔的特定輸出。
- 執行
-
命令檔的下列部分將建立一個名為
/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
的預設路由是新的第二個 VNIC。
- 執行
方法 4:手動建立介面組態檔
建立名為 sriov-test-03
的新執行處理,並透過 /etc/sysconfig/network-scripts/
目錄中新 VNIC 的定義來設定第二個 VNIC 的 IP 位址。
注意:在此方法中,我們將設定幾乎所有由「方法 3」中的命令檔自動完成的步驟。
先決條件: 已佈建新的執行處理並新增第二個 VNIC。
-
執行下列命令。
- 執行
ip a
指令以從所有介面擷取 IP 位址。 - 請注意,
ens5
介面未配置 IP 位址。 - 執行
route -n
命令以擷取所有介面的所有路由和預設閘道。 - 請注意,只有一個閘道可供
ens3
介面使用。
- 執行
-
瀏覽至執行處理、連附的 VNICS ,然後選取第二個 VNIC 以擷取第二個 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 主控台擷取的 IP 位址相同。
- 子網路衍生自此介面所連線之 VCN 中的子網路。
- 閘道 IP 位址是子網路中的第一個 IP 位址。
-
使用 nano 編輯器儲存名為
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 位址並確定路由的運作方式有兩種不同。
- 執行
-
設定路由。
/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 且搭配命令,則此為必要項目。 -
在
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
的預設路由是新的第二個 VNIC。
- 執行
接下來的步驟
在 OCI Linux 執行處理上設定第二個介面的正確方法,取決於您的需求、技術專業知識以及所需的控制層次。如果您要尋找直覺且有效率的設定,強烈建議您使用 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
G25223-01
January 2025