Как создать виртуальную машину Linux в Azure с несколькими сетевыми картами

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

В этой статье подробно описывается, как создать виртуальную машину с несколькими сетевыми адаптерами с помощью Azure CLI.

Создание вспомогательных ресурсов

Установите последнюю версию Azure CLI и войдите в систему с учетной записью Azure, выполнив команду az login.

В следующих примерах замените имена параметров собственными значениями. Примеры имен параметров: myResourceGroup, mystorageaccount и myVM.

Сначала создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

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

Создание и настройка нескольких сетевых карт

Создайте две сетевых карты с помощью команды az network nic create. В следующем примере создаются две сетевые карты — myNic1 и myNic2, — подключенные к группе безопасности сети. Каждая из этих сетевых карт подключена к отдельной подсети.

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

Создание виртуальной машины и подключение сетевых карт

При создании виртуальной машины укажите сетевые карты, созданные с помощью --nics. Необходимо выбрать соответствующий размер виртуальной машины. Для каждой виртуальной машины существуют ограничения на общее количество сетевых карт, которые можно в нее добавить. Прочитайте дополнительные сведения о размерах виртуальных машин Linux.

Создайте виртуальную машину с помощью команды az vm create. В следующем примере создается виртуальная машина с именем myVM.

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

Добавьте таблицы маршрутизации для гостевой ОС, выполнив инструкции в статье о настройке гостевой ОС для нескольких сетевых адаптеров.

Добавление сетевой карты к виртуальной машине

На предыдущих шагах вы создали виртуальную машину с несколькими сетевыми картами. С помощью Azure CLI можно также добавить сетевые адаптеры к существующей виртуальной машине. Различные размеры виртуальных машин поддерживают разное число сетевых карт, так что выбирайте соответствующий размер виртуальной машины. При необходимости вы можете изменить размер виртуальной машины.

Создайте другую сетевую карту с помощью команды az network nic create. В следующем примере создается сетевая карта myNic3, подключенная к внутренней подсети и группе безопасности сети, созданных на предыдущих шагах:

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

Чтобы добавить сетевую карту к существующей виртуальной машине, сначала отмените распределение виртуальной машины с помощью команды az vm deallocate. В следующем примере отменяется распределение виртуальной машины myVM.

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

Добавьте сетевую карту, выполнив команду az vm nic add. В следующем примере сетевая карта myNic3 добавляется к виртуальной машине myVM:

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

Запустите виртуальную машину, выполнив команду az vm start.

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

Добавьте таблицы маршрутизации для гостевой ОС, выполнив инструкции в статье о настройке гостевой ОС для нескольких сетевых адаптеров.

Удаление сетевой карты с виртуальной машины

Чтобы удалить сетевую карту с существующей виртуальной машины, сначала отмените распределение виртуальной машины с помощью команды az vm deallocate. В следующем примере отменяется распределение виртуальной машины myVM.

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

Удалите сетевую карту, выполнив команду az vm nic remove. В следующем примере удаляется сетевая карта myNic3 с виртуальной машины myVM:

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

Запустите виртуальную машину, выполнив команду az vm start.

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

Создание нескольких сетевых карт с помощью шаблонов Resource Manager

В шаблонах Azure Resource Manager используются декларативные JSON-файлы для определения среды. Дополнительные сведения см. в обзоре Azure Resource Manager. Шаблоны Resource Manager дают возможность создать несколько экземпляров ресурса во время развертывания, в том числе создать несколько сетевых карт. Чтобы указать число создаваемых экземпляров, используется объект copy .

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

Вы можете прочитать дополнительные сведения о создании нескольких экземпляров с помощью объекта copy.

Можно также использовать, copyIndex() чтобы добавить номер к имени ресурса, чтобы создавать myNic1, myNic2 и т. д. Ниже приведен пример добавления значения индекса:

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

Вы можете ознакомиться с полным примером создания нескольких сетевых карт с помощью шаблонов Resource Manager.

Добавьте таблицы маршрутизации для гостевой ОС, выполнив инструкции в статье о настройке гостевой ОС для нескольких сетевых адаптеров.

Настройка гостевой ОС для нескольких сетевых карт

На предыдущих шагах была создана виртуальная сеть и подсеть, подключены сетевые карты, а затем создана виртуальная машина. Общедоступный IP-адрес и правила группы безопасности сети, позволяющие передачу SSH-трафика, созданы не были. Чтобы настроить гостевую ОС для нескольких сетевых карт, необходимо разрешить удаленные подключения и запускать команды локально на виртуальной машине.

Чтобы разрешить передачу SSH-трафика, создайте правило группы безопасности сети с помощью команды 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

Создайте общедоступный IP-адрес с помощью команды az network public-ip create и назначьте его первой сетевой карте с помощью команды az network nic ip-config update.

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

Чтобы просмотреть общедоступный IP-адрес виртуальной машины, используйте команду az vm show следующим образом.

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

Теперь подключитесь по протоколу SSH к общедоступному 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. В следующем примере выходных данных показаны данные для таблицы маршрутов, которая имеет два сетевых интерфейса, добавленных в этой статье к виртуальной машине.

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

Дальнейшие действия

Ознакомьтесь с размерами виртуальных машин Linux, когда будете создавать виртуальную машину с несколькими сетевыми картами. Обратите внимание на максимальное число сетевых карт, поддерживаемых каждым из размеров виртуальной машины.

Для дальнейшего обеспечения безопасности виртуальных машин используйте JIT-доступ к виртуальной машине. Эта функция при необходимости открывает правила группы безопасности сети для SSH-трафика на определенный период времени. Дополнительные сведения см. в статье Управление доступом к виртуальным машинам с помощью JIT.