Краткое руководство. Создание шлюза NAT с помощью Azure PowerShell

Из этого краткого руководства вы узнаете, как создать шлюз NAT с помощью PowerShell. Служба шлюза NAT обеспечивает исходящее подключение для виртуальных машин в Azure.

Схема ресурсов, созданных в кратком руководстве по шлюзу NAT.

Необходимые компоненты

  • Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .

  • Azure Cloud Shell или Azure PowerShell.

    Действия, описанные в этом кратком руководстве, запускают командлеты Azure PowerShell в интерактивном режиме в Azure Cloud Shell. Чтобы выполнить команды в Cloud Shell, выберите Open Cloudshell в правом верхнем углу блока кода. Выберите "Копировать", чтобы скопировать код, а затем вставьте его в Cloud Shell, чтобы запустить его. Вы также можете запустить Cloud Shell из портал Azure.

    Вы также можете установить Azure PowerShell локально для выполнения командлетов. Для действий, описанных в этой статье, требуется модуль Azure PowerShell версии 5.4.1 или более поздней. Выполните Get-Module -ListAvailable Az, чтобы узнать установленную версию. Если вам нужно обновить модуль Azure PowerShell, см . статью об обновлении модуля Azure PowerShell.

Создание или изменение группы ресурсов

Создайте группу ресурсов с помощью командлета New-AzResourceGroup. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.

В следующем примере создается группа ресурсов с именем test-rg в расположении eastus2 :

$rsg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rsg

Создание шлюза NAT

Мы создадим в этом разделе шлюз NAT и вспомогательные ресурсы.

  • Для доступа к Интернету требуется один или несколько общедоступных IP-адресов для шлюза NAT. Используйте New-AzPublicIpAddress , чтобы создать ресурс общедоступного IP-адреса с именем public-ip-nat в test-rg.

  • Создайте глобальный шлюз Azure NAT с помощью командлета New-AzNatGateway. В результате этой команды будет создан ресурс шлюза с именем NAT-gateway , использующий общедоступный IP-адрес public-ip-nat. Установите время ожидания простоя на 10 минут.

  • Создайте виртуальную сеть с именем vnet-1 с подсетью с именем subnet-1 с помощью New-AzVirtualNetworkSubnetConfig в test-rg с помощью New-AzVirtualNetwork. Диапазон IP-адресов для виртуальной сети: 10.0.0.0/16. Подсеть в виртуальной сети: 10.0.0.0/24.

  • Создайте узел Бастиона Azure с именем бастиона для доступа к виртуальной машине. Используйте командлет New-AzBastion, чтобы создать узел-бастион. Чтобы создать общедоступный IP-адрес узла-бастиона, используйте командлет New-AzPublicIpAddress.

## Create public IP address for NAT gateway ##
$ip = @{
    Name = 'public-ip-nat'
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
    Zone = 1,2,3
}
$publicIP = New-AzPublicIpAddress @ip

## Create NAT gateway resource ##
$nat = @{
    ResourceGroupName = 'test-rg'
    Name = 'nat-gateway'
    IdleTimeoutInMinutes = '10'
    Sku = 'Standard'
    Location = 'eastus2'
    PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat

## Create subnet config and associate NAT gateway to subnet##
$subnet = @{
    Name = 'subnet-1'
    AddressPrefix = '10.0.0.0/24'
    NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet 

## Create Azure Bastion subnet. ##
$bastsubnet = @{
    Name = 'AzureBastionSubnet' 
    AddressPrefix = '10.0.1.0/26'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet

## Create the virtual network ##
$net = @{
    Name = 'vnet-1'
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    AddressPrefix = '10.0.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

## Create public IP address for bastion host. ##
$ip = @{
    Name = 'public-ip'
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
    Zone = 1,2,3
}
$publicip = New-AzPublicIpAddress @ip

## Create bastion host ##
$bastion = @{
    Name = 'bastion'
    ResourceGroupName = 'test-rg'
    PublicIpAddressRgName = 'test-rg'
    PublicIpAddressName = 'public-ip'
    VirtualNetworkRgName = 'test-rg'
    VirtualNetworkName = 'vnet-1'
    Sku = 'Basic'
}
New-AzBastion @bastion

Узел бастиона может занять несколько минут. Дождитесь развертывания узла бастиона, прежде чем перейти к следующему разделу.

Виртуальная машина

Используя сведения из этого раздела, вы создадите виртуальную машину для тестирования шлюза NAT и проверки общедоступного IP-адреса исходящего подключения.

# Set the administrator and password for the VMs. ##
$cred = Get-Credential

## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'

## Create network interface for virtual machine. ##
$nic = @{
    Name = "nic-1"
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic

## Create a virtual machine configuration for VMs ##
$vmsz = @{
    VMName = 'vm-1'
    VMSize = 'Standard_DS1_v2'  
}
$vmos = @{
    ComputerName = 'vm-1'
    Credential = $cred
}
$vmimage = @{
    PublisherName = 'Canonical'
    Offer = '0001-com-ubuntu-server-jammy'
    Skus = '22_04-lts-gen2'
    Version = 'latest'     
}
$vmConfig = New-AzVMConfig @vmsz `
    | Set-AzVMOperatingSystem @vmos -Linux `
    | Set-AzVMSourceImage @vmimage `
    | Add-AzVMNetworkInterface -Id $nicVM.Id

## Create the virtual machine for VMs ##
$vm = @{
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    VM = $vmConfig
}
New-AzVM @vm

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

Тестирование шлюза NAT

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

  1. Войдите на портал Azure.

  2. В поле поиска в верхней части портала введите Общедоступный IP-адрес. В результатах поиска выберите элемент Общедоступный IP-адрес.

  3. Выберите public-ip-nat.

  4. Запишите общедоступный IP-адрес:

    Определение общедоступного IP-адреса шлюза NAT

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

  6. Выберите vm-1.

  7. На странице "Обзор" выберите Подключение, а затем перейдите на вкладку Бастион.

  8. Выберите Использовать бастион.

  9. Введите имя пользователя и пароль, введенные в процессе создания виртуальной машины. Нажмите Подключиться.

  10. В командной строке bash введите следующую команду:

    curl ifconfig.me
    
  11. Убедитесь, что IP-адрес, возвращенный командой, соответствует общедоступному IP-адресу шлюза NAT.

    azureuser@vm-1:~$ curl ifconfig.me
    20.7.200.36
    

Очистка ресурсов

Если вы не собираетесь продолжать использовать это приложение, удалите виртуальную сеть, виртуальную машину и шлюз NAT, выполнив следующие действия:

Remove-AzResourceGroup -Name 'test-rg' -Force

Следующие шаги

Дополнительные сведения о шлюзе Azure NAT см. в следующем разделе: