Поделиться через


Руководство. Создание виртуальных сетей Azure для виртуальных машин Linux и управление ими с помощью Azure CLI

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

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

  • Создание виртуальной сети и подсети
  • Создание общедоступного IP-адреса
  • Создание интерфейсной виртуальной машины
  • Безопасный сетевой трафик
  • Создание внутренней виртуальной машины

При работе с этим руководством используется интерфейс командной строки (CLI) в Azure Cloud Shell, который всегда обновлен до последней версии. Чтобы открыть Cloud Shell, выберите Попробовать в верхнем углу любого блока кода.

Если вы решили установить и использовать интерфейс командной строки локально, то для работы с этим руководством вам понадобится Azure CLI 2.0.30 или более поздней версии. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Общие сведения о сети виртуальных машин

Виртуальные сети Azure обеспечивают безопасные сетевые подключения между виртуальными машинами, Интернетом и другими службами Azure, такими как База данных SQL Azure. Виртуальные сети разбиваются на логические сегменты, называемые подсетями. Подсети используются для управления сетевым потоком и в качестве границы безопасности. При развертывании виртуальной машины обычно он включает виртуальный сетевой интерфейс, подключенный к подсети.

По завершении работы с руководством создаются следующие ресурсы виртуальной сети:

Виртуальная сеть с двумя подсетями

  • myVNet — виртуальная сеть, используемая виртуальными машинами для взаимодействия друг с другом и Интернетом.
  • myFrontendSubnetподсеть в myVNet , используемая внешними ресурсами.
  • myPublicIPAddress — общедоступный IP-адрес, используемый для доступа к myFrontendVM из Интернета.
  • myFrontentNic — сетевой интерфейс, используемый myFrontendVM для взаимодействия с myBackendVM.
  • myFrontendVM — виртуальная машина, используемая для обмена данными между Интернетом и myBackendVM.
  • myBackendNSG — группа безопасности сети, которая управляет взаимодействием между myFrontendVM и myBackendVM.
  • myBackendSubnet — подсеть, связанная с myBackendNSG и используемая внутренними ресурсами.
  • myBackendNic — сетевой интерфейс, используемый myBackendVM для взаимодействия с myFrontendVM.
  • myBackendVM — виртуальная машина, использующая порт 22 и 3306 для взаимодействия с myFrontendVM.

Создание виртуальной сети и подсети

В этом руководстве создается одна виртуальная сеть с двумя подсетями. Интерфейсная подсеть для размещения веб-приложения и серверной подсети для размещения сервера базы данных.

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

az group create --name myRGNetwork --location eastus

Создание виртуальной сети

Используйте команду az network vnet create для создания виртуальной сети. В этом примере сеть называется mvVNet и получает префикс адреса 10.0.0.0.0/16. Подсеть также создается с именем myFrontendSubnet и префиксом 10.0.1.0/24. Позже в этом руководстве клиентская виртуальная машина будет подключена к данной подсети.

az network vnet create \
  --resource-group myRGNetwork \
  --name myVNet \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myFrontendSubnet \
  --subnet-prefix 10.0.1.0/24

Создание подсети

Новая подсеть добавляется в виртуальную сеть с помощью команды az network vnet subnet create . В этом примере подсеть называется myBackendSubnet и получает префикс адреса 10.0.2.0/24. Эта подсеть используется со всеми внутренними службами.

az network vnet subnet create \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --address-prefix 10.0.2.0/24

На этом этапе сеть была создана и сегментирована в две подсети, одну для интерфейсных служб и другую для внутренних служб. В следующем разделе виртуальные машины создаются и подключены к этим подсетям.

Создание общедоступного IP-адреса

Общедоступный IP-адрес позволяет ресурсам Azure быть доступными в Интернете. Метод выделения общедоступного IP-адреса можно настроить как динамический или статический. По умолчанию общедоступный IP-адрес динамически выделяется. Динамические IP-адреса освобождаются при освобождении виртуальной машины. Это поведение приводит к изменению IP-адреса во время любой операции, включающей деалокацию виртуальной машины.

Метод выделения может быть задан как статический, что гарантирует, что IP-адрес остается назначенным виртуальной машине даже во время освобожденного состояния. При использовании статического выделенного IP-адреса не удается указать сам IP-адрес. Вместо этого он выделяется из пула доступных адресов.

az network public-ip create --resource-group myRGNetwork --name myPublicIPAddress

При создании виртуальной машины с помощью команды az vm create метод выделения общедоступных IP-адресов по умолчанию является динамическим. При создании виртуальной машины с помощью команды az vm create добавьте --public-ip-address-allocation static аргумент для назначения статического общедоступного IP-адреса. Эта операция не демонстрируется в этом руководстве, однако в следующем разделе динамически выделенный IP-адрес изменяется на статически выделенный адрес.

Изменение метода выделения

Метод выделения IP-адресов можно изменить с помощью команды az network public-ip update . В этом примере метод выделения IP-адресов интерфейсной виртуальной машины изменяется на статический.

Сначала деаллоцируйте виртуальную машину.

az vm deallocate --resource-group myRGNetwork --name myFrontendVM

Используйте команду az network public-ip update для обновления метода выделения. В этом случае --allocation-method устанавливается в статическое.

az network public-ip update --resource-group myRGNetwork --name myPublicIPAddress --allocation-method static

Запустите виртуальную машину.

az vm start --resource-group myRGNetwork --name myFrontendVM --no-wait

Общедоступный IP-адрес отсутствует

Часто виртуальная машина не должна быть доступна через Интернет. Чтобы создать виртуальную машину без общедоступного IP-адреса, используйте --public-ip-address "" аргумент с пустым набором двойных кавычки. Эта конфигурация показана далее в этом руководстве.

Создание интерфейсной виртуальной машины

Используйте команду az vm create , чтобы создать виртуальную машину с именем myFrontendVM с помощью myPublicIPAddress.

az vm create \
  --resource-group myRGNetwork \
  --name myFrontendVM \
  --vnet-name myVNet \
  --subnet myFrontendSubnet \
  --nsg myFrontendNSG \
  --public-ip-address myPublicIPAddress \
  --image Ubuntu2204 \
  --generate-ssh-keys

Безопасный сетевой трафик

Группа безопасности сети (NSG) содержит список правил безопасности, которые разрешают или запрещают сетевой трафик ресурсам, подключенным к виртуальным сетям Azure(VNet). Группы безопасности сети могут быть связаны с подсетями или отдельными сетевыми интерфейсами. Если группа безопасности сети связана с сетевым интерфейсом, она применяется только к соответствующей виртуальной машине. Если группа безопасности сети связана с подсетью, правила применяются ко всем ресурсам, подключенным к подсети.

Правила группы безопасности сети

Правила NSG определяют сетевые порты, через которые разрешен или запрещен трафик. Правила могут включать диапазоны IP-адресов источника и назначения, чтобы контролировать трафик между определенными системами или подсетями. Правила NSG также включают приоритет (от 1 до 4096). Правила оцениваются в порядке приоритета. Правило с приоритетом 100 оценивается перед правилом с приоритетом 200.

Все группы безопасности сети (NSG) содержат набор правил по умолчанию. Правила по умолчанию не могут быть удалены, но поскольку они назначены самым низким приоритетом, их можно переопределить созданными правилами.

Правила по умолчанию для групп безопасности сети:

  • Виртуальная сеть — исходящий и конечный трафик в виртуальной сети разрешен как в входящих, так и исходящих направлениях.
  • Интернет — исходящий трафик разрешен, но входящий трафик блокируется.
  • Подсистема балансировки нагрузки . Разрешить подсистеме балансировки нагрузки Azure проверять работоспособность виртуальных машин и экземпляров ролей. Если вы не используете набор балансировки нагрузки, можно переопределить это правило.

Создание групп безопасности сети

Группу безопасности сети можно создать одновременно с виртуальной машиной с помощью команды az vm create . При этом группа сетевой безопасности связана с сетевым интерфейсом виртуальных машин, и правило NSG автоматически создаётся, чтобы разрешить трафик через порт 22 из любого источника. Ранее в этом руководстве внешняя группа безопасности (НСГ) была автоматически создана вместе с внешней виртуальной машиной. Правило NSG также было создано автоматически для порта 22.

В некоторых случаях может быть полезно предварительно создать группу безопасности сети, например, когда не следует создавать правила SSH по умолчанию или когда группу безопасности необходимо подключить к подсети.

Используйте команду az network nsg create для создания группы безопасности сети.

az network nsg create --resource-group myRGNetwork --name myBackendNSG

Вместо того, чтобы связать группу безопасности сети с сетевым интерфейсом, она связана с подсетью. В этой конфигурации любая виртуальная машина, подключенная к подсети, наследует правила NSG.

Обновите существующую подсеть с именем myBackendSubnet, добавив в нее новый NSG.

az network vnet subnet update \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --network-security-group myBackendNSG

Безопасный входящий трафик

При создании интерфейсной виртуальной машины было создано правило NSG для разрешения входящего трафика через порт 22. Это правило разрешает подключения SSH к виртуальной машине. В этом примере трафик также должен быть разрешен через порт 80. Эта конфигурация позволяет веб-приложению получать доступ к виртуальной машине.

Используйте команду az network nsg rule create , чтобы создать правило для порта 80.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myFrontendNSG \
  --name http \
  --access allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range 80

Интерфейсная виртуальная машина доступна только через порт 22 и порт 80. Все остальные входящие трафик заблокированы в группе безопасности сети. Может быть полезно визуализировать конфигурации правил NSG. Возвращает конфигурацию правила NSG с помощью команды az network rule list .

az network nsg rule list --resource-group myRGNetwork --nsg-name myFrontendNSG --output table

Безопасный трафик между виртуальными машинами

Правила группы безопасности сети также могут применяться между виртуальными машинами. В этом примере интерфейсная виртуальная машина должна взаимодействовать с серверной виртуальной машиной через порт 22 и 3306. Эта конфигурация позволяет подключениям SSH с интерфейсной виртуальной машины, а также разрешить приложению на интерфейсной виртуальной машине взаимодействовать с серверной базой данных MySQL. Весь остальной трафик должен быть заблокирован между внешними и внутренними виртуальными машинами.

Используйте команду az network nsg rule create , чтобы создать правило для порта 22. Обратите внимание, что --source-address-prefix аргумент задает значение 10.0.1.0/24. Эта конфигурация гарантирует, что через NSG разрешен только трафик из интерфейсной подсети.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name SSH \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "22"

Теперь добавьте правило для трафика MySQL через порт 3306.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name MySQL \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "3306"

Наконец, поскольку группы безопасности сети имеют правило по умолчанию, разрешающее весь трафик между виртуальными машинами в одной виртуальной сети, можно создать правило для серверных групп безопасности сети, чтобы заблокировать весь трафик. Обратите внимание, что --priority задано значение 300, что ниже, чем правила NSG и MySQL. Эта конфигурация гарантирует, что трафик SSH и MySQL по-прежнему разрешен через NSG.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name denyAll \
  --access Deny \
  --protocol Tcp \
  --direction Inbound \
  --priority 300 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "*"

Создание внутренней виртуальной машины

Теперь создайте виртуальную машину, которая подключена к myBackendSubnet. Обратите внимание, что --nsg аргумент имеет значение пустых двойных кавычек. NSG не обязательно создавать вместе с виртуальной машиной. Виртуальная машина подключена к серверной подсети, которая защищена предварительно созданной серверной группой безопасности сети. Эта группа безопасности сети (NSG) применяется к виртуальной машине. Кроме того, обратите внимание, что аргумент --public-ip-address имеет значение пустых двойных кавычек. Эта конфигурация создает виртуальную машину без общедоступного IP-адреса.

az vm create \
  --resource-group myRGNetwork \
  --name myBackendVM \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --public-ip-address "" \
  --nsg "" \
  --image Ubuntu2204 \
  --generate-ssh-keys

Серверная виртуальная машина доступна только через порт 22 и порт 3306 из интерфейсной подсети. Все остальные входящие трафик заблокированы в группе безопасности сети. Может быть полезно визуализировать конфигурации правил NSG. Возвращает конфигурацию правила NSG с помощью команды az network rule list .

az network nsg rule list --resource-group myRGNetwork --nsg-name myBackendNSG --output table

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

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

  • Создание виртуальной сети и подсети
  • Создание общедоступного IP-адреса
  • Создание интерфейсной виртуальной машины
  • Безопасный сетевой трафик
  • Создание внутренней виртуальной машины

Сведения о защите дисков виртуальных машин см. в статье "Резервное копирование и аварийное восстановление дисков".