共用方式為


如何在 Azure 中使用多個網路適配器建立 Linux 虛擬機

適用於:✔️ Linux 虛擬機 ✔️ 彈性規模設定

本文詳細說明如何使用 Azure CLI 建立具有多個 NIC 的 VM。

建立支持資源

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

在下列範例中,將範例參數名稱取代為您自己的值。 範例參數名稱包括 myResourceGroupmystorageaccountmyVM

首先,使用 az group create 建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組。 在這些範例中,我們會在使用環境變數時宣告環境變數,並將隨機後綴新增至唯一的資源名稱。

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_SUFFIX"
export REGION="WestUS2"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx",
  "location": "WestUS2",
  "managedBy": null,
  "name": "myResourceGroupxxx",
  "properties": {
      "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

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

export VNET_NAME="myVnet"
export FRONTEND_SUBNET="mySubnetFrontEnd"
az network vnet create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $VNET_NAME \
    --address-prefix 10.0.0.0/16 \
    --subnet-name $FRONTEND_SUBNET \
    --subnet-prefix 10.0.1.0/24

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

export BACKEND_SUBNET="mySubnetBackEnd"
az network vnet subnet create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vnet-name $VNET_NAME \
    --name $BACKEND_SUBNET \
    --address-prefix 10.0.2.0/24

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

export NSG_NAME="myNetworkSecurityGroup"
az network nsg create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NSG_NAME

建立及設定多個 NIC

使用 az network nic create 建立兩個 NIC。 下列範例會建立兩個名為 myNic1 和 myNic2NIC,並連線到網路安全組,其中一個 NIC 會連線到每個子網:

export NIC1="myNic1"
export NIC2="myNic2"
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC1 \
    --vnet-name $VNET_NAME \
    --subnet $FRONTEND_SUBNET \
    --network-security-group $NSG_NAME
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC2 \
    --vnet-name $VNET_NAME \
    --subnet $BACKEND_SUBNET \
    --network-security-group $NSG_NAME

建立 VM 並連結 NIC

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

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

export VM_NAME="myVM"
az vm create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $VM_NAME \
    --image Ubuntu2204 \
    --size Standard_DS3_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --nics $NIC1 $NIC2

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

將 NIC 新增至 VM

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

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

export NIC3="myNic3"
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC3 \
    --vnet-name $VNET_NAME \
    --subnet $BACKEND_SUBNET \
    --network-security-group $NSG_NAME

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

az vm deallocate --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

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

az vm nic add \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vm-name $VM_NAME \
    --nics $NIC3

使用 az vm start 啟動 VM

az vm start --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

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

從 VM 移除 NIC

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

az vm deallocate --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

使用命令az vm nic remove移除 NIC。 下列範例會從 myVM 移除 myNic3

az vm nic remove \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vm-name $VM_NAME \
    --nics $NIC3

使用 az vm start 啟動 VM

az vm start --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

使用 Resource Manager 樣本建立多個 NIC

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

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

深入瞭解如何使用複本建立多個實例

您也可以使用 copyIndex() 將數位附加至資源名稱,這可讓您建立 myNic1、myNic2 等。以下顯示附加索引值的範例:

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

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

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

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

先前的步驟會建立虛擬網路和子網、連結 NIC,然後建立 VM。 未建立允許 SSH 流量的公用 IP 位址和網路安全組規則。 若要設定多個 NIC 的客體 OS,您必須允許遠端連線,並在 VM 本機執行命令。

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

az network nsg rule create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --nsg-name $NSG_NAME \
    --name allow_ssh \
    --priority 101 \
    --destination-port-ranges 22

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

export PUBLIC_IP_NAME="myPublicIP"
az network public-ip create --resource-group $MY_RESOURCE_GROUP_NAME --name $PUBLIC_IP_NAME

az network nic ip-config update \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --nic-name $NIC1 \
    --name ipconfig1 \
    --public-ip $PUBLIC_IP_NAME

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

az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME -d --query publicIps -o tsv
x.x.x.x

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

export IP_ADDRESS=$(az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME -d --query publicIps -o tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS

若要從次要網路介面來回傳送,您必須針對每個次要網路介面手動將永續性路由新增至作系統。 在本文中, 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 VM 存取。 此功能會在需要時開啟 SSH 流量相關的網路安全群組規則,並設定為開放特定的一段時間。 如需詳細資訊,請參閱 使用 Just-In-Time 管理虛擬機存取