Упражнение. Настройка сетевого доступа
В этом упражнении вы настроите доступ к виртуальной машине, созданной ранее в этом модуле.
Внимание
Песочница Microsoft Learn по-прежнему должна быть запущена. Если истекло время ожидания для песочницы, необходимо повторить предыдущее упражнение (упражнение "Создание виртуальной машины Azure").
Чтобы проверить, запущена ли созданная ранее виртуальная машина, используйте следующую команду:
az vm list
Если вы получите пустой ответ []
, необходимо снова выполнить первое упражнение в этом модуле. Если в результате перечислены текущая виртуальная машина и ее параметры, можно продолжить.
Сейчас созданная и установленная виртуальная машина Nginx недоступна из Интернета. Вы создаете группу безопасности сети, которая изменяет, разрешая входящий HTTP-доступ через порт 80.
Задача 1. Доступ к веб-серверу
В этой процедуре вы получаете IP-адрес своей виртуальной машины и пытаетесь получить доступ к домашней странице вашего веб-сервера.
Выполните следующую команду
az vm list-ip-addresses
, чтобы получить IP-адрес виртуальной машины и сохранить его в переменной Bash:IPADDRESS="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name my-vm \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)"
Выполните следующую команду
curl
, чтобы загрузить домашнюю страницу:curl --connect-timeout 5 http://$IPADDRESS
Аргумент
--connect-timeout
указывает, что процесс подключения может продолжаться до пяти секунд. Через пять секунд появится сообщение об ошибке, указывающее, что время подключения истекло:curl: (28) Connection timed out after 5001 milliseconds
Это сообщение означает, что виртуальная машина не была доступна в течение периода ожидания.
Вы можете попробовать получить доступ к веб-серверу из браузера (это необязательный шаг).
Выполните следующую команду, чтобы вывести IP-адрес вашей виртуальной машины на консоль:
echo $IPADDRESS
Появится IP-адрес, например 23.102.42.235.
Скопируйте этот IP-адрес в буфер обмена.
Откройте новую вкладку браузера и перейдите на свой веб-сервер. Через несколько секунд вы увидите, что подключение не установлено. Если вы дождитесь истечения времени ожидания браузера, вы увидите следующее:
Не закрывайте эту вкладку браузера, она еще пригодится.
Задача 2. Получение списка текущих правил группы безопасности сети
Ваш веб-сервер был недоступен. Чтобы выяснить причину, давайте изучим текущие правила NSG.
Выполните следующую команду
az network nsg list
, чтобы вывести список групп безопасности сети, связанных с вашей виртуальной машиной:az network nsg list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --query '[].name' \ --output tsv
Вы увидите следующие выходные данные:
my-vmNSG
Каждая виртуальная машина в Azure связана как минимум с одной группой безопасности сети. В данном случае Azure создала для вас группу безопасности сети с именем my-vmNSG.
Выполните следующую команду
az network nsg rule list
, чтобы вывести список правил, связанных с группой безопасности сети my-vmNSG:az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG
В результате вы увидите большой блок текста в формате JSON. На следующем шаге вы выполните аналогичную команду, которая сделает этот результат более удобным для чтения.
Еще раз выполните команду
az network nsg rule list
. Но на этот раз используйте аргумент--query
, чтобы получить только имя, приоритет, затрагиваемые порты и доступ (Разрешить или Запретить) для каждого правила. Аргумент--output
форматирует выходной результат в виде таблицы, чтобы его было удобно читать.az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \ --output table
Вы увидите следующие выходные данные:
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow
Вы видите правило по умолчанию, default-allow-ssh. Это правило разрешает входящие подключения через порт 22 (SSH). SSH (Secure Shell) — это протокол, который используется в Linux, чтобы позволить администраторам получать удаленный доступ к системе. Это правило имеет приоритет 1000. Правила обрабатываются в порядке приоритета, при этом правила с более низким приоритетом обрабатываются перед правилами с более высоким приоритетом.
По умолчанию NSG виртуальной машины Linux разрешает доступ к сети только через порт 22. Этот порт позволяет администраторам получать доступ к системе. Вам нужно также разрешить входящие подключения через порт 80, позволяющий доступ по HTTP.
Задача 3. Создание правила сетевой безопасности
На этом шаге вы создаете правило сетевой безопасности, разрешающее входящий доступ через порт 80 (HTTP).
Выполните следующую команду
az network nsg rule create
, чтобы создать правило с именем allow-http, разрешающее входящий доступ через порт 80:az network nsg rule create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --name allow-http \ --protocol tcp \ --priority 100 \ --destination-port-range 80 \ --access Allow
В целях обучения здесь вы устанавливаете приоритет 100. В данном случае приоритет не имеет значения. Приоритет необходимо учитывать, если у вас есть перекрывающиеся диапазоны портов.
Для проверки конфигурации выполните команду
az network nsg rule list
, чтобы увидеть обновленный список правил:az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \ --output table
Отображается правило по умолчанию allow-ssh и новое правило allow-http:
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow allow-http 100 80 Allow
Задача 4. Повторный доступ к веб-серверу
Теперь, когда вы настроили сетевой доступ к порту 80, давайте попытаемся получить доступ к веб-серверу во второй раз.
Примечание.
После обновления группы безопасности сети может потребоваться несколько минут для распространения обновленных правил. Повторите следующий шаг, делая паузы между попытками, пока не будут получены нужные результаты.
Выполните ту же команду
curl
, которую выполняли ранее:curl --connect-timeout 5 http://$IPADDRESS
Вы увидите следующий ответ:
<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
В качестве дополнительного шага обновите вкладку браузера, в которой указан ваш веб-сервер. Вы увидите домашнюю страницу:
Отличная работа! На практике вы можете создать изолированную группу безопасности сети, которая включает в себя необходимые вам правила входящего и исходящего сетевого доступа. Если имеется несколько виртуальных машин, которые используются для одной цели, вы можете назначать эту группу безопасности сети каждой виртуальной машине во время ее создания. Таким образом вы сможете контролировать сетевой доступ к нескольким виртуальным машинам с помощью единого центрального набора правил.
Очистка
Когда вы завершите работу с этим модулем, песочница автоматически очистит ваши ресурсы.
Если вы работаете в собственной подписке, в конце проекта следует решить, нужны ли вам созданные ресурсы. Оставленные работающими ресурсы могут создавать затраты. Вы можете удалить ресурсы по отдельности либо удалить всю группу ресурсов.