Руководство по Создание и администрирование виртуальных сетей Azure для виртуальных машин Linux с помощью Azure CLITutorial: Create and manage Azure virtual networks for Linux virtual machines with the Azure CLI

Виртуальные машины Azure осуществляют внутреннее и внешнее взаимодействие через сеть Azure.Azure virtual machines use Azure networking for internal and external network communication. В этом руководстве содержатся сведения о развертывании двух виртуальных машин и настройке для них сети Azure.This tutorial walks through deploying two virtual machines and configuring Azure networking for these VMs. Примеры, описанные в этом руководстве, предполагают, что на виртуальных машинах размещается веб-приложение с сервером базы данных, но здесь не описывается развертывание самого приложения.The examples in this tutorial assume that the VMs are hosting a web application with a database back-end, however an application is not deployed in the tutorial. Из этого руководства вы узнаете, как выполнять следующие задачи:In this tutorial, you learn how to:

  • Создание виртуальной сети и подсетиCreate a virtual network and subnet
  • Создание общедоступного IP-адресаCreate a public IP address
  • Создание интерфейсной виртуальной машиныCreate a front-end VM
  • защищают сетевой трафик;Secure network traffic
  • Создание внутренней виртуальной машины.Create a back-end VM

При работе с этим руководством используется интерфейс командной строки (CLI) в Azure Cloud Shell, который всегда обновлен до последней версии.This tutorial uses the CLI within the Azure Cloud Shell, which is constantly updated to the latest version. Чтобы открыть Cloud Shell, выберите Попробовать в верхнем углу любого блока кода.To open the Cloud Shell, select Try it from the top of any code block.

Если вы решили установить и использовать интерфейс командной строки локально, то для работы с этим руководством вам понадобится Azure CLI 2.0.30 или более поздней версии.If you choose to install and use the CLI locally, this tutorial requires that you are running the Azure CLI version 2.0.30 or later. Чтобы узнать версию, выполните команду az --version.Run az --version to find the version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.If you need to install or upgrade, see Install Azure CLI.

Обзор сети виртуальной машиныVM networking overview

Виртуальные сети Azure позволяют устанавливать безопасные сетевые подключения между виртуальными машинами, в Интернете, а также между другими службами Azure, такими как база данных SQL Azure.Azure virtual networks enable secure network connections between virtual machines, the internet, and other Azure services such as Azure SQL database. Виртуальные сети разбиты на логические сегменты — подсети.Virtual networks are broken down into logical segments called subnets. Подсети позволяют контролировать поток сетевого трафика. Это своего рода периметр безопасности.Subnets are used to control network flow, and as a security boundary. При развертывании виртуальная машина обычно содержит виртуальный сетевой интерфейс, подключенный к подсети.When deploying a VM, it generally includes a virtual network interface, which is attached to a subnet.

Завершив работу с руководством, вы создадите следующие ресурсы виртуальной сети:As you complete the tutorial, the following virtual network resources are created:

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

  • myVNet. Виртуальная сеть, которую используют виртуальные машины для взаимодействия между собой и в Интернете.myVNet - The virtual network that the VMs use to communicate with each other and the internet.
  • myFrontendSubnet. Подсеть в myVNet, используемая ресурсами внешних интерфейсов.myFrontendSubnet - The subnet in myVNet used by the front-end resources.
  • myPublicIPAddress. Общедоступный IP-адрес, используемый для доступа к myFrontendVM из Интернета.myPublicIPAddress - The public IP address used to access myFrontendVM from the internet.
  • myFrontentNic. Сетевой интерфейс, используемый myFrontendVM для взаимодействия с myBackendVM.myFrontentNic - The network interface used by myFrontendVM to communicate with myBackendVM.
  • myFrontendVM. Виртуальная машина, используемая для взаимодействия Интернета и myBackendVM.myFrontendVM - The VM used to communicate between the internet and myBackendVM.
  • myBackendNSG. Группа безопасности сети, которая управляет взаимодействием между myFrontendVM и myBackendVM.myBackendNSG - The network security group that controls communication between the myFrontendVM and myBackendVM.
  • myBackendSubnet. Подсеть, связанная с myBackendNSG и используемая внутренними ресурсами.myBackendSubnet - The subnet associated with myBackendNSG and used by the back-end resources.
  • myBackendNic. Сетевой интерфейс, используемый myBackendVM для взаимодействия с myFrontendVM.myBackendNic - The network interface used by myBackendVM to communicate with myFrontendVM.
  • myBackendVM. Виртуальная машина, использующая порт 22 и 3306 для взаимодействия с myFrontendVM.myBackendVM - The VM that uses port 22 and 3306 to communicate with myFrontendVM.

Создание виртуальной сети и подсетиCreate a virtual network and subnet

В этом руководстве создается виртуальная сеть с двумя подсетями:For this tutorial, a single virtual network is created with two subnets. интерфейсная подсеть для размещения веб-приложения и внутренняя подсеть для размещения сервера базы данных.A front-end subnet for hosting a web application, and a back-end subnet for hosting a database server.

Прежде чем создать виртуальную сеть, выполните команду az group create, чтобы создать группу ресурсов.Before you can create a virtual network, create a resource group with az group create. Следующий пример позволяет создать группу ресурсов myRGNetwork в расположении eastus.The following example creates a resource group named myRGNetwork in the eastus location.

az group create --name myRGNetwork --location eastus

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

Создайте виртуальную сеть с помощью команды az network vnet create.Use the az network vnet create command to create a virtual network. В этом примере создается сеть mvVnet с префиксом адреса 10.0.0.0/16,In this example, the network is named mvVNet and is given an address prefix of 10.0.0.0/16. а также подсеть myFrontendSubnet с префиксом 10.0.1.0/24.A subnet is also created with a name of myFrontendSubnet and a prefix of 10.0.1.0/24. Далее в этом руководстве мы подключим интерфейсную виртуальную машину к этой подсети.Later in this tutorial a front-end VM is connected to this subnet.

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

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

Добавьте новую подсеть к виртуальной сети с помощью команды az network vnet subnet create.A new subnet is added to the virtual network using the az network vnet subnet create command. В этом примере создается подсеть myBackendSubnet с префиксом адреса 10.0.2.0/24.In this example, the subnet is named myBackendSubnet and is given an address prefix of 10.0.2.0/24. Она используется со всеми внутренними службами.This subnet is used with all back-end services.

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

На этом этапе мы создали сеть и разбили ее на две подсети — одна для интерфейсных служб, а вторая для внутренних служб.At this point, a network has been created and segmented into two subnets, one for front-end services, and another for back-end services. В следующем разделе мы создадим виртуальные машины и подключим их к этим подсетям.In the next section, virtual machines are created and connected to these subnets.

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

Общедоступный IP-адрес обеспечивает доступность ресурсов Azure в Интернете.A public IP address allows Azure resources to be accessible on the internet. Метод распределения общедоступного IP-адреса может быть динамическим или статическим.The allocation method of the public IP address can be configured as dynamic or static. По умолчанию выделяется динамический общедоступный IP-адрес.By default, a public IP address is dynamically allocated. После освобождения виртуальной машины освобождаются также и динамические IP-адреса.Dynamic IP addresses are released when a VM is deallocated. Таким образом, IP-адреса изменяются во время каждой операции с освобождением виртуальной машины.This behavior causes the IP address to change during any operation that includes a VM deallocation.

При использовании статического метода выделения IP-адрес остается назначенным виртуальной машине, даже если она в освобожденном состоянии.The allocation method can be set to static, which ensures that the IP address remains assigned to a VM, even during a deallocated state. В этом случае вы не сможете указать IP-адрес.When using a statically allocated IP address, the IP address itself cannot be specified. Он выделяется из пула доступных адресов.Instead, it is allocated from a pool of available addresses.

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

При создании виртуальной машины с помощью команды az vm create по умолчанию выделяется динамический общедоступный IP-адрес.When creating a VM with the az vm create command, the default public IP address allocation method is dynamic. При создании виртуальной машины с помощью команды az vm create добавьте аргумент --public-ip-address-allocation static, чтобы назначить статический общедоступный IP-адрес.When creating a virtual machine using the az vm create command, include the --public-ip-address-allocation static argument to assign a static public IP address. Эта операция не описана в этом руководстве, но в следующем разделе показано, как изменить динамический IP-адрес на статический.This operation is not demonstrated in this tutorial, however in the next section a dynamically allocated IP address is changed to a statically allocated address.

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

Метод выделения IP-адресов можно изменить с помощью команды az network public-ip update.The IP address allocation method can be changed using the az network public-ip update command. В этом примере метод выделения IP-адреса интерфейсной виртуальной машины изменяется на статический.In this example, the IP address allocation method of the front-end VM is changed to static.

Сначала отмените подготовку виртуальной машины.First, deallocate the VM.

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

Обновите метод выделения, используя команду az network public-ip update.Use the az network public-ip update command to update the allocation method. В этом случае для параметра --allocation-method необходимо задать значение static.In this case, the --allocation-method is being set to static.

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

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

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

Создание виртуальной машины без общедоступного IP-адресаNo public IP address

Во многих случаях виртуальная машина не должна быть доступна через Интернет.Often, a VM does not need to be accessible over the internet. Чтобы создать виртуальную машину без общедоступного IP-адреса, используйте аргумент --public-ip-address "" с пустыми двойными кавычками.To create a VM without a public IP address, use the --public-ip-address "" argument with an empty set of double quotes. Эта конфигурация рассматривается далее в этом руководстве.This configuration is demonstrated later in this tutorial.

Создание интерфейсной виртуальной машины.Create a front-end VM

Выполните команду az vm create, чтобы создать виртуальную машину myFrontendVM, использующую myPublicIPAddress.Use the az vm create command to create the VM named myFrontendVM using myPublicIPAddress.

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

защищают сетевой трафик;Secure network traffic

Группа безопасности сети (NSG) содержит перечень правил безопасности, которые разрешают или запрещают передачу сетевого трафика к ресурсам, подключенным к виртуальным сетям Azure.A network security group (NSG) contains a list of security rules that allow or deny network traffic to resources connected to Azure Virtual Networks (VNet). Группы безопасности сети (NSG) можно связать с подсетями или отдельными сетевыми интерфейсами.NSGs can be associated to subnets or individual network interfaces. Группа безопасности сети, связанная с сетевым интерфейсом, применяется только к связанной виртуальной машине.When an NSG is associated with a network interface, it applies only the associated VM. Если группа безопасности сети связана с подсетью, эти правила применяются ко всем ресурсам в подсети.When an NSG is associated to a subnet, the rules apply to all resources connected to the subnet.

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

Правила группы безопасности сети определяют сетевые порты, через которые разрешен или запрещен трафик.NSG rules define networking ports over which traffic is allowed or denied. Эти правила также могут включать исходные и целевые диапазоны IP-адресов, что позволяет контролировать трафик между определенными системами и подсетями.The rules can include source and destination IP address ranges so that traffic is controlled between specific systems or subnets. Правилам также присваивается приоритет (от 1 до 4096),NSG rules also include a priority (between 1—and 4096). и они оцениваются в порядке приоритета.Rules are evaluated in the order of priority. Правило с приоритетом 100 оценивается перед правилом с приоритетом 200.A rule with a priority of 100 is evaluated before a rule with priority 200.

Все группы NSG содержат набор правил по умолчанию.All NSGs contain a set of default rules. Эти правила нельзя удалить, но у них самый низкий приоритет, поэтому их можно переопределить, создав другие правила.The default rules cannot be deleted, but because they are assigned the lowest priority, they can be overridden by the rules that you create.

Стандартные правила для NSG:The default rules for NSGs are:

  • Виртуальная сеть. Входящий и исходящий трафик виртуальной сети разрешен в обоих направлениях.Virtual network - Traffic originating and ending in a virtual network is allowed both in inbound and outbound directions.
  • Интернет. Исходящий трафик разрешен, но входящий трафик заблокирован.Internet - Outbound traffic is allowed, but inbound traffic is blocked.
  • Подсистема балансировки нагрузки. Разрешает Azure Load Balancer инициировать проверку работоспособности виртуальных машин и экземпляров роли.Load balancer - Allow Azure’s load balancer to probe the health of your VMs and role instances. Если набор балансировки нагрузки не используется, это правило можно переопределить.If you are not using a load balanced set, you can override this rule.

Создание групп безопасности сетиCreate network security groups

Группу безопасности сети можно создать вместе с виртуальной машиной, используя команду az vm create.A network security group can be created at the same time as a VM using the az vm create command. В этом случае группа безопасности сети связывается с сетевым интерфейсом виртуальных машин и автоматически создается правило NSG, разрешающее прохождение трафика через порт 22 из любого источника.When doing so, the NSG is associated with the VMs network interface and an NSG rule is auto created to allow traffic on port 22 from any source. Ранее в этом руководстве мы создали интерфейсную виртуальную машину, вместе с которой была автоматически создана группа безопасности сети переднего плана.Earlier in this tutorial, the front-end NSG was auto-created with the front-end VM. Кроме того, было также создано правило NSG для порта 22.An NSG rule was also auto created for port 22.

В некоторых случаях есть смысл заранее создать группу безопасности сети, например, если не нужно создавать правила SSH по умолчанию или если группу безопасности сети нужно присоединить к подсети.In some cases, it may be helpful to pre-create an NSG, such as when default SSH rules should not be created, or when the NSG should be attached to a subnet.

Создайте группу безопасности сети с помощью команды az network nsg create.Use the az network nsg create command to create a network security group.

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

В этом случае группа безопасности сети будет связана с подсетью, а не сетевым интерфейсом.Instead of associating the NSG to a network interface, it is associated with a subnet. В этой конфигурации все виртуальные машины, подключенные к подсети, наследуют правила NSG.In this configuration, any VM that is attached to the subnet inherits the NSG rules.

Обновите имеющуюся подсеть myBackendSubnet, включив в нее новую группу безопасности сети.Update the existing subnet named myBackendSubnet with the new NSG.

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

Защита входящего трафикаSecure incoming traffic

При создании интерфейсной виртуальной машины также было создано правило NSG, разрешающее входящий трафик через порт 22.When the front-end VM was created, an NSG rule was created to allow incoming traffic on port 22. Это правило разрешает SSH-подключения к виртуальной машине.This rule allows SSH connections to the VM. В этом примере трафик также необходимо разрешить через порт 80.For this example, traffic should also be allowed on port 80. Такая конфигурация обеспечивает доступ к веб-приложению на виртуальной машине.This configuration allows a web application to be accessed on the VM.

Создайте правило для порта 80 с помощью команды az network nsg rule create.Use the az network nsg rule create command to create a rule for port 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.The front-end VM is only accessible on port 22 and port 80. Весь остальной входящий трафик блокируется группой безопасности сети.All other incoming traffic is blocked at the network security group. Иногда есть смысл визуализировать конфигурации правил NSG.It may be helpful to visualize the NSG rule configurations. Получите конфигурацию правила NSG с помощью команды az network rule list.Return the NSG rule configuration with the az network rule list command.

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

защищать трафик между виртуальными машинами.Secure VM to VM traffic

Правила группы безопасности сети также можно применить между виртуальными машинами.Network security group rules can also apply between VMs. В этом примере интерфейсная виртуальная машина должна взаимодействовать с внутренней виртуальной машиной через порт 22 и 3306.For this example, the front-end VM needs to communicate with the back-end VM on port 22 and 3306. Эта конфигурация разрешает SSH-подключения из интерфейсной виртуальной машины, а также разрешает приложению, расположенному на этой виртуальной машине, взаимодействовать с внутренней базой данных MySQL.This configuration allows SSH connections from the front-end VM, and also allow an application on the front-end VM to communicate with a back-end MySQL database. Весь остальной трафик между интерфейсной и внутренней виртуальными машинами должен блокироваться.All other traffic should be blocked between the front-end and back-end virtual machines.

Создайте правило для порта 22 с помощью команды az network nsg rule create.Use the az network nsg rule create command to create a rule for port 22. Обратите внимание, что аргумент --source-address-prefix имеет значение 10.0.1.0/24.Notice that the --source-address-prefix argument specifies a value of 10.0.1.0/24. Такая конфигурация гарантирует, что только трафик из интерфейсной подсети сможет пройти через группу безопасности сети.This configuration ensures that only traffic from the front-end subnet is allowed through the 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.Now add a rule for MySQL traffic on port 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"

И наконец, так как группы безопасности сети имеют правила по умолчанию, разрешающие весь трафик между виртуальными машинами в той же виртуальной сети, вы можете создать правило блокировки всего трафика во внутренних группах безопасности сети.Finally, because NSGs have a default rule allowing all traffic between VMs in the same VNet, a rule can be created for the back-end NSGs to block all traffic. Обратите внимание, что аргумент --priority имеет значение 300, что меньше значения приоритета правил NSG и MySQL.Notice here that the --priority is given a value of 300, which is lower that both the NSG and MySQL rules. Такая конфигурация гарантирует, что трафик SSH и MySQL по-прежнему сможет проходить через группу безопасности сети.This configuration ensures that SSH and MySQL traffic is still allowed through the 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 "*"

Создание внутренней виртуальной машиныCreate back-end VM

Теперь создайте виртуальную машину и присоедините ее к подсети myBackendSubnet.Now create a virtual machine, which is attached to the myBackendSubnet. Обратите внимание, что в качестве значения аргумента --nsg используются пустые двойные кавычки.Notice that the --nsg argument has a value of empty double quotes. Вместе с виртуальной машиной не нужно создавать группу безопасности сети.An NSG does not need to be created with the VM. Виртуальная машина будет подключена к внутренней подсети, которая защищена с помощью предварительно созданной внутренней группы безопасности сети.The VM is attached to the back-end subnet, which is protected with the pre-created back-end NSG. Эта группа безопасности сети применяется к виртуальной машине.This NSG applies to the VM. Кроме того, обратите внимание, что в качестве значения аргумента --public-ip-address используются пустые двойные кавычки.Also, notice here that the --public-ip-address argument has a value of empty double quotes. Эта конфигурация создает виртуальную машину без общедоступного IP-адреса.This configuration creates a VM without a public IP address.

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

Внутренняя виртуальная машина доступна только через порты 22 и 3306 из интерфейсной подсети.The back-end VM is only accessible on port 22 and port 3306 from the front-end subnet. Весь остальной входящий трафик блокируется группой безопасности сети.All other incoming traffic is blocked at the network security group. Иногда есть смысл визуализировать конфигурации правил NSG.It may be helpful to visualize the NSG rule configurations. Получите конфигурацию правила NSG с помощью команды az network rule list.Return the NSG rule configuration with the az network rule list command.

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

Дополнительная информацияNext steps

В этом руководстве вы создали и защитили сети Azure с точки зрения виртуальных машин.In this tutorial, you created and secured Azure networks as related to virtual machines. Вы научились выполнять следующие задачи:You learned how to:

  • Создание виртуальной сети и подсетиCreate a virtual network and subnet
  • Создание общедоступного IP-адресаCreate a public IP address
  • Создание интерфейсной виртуальной машиныCreate a front-end VM
  • защищают сетевой трафик;Secure network traffic
  • Создание внутренней виртуальной машиныCreate back-end VM

Перейдите к следующему руководству, чтобы узнать о защите данных на виртуальных машинах с помощью службы архивации Azure.Advance to the next tutorial to learn about securing data on virtual machines using Azure backup.