Упражнение. Маршрутизация трафика через NVA
После создания сетевого виртуального модуля (NVA) и виртуальных машин (VM) вы будете перенаправлять трафик через NVA.
Создание общедоступных и частных виртуальных машин
В следующих действиях выполняется развертывание виртуальной машины в общедоступной и частной подсетях.
Откройте редактор Cloud Shell и создайте файл с именем cloud-init.txt.
code cloud-init.txt
Добавьте в файл приведенные ниже сведения о конфигурации. При такой конфигурации пакет
inetutils-traceroute
устанавливается при создании новой виртуальной машины. Пакет содержит служебную программуtraceroute
, которая будет использоваться далее в этом упражнении.#cloud-config package_upgrade: true packages: - inetutils-traceroute
Нажмите клавиши CTRL + S, чтобы сохранить файл, и затем клавиши CTRL + Q, чтобы закрыть редактор.
Выполните в Cloud Shell приведенную ниже команду, чтобы создать общедоступную виртуальную машину. Замените
<password>
на подходящий пароль для учетной записи azureuser.az vm create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name public \ --vnet-name vnet \ --subnet publicsubnet \ --image Ubuntu2204 \ --admin-username azureuser \ --no-wait \ --custom-data cloud-init.txt \ --admin-password <password>
Выполните следующую команду, чтобы создать частную виртуальную машину. Замените
<password>
на подходящий пароль.az vm create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name private \ --vnet-name vnet \ --subnet privatesubnet \ --image Ubuntu2204 \ --admin-username azureuser \ --no-wait \ --custom-data cloud-init.txt \ --admin-password <password>
Чтобы убедиться, что виртуальные машины работают, выполните приведенную ниже команду Linux
watch
. Командаwatch
периодически запускает командуaz vm list
, чтобы вы могли отслеживать работу виртуальных машин.watch -d -n 5 "az vm list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --show-details \ --query '[*].{Name:name, ProvisioningState:provisioningState, PowerState:powerState}' \ --output table"
Значение "Успешно" для параметра ProvisioningState и значение "Виртуальная машина выполняется" для параметра PowerState указывают на успешное развертывание. После запуска всех трех виртуальных машин можно двигаться дальше. Нажмите клавиши CTRL + C, чтобы остановить выполнение команды и продолжить работу с упражнением.
Выполните следующую команду, чтобы сохранить общедоступный IP-адрес общедоступной виртуальной машины в переменной с именем
PUBLICIP
.PUBLICIP="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name public \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $PUBLICIP
Выполните следующую команду, чтобы сохранить общедоступный IP-адрес частной виртуальной машины в переменной с именем
PRIVATEIP
.PRIVATEIP="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name private \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $PRIVATEIP
Тестирование маршрутизации трафика через сетевой виртуальный модуль
На последних этапах для просмотра маршрутизации трафика используется служебная программа Linux traceroute
. Вы будете использовать команду ssh
для запуска traceroute
на каждой виртуальной машине. Первый тест позволяет просмотреть маршрут, по которому следуют пакеты ICMP, отправляемые из общедоступной виртуальной машины в частную. Второй тест покажет маршрут, по которому следуют пакеты ICMP, отправляемые из частной виртуальной машины в общедоступную.
Выполните приведенную ниже команду, чтобы отследить маршрут от общедоступной к частной виртуальной машине. При появлении запроса введите указанный ранее пароль для учетной записи azureuser.
ssh -t -o StrictHostKeyChecking=no azureuser@$PUBLICIP 'traceroute private --type=icmp; exit'
При отображении сообщения об ошибке
bash: traceroute: command not found
подождите минуту и выполните команду повторно. После развертывания виртуальной машины автоматическая установкаtraceroute
может занять одну-две минуты. После успешного выполнения команды результат должен выглядеть, как в следующем примере:traceroute to private.kzffavtrkpeulburui2lgywxwg.gx.internal.cloudapp.net (10.0.1.4), 64 hops max 1 10.0.2.4 0.710ms 0.410ms 0.536ms 2 10.0.1.4 0.966ms 0.981ms 1.268ms Connection to 52.165.151.216 closed.
Обратите внимание на то, что первым прыжком является 10.0.2.4. Это частный IP-адрес nva. Второй прыжок — это адрес частной виртуальной машины (10.0.1.4). В первом упражнении вы добавили этот маршрут в таблицу маршрутов и связали таблицу с подсетью publicsubnet. Поэтому теперь весь трафик из общедоступной виртуальной машины в частную перенаправляется через NVA.
Выполните приведенную ниже команду, чтобы отследить маршрут от частной до общедоступной виртуальной машины. При появлении запроса введите пароль для учетной записи azureuser.
ssh -t -o StrictHostKeyChecking=no azureuser@$PRIVATEIP 'traceroute public --type=icmp; exit'
Как показано в выходных данных команды ниже, трафик передается в общедоступную виртуальную машину (10.0.0.4) напрямую, а не через NVA.
traceroute to public.kzffavtrkpeulburui2lgywxwg.gx.internal.cloudapp.net (10.0.0.4), 64 hops max 1 10.0.0.4 1.095ms 1.610ms 0.812ms Connection to 52.173.21.188 closed.
Частная виртуальная машина использует маршруты по умолчанию, и трафик передается между подсетями напрямую.
Итак, вы настроили маршрутизацию между подсетями, чтобы трафик из общедоступного Интернета передавался в частную подсеть через подсеть dmzsubnet. В подсети dmzsubnet вы добавили виртуальную машину, выступающую в качестве NVA. В этом модуле NVA можно настроить обнаружение потенциально вредоносных запросов и блокировку их передачи в место назначения.