Создание VPN-подключения IPv6 типа «сеть-сеть» в режиме двойного стека с помощью Azure CLI

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

Схема подключения VPN-шлюза типа

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

Действия, описанные в этой статье, создают два подключения между VPN-шлюзом и локальным VPN-устройством с помощью общего ключа. Вы также можете использовать PowerShell для этой конфигурации. Если вы не настраиваете 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 CLI

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

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

ResourceGroup="resource-group-name"
Location="name-of-the-azure-region"
vnetName="VNet1"
VNetAddressPrefixIPv4="10.1.0.0/16"
VNetAddressPrefixIPv6="fd:0:1::/48"
GatewaySubnetPrefix1="10.1.0.0/24"
GatewaySubnetPrefix2="fd:0:1:e::/64"
GatewayName="VNet1GW"

# Name of the first public IP address of the gateway
PublicIP1="${GatewayName}-pip1"
PublicIP2="${GatewayName}-pip2"

# VPN type Route based
VPNType="RouteBased"
GatewayType="Vpn"

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

# create a Resource Group
az group create --name "$ResourceGroup" --location "$location"

# create an Azure VNet
az network vnet create \
  --name "$vnetName" \
  --resource-group "$ResourceGroup" \
  --location "$Location" \
  --address-prefixes "$VNetAddressPrefixIPv4" "$VNetAddressPrefixIPv6"

# create the GatewaySubnet
az network vnet subnet create \
  --name "GatewaySubnet" \
  --vnet-name "$vnetName" \
  --resource-group "$ResourceGroup" \
  --address-prefixes "$GatewaySubnetPrefixIPv4" "$GatewaySubnetPrefixIPv6"

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

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

# create the first public IP of the VPN Gateway
az network public-ip create \
  --name "$PublicIP1" \
  --resource-group "$ResourceGroup" \
  --location "$Location" \
  --allocation-method Static \
  --sku Standard \
  --tier Regional \
  --zone 1 2 3

# create the second public IP of the VPN Gateway
az network public-ip create \
  --name "$PublicIP2" \
  --resource-group "$ResourceGroup" \
  --location "$Location" \
  --allocation-method Static \
  --sku Standard \
  --tier Regional \
  --zone 1 2 3

# Create the VPN Gateway with VpnGw2AZ SKU in active-active mode
az network vnet-gateway create \
  --name "$GatewayName" \
  --resource-group "$ResourceGroup" \
  --location "$Location" \
  --vnet "$vnetName" \
  --gateway-type "$GatewayType" \
  --vpn-type "$VPNType" \
  --sku VpnGw2AZ \
  --public-ip-addresses "$PublicIP1" "$PublicIP2"

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

Vpn-шлюз можно просмотреть с помощью команды az network vnet-gateway show .

az network vnet-gateway show \
  --name "$GatewayName" \
  --resource-group "$ResourceGroup"

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

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

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

  • OnpremDevPubIPv4Address1 — это IP-адрес 1 локального VPN-устройства, а не vpn-шлюза Azure.

  • OnpremDevPubIPv4Address2 — это IP-адрес 2 локального VPN-устройства, а не VPN-шлюза Azure.

# Collect the first public IP assigned to the on-premises VPN device
# replace 'public-IPv4Address1-onpremises-device' with the IPv4 of the first address of your on-premises device
OnpremDevPubIPv4Address1="public-IPv4Address1-onpremises-device"

# Collect the second public IP assigned to the on-premises VPN device
# replace 'public-IPv4Address2-onpremises-device' with the IPv4 of the second address of your on-premises device
OnpremDevPubIPv4Address2="public-IPv4Address2-onpremises-device"

# Local Network Gateway to use to create the IPsec tunnel1
LocalNetworkGatewayName1="lngSite11"

# Local Network Gateway to use to create the IPsec tunnel2
LocalNetworkGatewayName2="lngSite12"

# Specify the list of IPv4 and IPv6 on-premises networks
OnpremIPv4AddressPrefix1="10.2.0.0/16"
OnpremIPv6AddressPrefix1="fd:0:2::/48"
OnpremIPv6AddressPrefix2="fd:0:3::/48"

# local Network Gateway for tunnel1
az network local-gateway create \
  --name "$LocalNetworkGatewayName1" \
  --resource-group "$ResourceGroup" \
  --location "$Location" \
  --gateway-ip-address "$OnpremDevPubIPv4Address1" \
  --local-address-prefixes "$OnpremIPv4AddressPrefix1" "$OnpremIPv6AddressPrefix1" "$OnpremIPv6AddressPrefix2"

# local Network Gateway for tunnel2
az network local-gateway create \
  --name "$LocalNetworkGatewayName2" \
  --resource-group "$ResourceGroup" \
  --location "$Location" \
  --gateway-ip-address "$OnpremDevPubIPv4Address2" \
  --local-address-prefixes "$OnpremIPv4AddressPrefix1" "$OnpremIPv6AddressPrefix1" "$OnpremIPv6AddressPrefix2"

Настройка устройства 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-устройства.

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

LocalNetworkGatewayName1="lngSite11"
LocalNetworkGatewayName2="lngSite22"
Gateway1Name="VNet1GW"
ConnectionName1="conn11"
ConnectionName2="conn12"
sharedKey='abc123'

Создайте подключения.

# Create the VPN connection for the S2S tunnel1
az network vpn-connection create \
  --name "$ConnectionName1" \
  --resource-group "$ResourceGroup" \
  --location "$Location" \
  --vnet-gateway1 "$Gateway1Name" \
  --local-gateway2 "$LocalNetworkGatewayName1" \
  --shared-key "$sharedKey"

az network vpn-connection create \
  --name "$ConnectionName2" \
  --resource-group "$ResourceGroup" \
  --location "$Location" \
  --vnet-gateway1 "$Gateway1Name" \
  --local-gateway2 "$LocalNetworkGatewayName2" \
  --shared-key "$sharedKey"

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

Чтобы получить список VPN-подключения в группе ресурсов, выполните указанные ниже действия.

az network vpn-connection list \
  --resource-group "$ResourceGroup" \
  --output table

Вы можете убедиться, что подключение выполнено успешно с помощью az network vpn-connection show команды.

az network vpn-connection show \
  --name "$ConnectionName1" \
  --resource-group "$ResourceGroup"

Выходные данные команды можно отфильтровать, чтобы извлечь только ConnectionStatus и ProvisioningState:

az network vpn-connection show \
  --name "$ConnectionName1" \
  --resource-group "$ResourceGroup" \
  --query "{ProvisioningState:provisioningState, ConnectionStatus:connectionStatus}"

Успешное развертывание и правильная настройка должны возвращать следующее:

{
  "ConnectionStatus": "Connected",
  "ProvisioningState": "Succeeded"
}

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

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

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

Параметр --local-address-address-prefixes заменяет все существующие префиксы новыми значениями. Обязательно включите все префиксы, которые вы хотите сохранить. В этом примере мы добавим два новых префикса:

az network local-gateway update \
  --name "$LocalNetworkGatewayName1" \
  --resource-group "$ResourceGroup" \
  --local-address-prefixes "10.2.0.0/16" "10.5.0.0/16" "fd:0:2::/48" "fd:0:3::/48" "fd:0:5::/48"

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

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

Проверьте префиксы сети, указанные в шлюзе локальной сети.

# View current prefixes
az network local-gateway show \
  --name "$LocalNetworkGatewayName1" \
  --resource-group "$ResourceGroup" \
  --query "localNetworkAddressSpace.addressPrefixes"

Обновите с использованием измененного списка.

# Then update with the modified list
az network local-gateway update \
  --name "$LocalNetworkGatewayName1" \
  --resource-group "$ResourceGroup" \
  --local-address-prefixes "10.2.0.0/16" "fd:0:2::/48" "fd:0:3::/48"

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

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

# get the public IP of Local network Gateway
az network local-gateway show \
  --name "$LocalNetworkGatewayName1" \
  --resource-group "$ResourceGroup" \
  --query "gatewayIpAddress" -o tsv

# change the gateway IP address of the Local Network Gateway
az network local-gateway update \
  --name "$LocalNetworkGatewayName1" \
  --resource-group "$ResourceGroup" \
  --gateway-ip-address "198.51.100.1"

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

Если вы не знаете имя подключения, его можно найти с помощью az network vpn-connection delete команды.

# Delete connection 1
az network vpn-connection delete \
  --name "$ConnectionName1" \
  --resource-group "$ResourceGroup"

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