Создание VPN-подключения типа "сеть — сеть" в двойном стеке с помощью Azure PowerShell

В этой статье показано, как создать подключение VPN-шлюза типа "сеть — сеть" в двойном стеке IPv4 и IPv6 из вашей локальной сети в виртуальную сеть (VNet) с помощью Azure PowerShell.

Диаграмма подключения VPN-шлюза

Подключение VPN-шлюза типа "сеть — сеть" используется для подключения локальной сети к виртуальной сети Azure через VPN-туннель IPsec/IKE. Для этого типа подключения требуется VPN-устройство, расположенное локально, которому назначены общедоступные IP-адреса. Текущая конфигурация VPN типа "сеть — сеть" с поддержкой двойного стека позволяет только IPv6-трафик во внутреннем туннеле. Внутренний трафик IPv6 поддерживается исключительно с помощью IKEv2.

Действия, описанные в этой статье, создают два подключения между VPN-шлюзом и локальным VPN-устройством с помощью общего ключа. Для этой конфигурации также можно использовать ИНТЕРФЕЙС командной строки . Если вы не настраиваете IPv4-адреса вместе с IPv6-адресами, можно использовать портал Azure. Дополнительные сведения о VPN-шлюзах см. в разделе "Сведения о VPN-шлюзе".

Перед тем как начать

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

  • Убедитесь, что у вас есть функционирующий маршрутизированный VPN-шлюз. Сведения о создании VPN-шлюза см. в статье "Создание VPN-шлюза".

  • Если вы не знаете диапазоны IP-адресов в своей конфигурации локальной сети, найдите того, кто сможет предоставить вам нужную информацию. При создании этой конфигурации необходимо указать префиксы диапазона IP-адресов, которые Azure маршрутизирует в локальное расположение. Ни одна из подсетей локальной сети не может перекрываться с подсетями виртуальной сети, к которым требуется подключиться.

  • VPN-устройства:

    • Убедитесь, что у вас есть совместимое VPN-устройство и пользователь, который может его настроить. Дополнительные сведения о совместимых VPN-устройствах и конфигурации устройств см. в разделе "Сведения о VPN-устройствах".

    • Определите, поддерживает ли VPN-устройство шлюзы активного режима. В этой статье создается VPN-шлюз в активно-активном режиме, который рекомендуется для высокодоступного соединения. Режим "Активный-активный" указывает, что оба экземпляра виртуальной машины шлюза активны. В этом режиме требуется два общедоступных IP-адреса, по одному для каждого экземпляра виртуальной машины шлюза. Вы настраиваете свое Vpn-устройство для подключения к IP-адресу каждого экземпляра виртуальной машины шлюза.

      Если VPN-устройство не поддерживает этот режим, не включите этот режим для шлюза. Дополнительные сведения см. в разделах Проектирование высокодоступного подключения для кросс-площадочных и VNet-to-VNet подключений и О VPN-шлюзах в режиме active-active.

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

Azure PowerShell

В этой статье используются командлеты PowerShell. Для выполнения командлетов можно использовать Azure Cloud Shell или PowerShell, установленные локально на компьютере. Если вы используете PowerShell локально, убедитесь, что установлен последний модуль Azure PowerShell. Инструкции по установке см. в разделе Install Azure PowerShell.

Назначьте переменные, используемые в конфигурации.

$ResourceGroup = 'resource-group-name'
$Location = 'name-of-the-azure-region'
$vnetName = 'VNet1'
$VNetAddressPrefix = "10.1.0.0/16", "fd:0:1::/48"
$WorkloadSubnetName = 'subnet1'
$GatewaySubnet = @('10.1.0.0/24', 'fd:0:1:e::/64')
$WorkloadSubnet = @('10.1.1.0/24', 'fd:0:1:1::/64')
$GatewayName = 'gw1'

# name of the first and second public IP of the VPN Gateway
$PublicIP1 = "$GatewayName-pip1"
$PublicIP2 = "$GatewayName-pip2"

# name of the configurations of the VPN Gateway
$GatewayIPConfig1 = "$GatewayName-ipconfig1"
$GatewayIPConfig2 = "$GatewayName-ipconfig2"

# VPN type Route based
$VPNType = 'RouteBased'

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

# Create the configuration for the GatewaySubnet
$subnet1 = New-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix $GatewaySubnet

# Create the configuration for the workload subnet
$subnet2 = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $Subnet

# create the VNet with name specified in the variable $vnetName
New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $ResourceGroup `
  -Location $Location `
  -AddressPrefix $VNetAddressPrefix `
  -Subnet $subnet1, $subnet2

Создание VPN-шлюза

Azure VPN Gateway развертывается с зональным номером SKU в шлюзеSubnet. В активном режиме требуется два общедоступных IP-адреса с номером SKU уровня "Стандартный". Создайте общедоступные IP-адреса и создайте VPN-шлюз.

# create the first public IP for the VPN Gateway
$gwpip1 = New-AzPublicIpAddress -Name $PublicIP1 -ResourceGroupName $ResourceGroup -Location $Location -AllocationMethod Static -Sku Standard -Tier Regional -Zone 1,2,3

# create the second public IP for the VPN Gateway
$gwpip2 = New-AzPublicIpAddress -Name $PublicIP2 -ResourceGroupName $ResourceGroup -Location $Location -AllocationMethod Static -Sku Standard -Tier Regional -Zone 1,2,3

# Create the VPN Gateway with VpnGw2AZ SKU in active-active mode
New-AzVirtualNetworkGateway -Name $GatewayName -ResourceGroupName $ResourceGroup `
  -Location $Location -IpConfigurations $gwipconfig1, $gwipconfig2 `
  -GatewayType $GatewayType `
  -VpnType Vpn -GatewaySku VpnGw2AZ -EnableActiveActiveFeature

Просмотр VPN-шлюза

Просмотреть VPN-шлюз можно с помощью командлета Get-AzVirtualNetworkGateway.

Get-AzVirtualNetworkGateway -Name $GatewayName -ResourceGroup $ResourceGroup

Создание локального сетевого шлюза

Локальный сетевой шлюз (ЛСШ) ссылается на вашу локальную или внутреннюю сеть. Это не то же самое, что и шлюз виртуальной сети. VPN-шлюз поддерживает статическую маршрутизацию и динамическую маршрутизацию через BGP. В этой статье статическая маршрутизация настраивается в туннелях IPsec. Присвойте сайту имя, с помощью которого Azure может ссылаться на него, а затем укажите IP-адрес локального VPN-устройства, к которому вы создадите подключение. Вы также указываете префиксы IP-адреса, которые направляются через VPN-шлюз на VPN-устройство. Префиксы адресов, которые вы указываете, находятся в вашей локальной сети. При изменении локальной сети можно легко обновить префиксы.

Используйте следующие значения:

  • public-IP1-onpremises-device — это IP-адрес 1 локального VPN-устройства, а не VPN-шлюз Azure.
  • public-IP2-onpremises-device — это IP-адрес 2 локального VPN-устройства, а не VPN-шлюз Azure.
# Collect the first public IP assigned to the on-premises VPN device
# replace public-IP1-onpremises-device with the IP1 of your on-premises device
$OnpremIpAddress1 = 'public-IP1-onpremises-device'

# Collect the second public IP assigned to the on-premises VPN device
# replace public-IP2-onpremises-device with the IP2 of your on-premises device
$OnpremIpAddress2 = 'public-IP2-onpremises-device'

# Define the name of local network gateway to use to create the IPsec tunnel1
$LocalNetworkGatewayName1 = 'lngSite11'

# Define the name of local network gateway to use to create the IPsec tunnel2
$LocalNetworkGatewayName2 = 'lngSite12'

# Specify the list of IPv4 and IPv6 on-premises networks
$LocalAddressPrefixes = @("10.0.0.0/16", "fd:0:2::/48", "fd:0:3::/48")

New-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 `
  -ResourceGroupName $ResourceGroup `
  -Location $Location `
  -GatewayIpAddress $OnpremIpAddress1 `
  -AddressPrefix $LocalAddressPrefixes

New-AzLocalNetworkGateway -Name $LocalNetworkGatewayName2 `
  -ResourceGroupName $ResourceGroup `
  -Location $Location `
  -GatewayIpAddress $OnpremIpAddress2 `
  -AddressPrefix $LocalAddressPrefixes

Настройка устройства VPN

Для подключения "сеть — сеть" к локальной сети требуется VPN-устройство. Сведения о настройке устройства см. в разделе "Настройка VPN-устройства". При настройке VPN-устройства вам потребуется следующее:

  • Общий ключ: этот общий ключ совпадает с тем же ключом, который указывается при создании VPN-подключения типа "сеть — сеть". В наших примерах мы используем простой общий ключ. Рекомендуется создать более сложный ключ для использования.

  • Общедоступные IP-адреса экземпляров шлюза виртуальной сети: получение IP-адреса для каждого экземпляра виртуальной машины. Если шлюз находится в активно-активном режиме, у вас будет IP-адрес для каждого экземпляра виртуальной машины шлюза. Не забудьте настроить устройство с обоими IP-адресами, по одному для каждой виртуальной машины активного шлюза.

Обязательно настройте VPN-устройство для подключения к обоим IP-адресам шлюза VPN-шлюза активного режима. Если VPN-устройство не поддерживает режим "активный— активный", вы по-прежнему можете подключиться к обоим IP-адресам шлюза, но одновременно будет активно только одно подключение. Дополнительные сведения см. в разделах Проектирование высокодоступного подключения для кросс-площадочных и VNet-to-VNet подключений и О VPN-шлюзах в режиме active-active.

Создание VPN-подключений

Создайте VPN-подключения типа "сеть — сеть" между шлюзом виртуальной сети и локальным VPN-устройством. Вы используете шлюз активного режима, поэтому каждый экземпляр виртуальной машины шлюза имеет отдельный IP-адрес. Чтобы правильно настроить высокодоступное подключение, необходимо установить туннель между каждым экземпляром виртуальной машины и VPN-устройством. Оба туннеля являются частью одного подключения. Если шлюз локальной сети и шлюз виртуальной сети находятся в разных подписках и разных клиентах, см. раздел "Подключения с разными клиентами и различными подписками ".

Общий ключ должен соответствовать значению, использованному в конфигурации VPN-устройства. Обратите внимание, что параметр -ConnectionType для типа "сеть — сеть" — IPsec.

  1. Задайте переменные.

    $ConnectionName1 = 'conn11'
    $ConnectionName2 = 'conn12'
    $LocalNetworkGatewayName1 = 'lngSite11'
    $LocalNetworkGatewayName2 = 'lngSite12'
    $SharedKey = 'abc123'
    
    # collect the VPN Gateway and store the object in the variable $gateway
    $gateway = Get-AzVirtualNetworkGateway -Name $Gateway1Name -ResourceGroupName $ResourceGroup
    
    # Collect the local network gateway for the S2S tunnel1
    $localNetw1 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 -ResourceGroupName $ResourceGroup
    
    # Collect the local network gateway for the S2S tunnel2
    $localNetw2 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName2 -ResourceGroupName $ResourceGroup
    
  2. Создайте подключения.

    # Create the VPN connection for the S2S tunnel1
    New-AzVirtualNetworkGatewayConnection -Name $ConnectionName1 `
      -ResourceGroupName $ResourceGroup `
      -Location $Location `
      -VirtualNetworkGateway1 $gateway `
      -LocalNetworkGateway2 $localNetw1 `
      -ConnectionType IPsec -SharedKey $SharedKey
    
    # Create the VPN connection for the S2S tunnel2
    New-AzVirtualNetworkGatewayConnection -Name $ConnectionName2 `
      -ResourceGroupName $ResourceGroup `
      -Location $Location `
      -VirtualNetworkGateway1 $gateway1 `
      -LocalNetworkGateway2 $localNetw2 `
      -ConnectionType IPsec -SharedKey $SharedKey
    

Проверка VPN-подключения

Вы можете убедиться, что подключение выполнено успешно, используя командлет Get-AzVirtualNetworkGatewayConnection, с или без -Debug.

  1. Используйте командлет из следующего примера, изменив значения в соответствии с вашими требованиями. Если появится запрос, выберите A, чтобы запустить Все. В этом примере -Name ссылается на имя подключения, которое требуется проверить.

    Get-AzVirtualNetworkGatewayConnection -Name $ConnectionName1 -ResourceGroupName $ResourceGroup
    
  2. После завершения работы командлета ознакомьтесь со значениями. В следующем примере состояние подключения отображается как "Подключено ", и вы можете видеть входящие и исходящие байты.

    "connectionStatus": "Connected",
    "ingressBytesTransferred": 33509044,
    "egressBytesTransferred": 4142431
    

Изменение префиксов IP-адресов для шлюза локальной сети

Если префиксы IP-адресов, которые вы хотите маршрутизировать в ваше локальное расположение, изменятся, вы можете изменить шлюз локальной сети. При использовании этих примеров измените значения в соответствии с вашей средой.

Добавление дополнительных префиксов адресов

Задайте переменную для LocalNetworkGateway.

$local1 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 -ResourceGroupName $ResourceGroup

Измените префиксы. Указанные значения перезаписывают предыдущие значения.

Set-AzLocalNetworkGateway -LocalNetworkGateway $local1 `
  -AddressPrefix @('10.0.0.0/16','10.5.0.0/16', 'fd:0:2::/48', 'fd:0:3::/48','fd:0:5::/48')

Удаление префиксов адресов

Оставьте префиксы, которые больше не нужны. В этом примере нам больше не нужен префикс fd:0:5::/48 (из предыдущего примера), поэтому мы обновим шлюз локальной сети и исключим этот префикс.

Задайте переменную для LocalNetworkGateway.

$local1 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 `
  -ResourceGroupName $ResourceGroup

Установка шлюза с обновленными префиксами

Set-AzLocalNetworkGateway -LocalNetworkGateway $local1 `
  -AddressPrefix @("10.0.0.0/16", "fd:0:2::/48")

Изменение IP-адреса шлюза для шлюза локальной сети

При изменении общедоступного IP-адреса для VPN-устройства необходимо изменить шлюз локальной сети с обновленным IP-адресом. При изменении этого значения можно также изменять префиксы адресов одновременно. При изменении обязательно используйте существующее имя шлюза локальной сети.

# retrieve the local network gateway
$local1 = Get-AzLocalNetworkGateway -Name $LocalNetworkGatewayName1 `
  -ResourceGroupName $ResourceGroup

# assign the new value to the public IP of the Local Network Gateway
$local1.GatewayIpAddress = "5.4.3.2"

# commit the change
Set-AzLocalNetworkGateway -LocalNetworkGateway $local1

Удалить подключение шлюза

Если вы не знаете имя подключения, его можно найти с помощью командлета Get-AzVirtualNetworkGatewayConnection .

Remove-AzVirtualNetworkGatewayConnection -Name $ConnectionName1 `
  -ResourceGroupName $ResourceGroup

Дальнейшие действия