Настройка подключения VPN-шлюза между виртуальными сетями с помощью Azure CLI
Эта статья поможет установить подключение "виртуальная сеть — виртуальная сеть" между виртуальными сетями. Виртуальные сети могут относиться к одному или разным регионам и к одной или разным подпискам. При подключении виртуальных сетей из разных подписок подписки не нужно связываться с тем же клиентом.
В этом упражнении вы создадите необходимые виртуальные сети (виртуальные сети) и VPN-шлюзы. У нас есть шаги по подключению виртуальных сетей в одной подписке, а также действия и команды для более сложного сценария подключения виртуальных сетей в разных подписках.
Команда Azure CLI для создания подключения — az network vpn-connection. Если вы подключаетесь к виртуальным сетям из разных подписок, выполните действия, описанные в этой статье или в статье PowerShell . Если у вас уже есть виртуальные сети, которые вы хотите подключить, и они есть в той же подписке, вы можете использовать портал Azure шаги вместо этого, так как процесс менее сложный. Обратите внимание, что вы не можете подключать виртуальные сети из разных подписок с помощью портал Azure.
Сведения о подключении виртуальных сетей
Подключить виртуальные сети можно несколькими способами. В следующих разделах описаны различные способы подключения виртуальных сетей.
Подключение типа "виртуальная сеть — виртуальная сеть"
Чтобы легко подключать виртуальные сети, рекомендуем настроить подключение "виртуальная сеть — виртуальная сеть". Подключение "виртуальная сеть — виртуальная сеть" между виртуальными сетями похоже на создание подключения "сеть — сеть" (IPsec) к локальному расположению. В обоих типах подключений применяется VPN-шлюз для создания защищенного туннеля, использующего IPsec/IKE. При обмене данными оба типа подключений работают одинаково. Различие между этими типами заключается в способе настройки шлюза локальной сети. При создании подключения между виртуальными сетями адресное пространство шлюза локальной сети не отображается. Он автоматически создается и заполняется. Если вы обновите диапазон адресов для одной виртуальной сети, другая виртуальная сеть автоматически определит маршрут к обновленному диапазону адресов. Создание подключения между виртуальными сетями обычно выполняется быстрее и проще, чем создание подключения типа "сеть — сеть" между виртуальными сетями, но не обеспечивает такой же уровень гибкости, если требуется добавить другое подключение, так как адресное пространство шлюза локальной сети недоступно для изменения вручную.
Подключение виртуальных сетей по типу "сеть — сеть" (IPsec)
Если вы работаете с сложной конфигурацией сети, вы можете подключить виртуальные сети с помощью шагов "сеть — сеть " вместо шагов виртуальной сети к виртуальной сети. Используя подключение "сеть — сеть", вы вручную создаете и настраиваете локальные сетевые шлюзы. Шлюз локальной сети для каждой виртуальной сети воспринимает другую виртуальную сеть как локальный сайт. Это позволяет указать дополнительные адресные пространства для шлюза локальной сети для маршрутизации трафика. Если диапазон адресов для виртуальной сети изменится, вам потребуется вручную обновить соответствующий шлюз локальной сети, чтобы отразить эти изменения. Он не обновляется автоматически.
Пиринговая связь между виртуальными сетями
Вам может потребоваться подключить виртуальные сети с помощью пиринга виртуальных сетей. При пиринге виртуальных сетей не используется VPN-шлюз и применяются другие ограничения. Кроме того, цены на пиринг виртуальных сетей рассчитываются не так, как цены на VPN-шлюз "виртуальная сеть — виртуальная сеть". Дополнительную информацию см. в статье Пиринговая связь между виртуальными сетями.
Зачем создавать подключение "виртуальная сеть — виртуальная сеть"?
Возможно, потребуется подключить виртуальные сети с помощью подключения между виртуальными сетями по следующим причинам:
Межрегиональная географическая избыточность и географическое присутствие
- Вы можете настроить собственную георепликацию или синхронизацию с безопасной связью без прохождения трафика через конечные точки с выходом в Интернет.
- С помощью Azure Load Balancer и диспетчера трафика можно настроить высокодоступную рабочую нагрузку с геоизбыточностью в нескольких регионах Azure. Одним из важных примеров является настройка SQL Always On с группами доступности, распределенными между несколькими регионами Azure.
Региональные многоуровневые приложения с изоляцией или административной границей
- В одном регионе можно настроить многоуровневые приложения с несколькими виртуальными сетями, которые связаны друг с другом из-за требований к изоляции или административных требований.
Подключение типа "виртуальная сеть — виртуальная сеть" можно комбинировать с многосайтовыми конфигурациями. Это позволяет настраивать топологии сети, совмещающие распределенные подключения с подключениями между виртуальными сетями.
Какие действия по созданию подключения "виртуальная сеть — виртуальная сеть" следует использовать?
В этой статье приведены два разных набора действий по созданию подключения "виртуальная сеть — виртуальная сеть". Один предназначен для виртуальных сетей в одной подписке, а другой — для виртуальных сетей в разных подписках.
Для этого вы можете объединить конфигурации или выбрать ту, с которой предпочитаете работать. Во всех конфигурациях используется подключение "виртуальная сеть — виртуальная сеть". Сетевой трафик передается между виртуальными сетями, которые напрямую подключены друг к другу.
Подключение виртуальных сетей из одной подписки
Подготовка к работе
Перед началом работы установите последнюю версию команд интерфейса командной строки (версию 2.0 или более позднюю). Сведения об установке команд CLI см. в руководстве по установке Azure.
Планирование диапазонов IP-адресов
Далее мы создадим две виртуальные сети с соответствующими конфигурациями и подсетями шлюзов. Затем мы создадим VPN-подключение между двумя виртуальными сетями. В конфигурации сети важно задать диапазоны IP-адресов. Имейте в виду, необходимо убедиться в том, что ни один из диапазонов виртуальных сетей или диапазонов локальных сетей никак не перекрываются. В этих примерах мы не добавим DNS-сервер. Сведения о разрешении имен виртуальных машин см. в этой статье.
В примерах мы используем следующие значения:
Значения для TestVNet1:
- Имя виртуальной сети: TestVNet1
- Группа ресурсов: TestRG1.
- Расположение: восточная часть США
- TestVNet1: 10.11.0.0/16 и 10.12.0.0/16
- FrontEnd: 10.11.0.0/24
- BackEnd: 10.12.0.0/24
- GatewaySubnet: 10.12.255.0/27
- Имя шлюза: VNet1GW
- Общедоступный IP-адрес: VNet1GWIP
- Тип VPN: RouteBased
- Подключение (1–4): VNet1toVNet4
- Подключение (1–5): VNet1toVNet5 (для виртуальных сетей в разных подписках)
Значения для TestVNet4:
- Имя виртуальной сети: TestVNet4
- TestVNet2: 10.41.0.0/16 и 10.42.0.0/16
- FrontEnd: 10.41.0.0/24
- BackEnd: 10.42.0.0/24
- GatewaySubnet: 10.42.255.0/27
- Группа ресурсов: TestRG4
- Расположение: Западная часть США
- Имя шлюза: VNet4GW
- Общедоступный IP-адрес: VNet4GWIP
- Тип VPN: на основе маршрутов
- Подключение: VNet4toVNet1
Шаг 1. Подключение к подписке
Если вы хотите локально использовать Azure CLI (вместо Azure CloudShell), выполните следующие действия для подключения к подписке Azure. Если вы используете CloudShell, перейдите к следующему разделу.
Войдите в свою подписку Azure с помощью команды az login и следуйте инструкциям на экране. Дополнительные сведения о входе в систему см. в статье Начало работы с Azure CLI.
az login
Если у вас есть несколько подписок Azure, укажите подписки для этой учетной записи.
az account list --all
укажите подписку, которую нужно использовать;
az account set --subscription <replace_with_your_subscription_id>
Шаг 2. Создание и настройка TestVNet1
Создать группу ресурсов.
az group create -n TestRG1 -l eastus
Создайте TestVNet1 и подсети для TestVNet1 с помощью команды az network vnet create . Пример ниже создает виртуальная сеть TestVNet1 и подсеть FrontEnd.
az network vnet create \ -n TestVNet1 \ -g TestRG1 \ -l eastus \ --address-prefix 10.11.0.0/16 \ --subnet-name Frontend \ --subnet-prefix 10.11.0.0/24
Создайте дополнительное адресное пространство для внутренней подсети. Обратите внимание, что на этом шаге мы указали как адресное пространство, созданное ранее, так и дополнительное адресное пространство, которое мы хотим добавить. Это связано с тем, что команда az network vnet update перезаписывает предыдущие параметры. При использовании этой команды обязательно укажите все префиксы адресов.
az network vnet update \ -n TestVNet1 \ --address-prefixes 10.11.0.0/16 10.12.0.0/16 \ -g TestRG1
Создайте внутреннюю подсеть.
az network vnet subnet create \ --vnet-name TestVNet1 \ -n BackEnd \ -g TestRG1 \ --address-prefix 10.12.0.0/24
Создайте подсеть шлюза. Обратите внимание, что подсети шлюза присвоено имя GatewaySubnet. Это обязательное имя. В этом примере в подсети шлюза используется длина префикса /27. Хотя можно создать подсеть шлюза меньше /29, рекомендуется создать большую подсеть, содержащую больше адресов, выбрав по крайней мере /28 или /27. Это позволит достаточно адресов для размещения возможных дополнительных конфигураций, которые могут потребоваться в будущем.
az network vnet subnet create \ --vnet-name TestVNet1 \ -n GatewaySubnet \ -g TestRG1 \ --address-prefix 10.12.255.0/27
VPN-шлюз должен иметь общедоступный IP-адрес. Общедоступный IP-адрес выделяется VPN-шлюзу, создаваемому для виртуальной сети. Используйте следующий пример, чтобы запросить общедоступный IP-адрес с помощью команды az network public-ip create :
az network public-ip create \ -g TestRG1 \ -n VNet1GWIP1 \ --sku Standard \ --allocation-method Static \ --l eastus
Создайте шлюз виртуальной сети для TestVNet1 с помощью команды az network vnet-gateway create . При выполнении этой команды с использованием параметра --no-wait вы не увидите ответа или выходных данных. Этот параметр позволяет создать шлюз в фоновом режиме. Это не означает, что VPN-шлюз завершает создание немедленно. Этот процесс часто занимает 45 минут и более, в зависимости от используемого номера SKU-шлюза.
az network vnet-gateway create \ --name VNet1GW \ --public-ip-address VNet1GWIP \ --resource-group TestRG1 \ --vnet TestVNet1 \ --gateway-type Vpn \ --sku VpnGw2 \ --vpn-gateway-generation Generation2 \ --no-wait
Шаг 3. Создание и настройка TestVNet4
Создать группу ресурсов.
az group create -n TestRG4 -l westus
Создайте TestVNet4.
az network vnet create \ -n TestVNet4 \ -g TestRG4 \ -l westus \ --address-prefix 10.41.0.0/16 \ --subnet-name Frontend \ --subnet-prefix 10.41.0.0/24
Создайте дополнительную подсеть для TestVNet4.
az network vnet update \ -n TestVNet4 \ --address-prefixes 10.41.0.0/16 10.42.0.0/16 \ -g TestRG4 \
az network vnet subnet create \ --vnet-name TestVNet4 \ -n BackEnd \ -g TestRG4 \ --address-prefix 10.42.0.0/24
Создайте подсеть шлюза.
az network vnet subnet create \ --vnet-name TestVNet4 \ -n GatewaySubnet \ -g TestRG4 \ --address-prefix 10.42.255.0/27
Запросите общедоступный IP-адрес.
az network public-ip create \ -g TestRG4 \ --n VNet4GWIP \ --sku Standard \ --allocation-method Static \ --l westus
Создайте шлюз виртуальной сети TestVNet4.
az network vnet-gateway create \ -n VNet4GW \ -l westus \ --public-ip-address VNet4GWIP \ -g TestRG4 \ --vnet TestVNet4 \ --gateway-type Vpn \ --sku VpnGw2 \ --vpn-gateway-generation Generation2 \ --no-wait
Шаг 4. Создание подключений
Теперь у вас есть две виртуальные сети с VPN-шлюзами. Далее необходимо установить подключения VPN-шлюза между шлюзами виртуальной сети. Если вы использовали предыдущие примеры, шлюзы виртуальной сети находятся в разных группах ресурсов. В этом случае при установке подключения необходимо определить и задать идентификаторы ресурсов для каждого шлюза. Если виртуальные сети находятся в той же группе ресурсов, используйте второй набор инструкций, так как указывать идентификаторы ресурсов не нужно.
Подключение виртуальных сетей, расположенных в разных группах ресурсов
Получите идентификатор ресурса VNet1GW из выходных данных следующей команды:
az network vnet-gateway show -n VNet1GW -g TestRG1
В выходных данных найдите строку
"id:"
. Значения в кавычках понадобятся при создании подключения в следующем разделе. Скопируйте эти значения в текстовый редактор, например Блокнот, чтобы их можно было быстро вставить при создании подключения.Пример результата:
"activeActive": false, "bgpSettings": { "asn": 65515, "bgpPeeringAddress": "10.12.255.30", "peerWeight": 0 }, "enableBgp": false, "etag": "W/\"ecb42bc5-c176-44e1-802f-b0ce2962ac04\"", "gatewayDefaultSite": null, "gatewayType": "Vpn", "id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW", "ipConfigurations":
Скопируйте значения после
"id":
кавычки."id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW"
Получите идентификатор ресурса VNet4GW и скопируйте эти значения в текстовый редактор.
az network vnet-gateway show -n VNet4GW -g TestRG4
Создайте подключение между TestVNet1 и TestVNet4. На этом шаге вы создадите подключение между TestVNet1 и TestVNet4. В примерах указан общий ключ. Можно использовать собственные значения для общего ключа. Важно, чтобы общий ключ в обоих подключениях был одинаковым. Создание подключения занимает некоторое время.
az network vpn-connection create \ -n VNet1ToVNet4 \ -g TestRG1 \ --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW \ -l eastus \ --shared-key "aabbcc" \ --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG4/providers/Microsoft.Network/virtualNetworkGateways/VNet4GW
Создайте подключение между TestVNet4 и TestVNet1. Этот шаг аналогичен предыдущему шагу, за исключением того, что вы создаете подключение из TestVNet4 к TestVNet1. Убедитесь, что общие ключи совпадают. Установка подключения занимает несколько минут.
az network vpn-connection create \ -n VNet4ToVNet1 \ -g TestRG4 \ --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG4/providers/Microsoft.Network/virtualNetworkGateways/VNet4GW \ -l westus \ --shared-key "aabbcc" \ --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW
Проверьте подключения. Дополнительные сведения см. в разделе Проверка подключений.
Подключение виртуальных сетей, расположенных в той же группе ресурсов
Создайте подключение между TestVNet1 и TestVNet4. На этом шаге вы создадите подключение между TestVNet1 и TestVNet4. Обратите внимание, что группы ресурсов в этих примерах совпадают. В этих примерах вы также увидите ссылки на общий ключ. Вы можете использовать собственные значения общего ключа, но они должны совпадать для обоих подключений. Создание подключения занимает некоторое время.
az network vpn-connection create \ -n VNet1ToVNet4 \ -g TestRG1 \ --vnet-gateway1 VNet1GW \ -l eastus \ --shared-key "eeffgg" \ --vnet-gateway2 VNet4GW
Создайте подключение между TestVNet4 и TestVNet1. Этот шаг аналогичен предыдущему шагу, за исключением того, что вы создаете подключение из TestVNet4 к TestVNet1. Убедитесь, что общие ключи совпадают. Установка подключения занимает несколько минут.
az network vpn-connection create \ -n VNet4ToVNet1 \ -g TestRG1 \ --vnet-gateway1 VNet4GW \ -l eastus \ --shared-key "eeffgg" \ --vnet-gateway2 VNet1GW
Проверьте подключения. Дополнительные сведения см. в разделе Проверка подключений.
Подключение виртуальных сетей из разных подписок
В этом сценарии мы создадим подключение между TestVNet1 и TestVNet5. Виртуальные сети находятся в разных подписках. Подписки не должны быть связаны с тем же клиентом. В этой конфигурации добавляется дополнительное подключение между виртуальными сетями для подключения TestVNet1 к TestVNet5.
Шаг 5. Создание и настройка TestVNet1
Перед выполнением этих инструкций следует выполнить действия в предыдущих разделах. Чтобы создать и настроить сеть TestVNet1 и VPN-шлюз для нее, необходимо выполнить шаг 1 и шаг 2. Для этой конфигурации не требуется создать TestVNet4 из предыдущего раздела, хотя при его создании трафик не будет конфликтовать с этими шагами: трафик из TestVNet4 не направляется в TestVNet5. Завершив шаг 1 и шаг 2, перейдите к шагу 6.
Шаг 6. Проверка диапазонов IP-адресов
При создании дополнительных подключений важно убедиться, что пространство IP-адресов новой виртуальной сети не перекрывается с другими диапазонами виртуальных сетей или диапазонами шлюзов локальной сети. В этом упражнении используйте следующие значения для сети TestVNet5.
Значения для TestVNet5:
- Имя виртуальной сети: TestVNet5
- Группа ресурсов: TestRG5
- Расположение: Восточная Япония
- TestVNet5: 10.51.0.0/16 и 10.52.0.0/16
- FrontEnd: 10.51.0.0/24
- BackEnd: 10.52.0.0/24
- Подсеть шлюза: 10.52.255.0/27
- Имя шлюза: VNet5GW
- Общедоступный IP-адрес: VNet5GWIP
- Тип VPN: на основе маршрутов
- Подключение: VNet5toVNet1
- Тип подключения: VNet2VNet
Шаг 7. Создание и настройка TestVNet5
Это действие необходимо выполнить в контексте новой подписки — подписки 5. Эта часть может выполняться администратором в другой организации, которая владеет подпиской. Чтобы переключиться между подписками, используйте команду az account set --subscription <subscriptionID>
, чтобы вывести список подписок для учетной записи, а затем используйте команду az account list --all
, чтобы переключиться на нужную подписку.
Убедитесь, что вы подключены к подписке 5, а затем создайте группу ресурсов.
az group create -n TestRG5 -l japaneast
Создайте TestVNet5.
az network vnet create \ -n TestVNet5 \ -g TestRG5 \ --address-prefix 10.51.0.0/16 \ -l japaneast \ --subnet-name FrontEnd \ --subnet-prefix 10.51.0.0/24
Добавьте подсети.
az network vnet update \ -n TestVNet5 \ --address-prefixes 10.51.0.0/16 10.52.0.0/16 \ -g TestRG5 \
az network vnet subnet create \ --vnet-name TestVNet5 \ -n BackEnd \ -g TestRG5 \ --address-prefix 10.52.0.0/24
Добавьте подсеть шлюза.
az network vnet subnet create \ --vnet-name TestVNet5 \ -n GatewaySubnet \ -g TestRG5 \ --address-prefix 10.52.255.0/27
Запросите общедоступный IP-адрес.
az network public-ip create \ -g TestRG5 \ --n VNet5GWIP \ --sku Standard \ --allocation-method Static \ --l japaneast
Создание шлюза TestVNet5
az network vnet-gateway create \ -n VNet5GW \ -l japaneast \ --public-ip-address VNet5GWIP \ -g TestRG5 \ --vnet TestVNet5 \ --gateway-type Vpn \ --sku VpnGw2 \ --vpn-gateway-generation Generation2 \ --no-wait
Шаг 8. Создание подключений
Так как шлюзы находятся в разных подписках, мы разделили этот шаг на два сеанса интерфейса командной строки, обозначенные [Подписка 1] и [Подписка 5]. Чтобы переключиться между подписками, используйте команду az account set --subscription <subscriptionID>
, чтобы вывести список подписок для учетной записи, а затем используйте команду az account list --all
, чтобы переключиться на нужную подписку.
[подписка 1] Войдите и подключитесь к подписке 1. Чтобы получить имя и идентификатор шлюза из выходных данных, выполните следующую команду:
az network vnet-gateway show -n VNet1GW -g TestRG1
Скопируйте выходные данные для
id:
. Отправьте идентификатор и имя шлюза виртуальной сети (VNet1GW) администратору подписки 5 по электронной почте или другим способом.Пример результата:
"id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW"
[подписка 5] Войдите и подключитесь к подписке 5. Чтобы получить имя и идентификатор шлюза из выходных данных, выполните следующую команду:
az network vnet-gateway show -n VNet5GW -g TestRG5
Скопируйте выходные данные для
id:
. Отправьте идентификатор и имя шлюза виртуальной сети (VNet5GW) администратору подписки 1 по электронной почте или другим способом.[Подписка 1]. На этом шаге вы создадите подключение между TestVNet1 и TestVNet5. Вы можете использовать собственные значения общего ключа, но они должны совпадать для обоих подключений. Создание подключения может занять некоторое время. Обязательно подключитесь к подписке 1.
az network vpn-connection create \ -n VNet1ToVNet5 \ -g TestRG1 \ --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW \ -l eastus \ --shared-key "eeffgg" \ --vnet-gateway2 /subscriptions/e7e33b39-fe28-4822-b65c-a4db8bbff7cb/resourceGroups/TestRG5/providers/Microsoft.Network/virtualNetworkGateways/VNet5GW
[подписка 5] Этот шаг аналогичен предыдущему шагу, за исключением того, что вы создаете подключение из TestVNet5 к TestVNet1. Убедитесь, что общие ключи совпадают и что вы подключились к подписке 5.
az network vpn-connection create \ -n VNet5ToVNet1 \ -g TestRG5 \ --vnet-gateway1 /subscriptions/e7e33b39-fe28-4822-b65c-a4db8bbff7cb/resourceGroups/TestRG5/providers/Microsoft.Network/virtualNetworkGateways/VNet5GW \ -l japaneast \ --shared-key "eeffgg" \ --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW
Проверка подключений
Внимание
Группы безопасности сети (NSG) в подсети шлюза не поддерживаются. Связывание группы безопасности сети с этой подсетью может привести к остановке работы шлюза виртуальной сети (VPN и шлюзов ExpressRoute). Дополнительные сведения о группах безопасности сети см. в статье Группа безопасности сети.
Убедиться в успешном выполнении подключения можно с помощью команды az network vpn-connection show. В примере параметр "--name" — это имя подключения, которое требуется проверить. Когда подключение устанавливается, это отображено соответствующим образом (состояние "Подключение"). После установки подключения его состояние изменяется на "Подключено". Настройте следующий пример, указав значения для своей среды.
az network vpn-connection show --name <connection-name> --resource-group <resource-group-name>
Часто задаваемые вопросы о подключениях типа "виртуальная сеть — виртуальная сеть"
Дополнительные сведения о подключение "виртуальная сеть — виртуальная сеть" см. в часто задаваемых вопросах о виртуальной сети.
Следующие шаги
- Установив подключение, можно добавить виртуальные машины в виртуальные сети. Дополнительные сведения см. в документации по виртуальным машинам.
- Сведения о BGP см. в статьях Обзор использования BGP с VPN-шлюзами Azure и Настройка BGP на VPN-шлюзах Azure с помощью Azure Resource Manager и PowerShell.