Упражнение. Маршрутизация трафика через NVA

Завершено

После создания сетевого виртуального модуля (NVA) и виртуальных машин (VM) вы будете перенаправлять трафик через NVA.

Visualization of virtual machines and IP addresses.

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

В следующих действиях выполняется развертывание виртуальной машины в общедоступной и частной подсетях.

  1. Откройте редактор Cloud Shell и создайте файл с именем cloud-init.txt.

    code cloud-init.txt
    
  2. Добавьте в файл приведенные ниже сведения о конфигурации. При такой конфигурации пакет inetutils-traceroute устанавливается при создании новой виртуальной машины. Пакет содержит служебную программу traceroute, которая будет использоваться далее в этом упражнении.

    #cloud-config
    package_upgrade: true
    packages:
       - inetutils-traceroute
    
  3. Нажмите клавиши CTRL + S, чтобы сохранить файл, и затем клавиши CTRL + Q, чтобы закрыть редактор.

  4. Выполните в 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>
    
  5. Выполните следующую команду, чтобы создать частную виртуальную машину. Замените <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>
    
  6. Чтобы убедиться, что виртуальные машины работают, выполните приведенную ниже команду 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, чтобы остановить выполнение команды и продолжить работу с упражнением.

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

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

    Diagram of route from public to private.

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

    Частная виртуальная машина использует маршруты по умолчанию, и трафик передается между подсетями напрямую.

    Diagram of route from private to public.

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