如何在 Azure 中建立有多個網路介面卡的 Linux 虛擬機器

適用於:✔️ Linux VM ✔️ 彈性擴展集

此文章詳述如何使用 Azure CLI 建立具有多個 NIC 的 VM。

建立支援資源

請安裝最新的 Azure CLI,並使用 az login 來登入 Azure 帳戶。

在下列範例中,請以您自己的值取代範例參數名稱。 範例參數名稱包含 myResourceGroup、mystorageaccount 和 myVM

首先,使用 az group create 建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:

az group create --name myResourceGroup --location eastus

使用 az network vnet create 建立虛擬網路。 下列範例會建立名為 myVnet 的虛擬網路和名為 mySubnetFrontEnd 的子網路:

az network vnet create \
    --resource-group myResourceGroup \
    --name myVnet \
    --address-prefix 10.0.0.0/16 \
    --subnet-name mySubnetFrontEnd \
    --subnet-prefix 10.0.1.0/24

使用 az network vnet subnet create 建立後端流量的子網路。 下列範例會建立名為 mySubnetBackEnd 的子網路:

az network vnet subnet create \
    --resource-group myResourceGroup \
    --vnet-name myVnet \
    --name mySubnetBackEnd \
    --address-prefix 10.0.2.0/24

使用 az network nsg create 建立網路安全性群組。 下列範例建立名為 myNetworkSecurityGroup 的網路安全性群組:

az network nsg create \
    --resource-group myResourceGroup \
    --name myNetworkSecurityGroup

建立及設定多個 NIC

使用 az network nic create 建立兩個 NIC。 下列範例會建立兩個連接網路安全性群組的 NIC (名為 myNic1 和 myNic2),以及一個連接到各個子網路的 NIC:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic1 \
    --vnet-name myVnet \
    --subnet mySubnetFrontEnd \
    --network-security-group myNetworkSecurityGroup
az network nic create \
    --resource-group myResourceGroup \
    --name myNic2 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

建立 VM 並附加 NIC

當您建立 VM 時,指定您使用 --nics 建立的 NIC。 當您選取 VM 大小時也需多加注意。 您可以新增至 VM 的 NIC 總數是有限制的。 深入了解 Linux VM 大小

使用 az vm create 建立 VM。 下列範例會建立名為 myVM 的 VM。

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image Ubuntu2204 \
    --size Standard_DS3_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --nics myNic1 myNic2

完成針對多個 NIC 設定客體作業系統中的步驟,將路由資料表新增至客體作業系統。

將 NIC 新增至 VM

先前的步驟建立了一個有多個 NIC 的 VM。 您也可以使用 Azure CLI 將 NIC 新增至現有的 VM。 不同的 VM 大小 支援不同數量的 NIC,因此可據以調整您的 VM。 如有需要,您可以調整 VM 的大小

使用 az network nic create 建立另一個 NIC。 下列範例會建立一個名為 myNic3 的 NIC,此 NIC會連線到後端子網路與在先前步驟中建立的網路安全性群組:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic3 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

若要將 NIC 新增至現有的 VM,請先使用 az vm deallocate 解除配置 VM。 下列範例會解除配置名為 myVM 的 VM:

az vm deallocate --resource-group myResourceGroup --name myVM

使用 az vm nic add 新增 NIC。 下列範例將 myNic3 新增至 myVM

az vm nic add \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

使用 az vm start 啟用 VM:

az vm start --resource-group myResourceGroup --name myVM

完成針對多個 NIC 設定客體作業系統中的步驟,將路由資料表新增至客體作業系統。

從 VM 中移除 NIC

若要將 NIC 從現有的 VM 中移除,請先使用 az vm deallocate 解除配置 VM。 下列範例會解除配置名為 myVM 的 VM:

az vm deallocate --resource-group myResourceGroup --name myVM

使用 az vm nic remove 移除 NIC。 下列範例會將 myNic3 從 myVM 中移除:

az vm nic remove \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

使用 az vm start 啟用 VM:

az vm start --resource-group myResourceGroup --name myVM

使用 Resource Manager 範本建立多個 NIC

Azure Resource Manager 範本會使用宣告式 JSON 檔案來定義您的環境。 您可以閱讀 Azure Resource Manager 概觀。 Resource Manager 範本提供一種方式,可在部署期間建立資源的多個執行個體,例如建立多個 NIC。 您使用 copy 來指定要建立的執行個體數目:

"copy": {
    "name": "multiplenics"
    "count": "[parameters('count')]"
}

深入了解使用 copy 建立多個執行個體

您也可以使用 copyIndex(),然後在資源名稱後面附加一個數字,讓您能夠建立 myNic1myNic2,依此類推。以下顯示附加索引值的範例:

"name": "[concat('myNic', copyIndex())]",

您可以閱讀 使用 Resource Manager 範本建立多個 NIC的完整範例。

完成針對多個 NIC 設定客體作業系統中的步驟,將路由資料表新增至客體作業系統。

針對多個 NIC 設定客體作業系統

先前的步驟已建立虛擬網路和子網路、連結 NIC,然後建立 VM。 並未建立公用 IP 位址以及允許 SSH 流量的網路安全性群組規則。 若要針對多個 NIC 設定客體作業系統,您需要允許遠端連線,並且在 VM 本機執行命令。

若要允許 Web 流量,請使用 az network nsg rule create 建立網路安全性群組規則,如下所示:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name allow_ssh \
    --priority 101 \
    --destination-port-ranges 22

使用 az network public-ip create 建立公用 IP 位址,並使用 az network nic ip-config update 將它指派給第一個 NIC:

az network public-ip create --resource-group myResourceGroup --name myPublicIP

az network nic ip-config update \
    --resource-group myResourceGroup \
    --nic-name myNic1 \
    --name ipconfig1 \
    --public-ip myPublicIP

若要檢視 VM 的公用 IP 位址,請使用 az vm show,如下所示:

az vm show --resource-group myResourceGroup --name myVM -d --query publicIps -o tsv

現在透過 SSH 連線至 VM 的公用 IP 位址。 上一個步驟中提供的預設使用者名稱為 azureuser。 提供您自己的使用者名稱和公用 IP 位址:

ssh azureuser@137.117.58.232

若要對次要網路介面進行雙向傳送,您必須手動將持續性路由新增至每個次要網路介面的作業系統。 在本文中,eth1 是次要介面。 將持續性路由新增至作業系統的指示,會因散發套件而有所不同。 如需相關指示,請參閱您的散發套件文件。

將路由新增至作業系統時,閘道位址為網路介面所屬子網路的第一個位址。 例如,如果子網路已指派範圍 10.0.2.0/24,則您為路由指定的閘道為 10.0.2.1,或子網路已獲指派範圍 10.0.2.128/25,則您為路由指定的閘道為 10.0.2.129。 您可以為路由的目的地定義特定網路;或是如果希望介面的所有流量通過指定的閘道,請指定目的地為 0.0.0.0。 每個子網路的閘道均由虛擬網路管理。

新增次要介面的路由後,請使用 route -n 確認路由位於您的路由表中。 下列範例輸出適用於本文中將兩個網路介面新增至 VM 的路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.0.2.1        0.0.0.0         UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
168.63.129.16   10.0.1.1        255.255.255.255 UGH   0      0        0 eth0
169.254.169.254 10.0.1.1        255.255.255.255 UGH   0      0        0 eth0

請在重新開機後再次檢查您的路由表,透過重新啟動確認您新增的路由持續存在。 若要測試連線能力,您可以輸入下列命令,其中 eth1 是次要網路介面的名稱:

ping bing.com -c 4 -I eth1

下一步

當您嘗試建立一個有多個 NIC 的 VM 時,請檢閱 Linux VM 大小。 注意每個 VM 大小所支援的 NIC 數目上限。

若要進一步保護您的 VM,請使用 Just-In-Time 虛擬機器存取。 這項功能會視需要開啟 SSH 流量的網路安全性群組規則,並持續一段定義的期間。 如需詳細資訊,請參閱使用 Just-In-Time 管理虛擬機器存取