Настройка BGP для Azure VPN-шлюз: CLI
В этой статье описано, как включить VPN-подключения типа "сеть — сеть" (S2S) bGP на нескольких локальных vpn-подключениях и подключениях между виртуальными сетями с помощью Azure CLI. Эту конфигурацию можно также создать с помощью шагов портал Azure или PowerShell.
Стандартный протокол маршрутизации BGP обычно используется в Интернете для обмена данными о маршрутизации и доступности между двумя или несколькими сетями. Протокол BGP используется VPN-шлюзами Azure и локальными VPN-устройствами (так называемыми одноранговыми узлами BGP) для обмена данными о маршрутах. Это позволяет информировать участников обмена о доступности и возможности передавать трафик для определенных сетей через шлюзы или маршрутизаторы. Также BGP позволяет передавать трафик транзитом через несколько сетей. Для этого шлюз BGP распространяет на все известные ему узлы BGP информацию о маршрутах, полученную от остальных узлов BGP.
Дополнительные сведения о преимуществах BGP и о технических требованиях и рекомендациях по использованию BGP см. в разделе о BGP и Azure VPN-шлюз.
Все части этой статьи помогут вам создать базовые блоки для использования BGP в вашей сети. Если вы завершите все три части (настройте BGP на шлюзе, подключении S2S и подключении между виртуальными сетями) вы создадите топологию, как показано на схеме 1.
Схема 1
Вы можете объединять разделы для создания более сложных, многоскачковых и транзитных сетей в соответствии со своими задачами.
Необходимые компоненты
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Включение BGP для VPN-шлюза
Выполните действия в этом разделе, прежде чем выполнять какие-либо шаги в остальных двух разделах конфигурации. Следующие действия по настройке настраивают параметры BGP VPN-шлюза Azure, как показано на схеме 2.
Схема 2
Создание и настройка TestVNet1
1. Создание группы ресурсов
В следующем примере создается группа ресурсов с именем TestRG1 в расположении eastus. Если у вас уже есть группа ресурсов в регионе, где вы хотите создать виртуальную сеть, вы можете воспользоваться ею.
az group create --name TestRG1 --location eastus
2. Создание TestVNet1
В примере ниже создается виртуальная сеть с именем TestVNet1 и три подсети: GatewaySubnet, FrontEnd и BackEnd. При замене значений важно, чтобы вы назвали подсеть шлюза именем GatewaySubnet. Если вы используете другое имя, создание шлюза завершится сбоем.
Первая команда создает адресное пространство переднего плана и подсеть FrontEnd. Вторая команда создает дополнительное адресное пространство для подсети BackEnd. Третья и четвертая команды создают подсеть BackEnd и GatewaySubnet.
az network vnet create -n TestVNet1 -g TestRG1 --address-prefix 10.11.0.0/16 --subnet-name FrontEnd --subnet-prefix 10.11.0.0/24
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
az network vnet subnet create --vnet-name TestVNet1 -n GatewaySubnet -g TestRG1 --address-prefix 10.12.255.0/27
Создание VPN-шлюза для TestVNet1 с параметрами BGP
1. Создание общедоступного IP-адреса
Запросите общедоступный IP-адрес. VPN-шлюзу, созданному для виртуальной сети, выделяется общедоступный IP-адрес.
az network public-ip create -n GWPubIP -g TestRG1 --allocation-method Dynamic
2. Создание VPN-шлюза с номером AS
Создайте шлюз для виртуальной сети TestVNet1. BGP требует VPN-шлюз на основе маршрута. Необходим также дополнительный параметр -Asn
, чтобы задать номер автономной системы для TestVNet1. Создание шлюза часто занимает 45 минут и более, в зависимости от выбранного SKU шлюза.
При выполнении этой команды с использованием параметра --no-wait
вы не увидите ответа или выходных данных. Параметр --no-wait
позволяет создать шлюз в фоновом режиме. Это не означает, что VPN-шлюз создается немедленно.
az network vnet-gateway create -n VNet1GW -l eastus --public-ip-address GWPubIP -g TestRG1 --vnet TestVNet1 --gateway-type Vpn --sku HighPerformance --vpn-type RouteBased --asn 65010 --no-wait
С помощью созданного шлюза можно установить подключение между локальными или виртуальными сетями с использованием BGP.
3. Получение IP-адреса для узла BGP Azure
После создания шлюза необходимо получить IP-адрес для узла BGP на VPN-шлюзе Azure. Этот адрес нужен, чтобы VPN-шлюз мог выполнять роль узла BGP для локальных VPN-устройств.
Выполните следующую команду.
az network vnet-gateway list -g TestRG1
Запишите bgpSettings
раздел в верхней части выходных данных. Вы будете использовать это
"bgpSettings": {
"asn": 65010,
"bgpPeeringAddress": "10.12.255.30",
"peerWeight": 0
}
Если вы не видите BgpPeeringAddress в качестве IP-адреса, шлюз по-прежнему настроен. Повторите попытку после завершения шлюза.
Создание подключения между локальными сетями с использованием BGP
Чтобы установить подключение между локальными сетями, нужно создать локальный сетевой шлюз, который будет представлять локальное VPN-устройство. Затем необходимо создать подключение между VPN-шлюзом и шлюзом локальной сети. Хотя эти шаги похожи на создание других подключений, они включают дополнительные свойства, необходимые для указания параметра конфигурации BGP, как показано на схеме 3.
Схема 3
Создание и настройка шлюза локальной сети
В этом подразделе мы продолжим создание конфигурации, которая представлена на схеме. Не забудьте заменить значения теми, которые вы хотите использовать для конфигурации. При работе со шлюзами локальной сети учитывайте следующее:
- Локальный сетевой шлюз может находиться в том же расположении, что и VPN-шлюз, или в любом другом. Это же справедливо в отношении групп ресурсов. В нашем примере шлюзы располагаются в разных группах ресурсов и расположениях.
- Минимальный префикс, который необходимо объявить для локального сетевого шлюза — это IP-адрес узла BGP на вашем VPN-устройстве. В нашем примере это префикс /32 для адреса 10.51.255.254/32.
- Вы также можете оставить префикс пустым, если вы используете BGP для подключения к этой сети. VPN-шлюз Azure добавит внутренний маршрут IP-адреса однорангового узла BGP в соответствующий туннель IPsec.
- Не забывайте, что для локальных сетей и виртуальной сети Azure должны быть указаны разные номера ASN BGP. Если они одинаковы, необходимо изменить asN виртуальной сети, если локальные VPN-устройства уже используют ASN для пиринга с другими соседями BGP.
Прежде чем продолжить, убедитесь, что вы выполнили раздел "Включить BGP" для VPN-шлюза этого упражнения. Обратите внимание, что в этом примере создается группа ресурсов. Обратите внимание также на два дополнительных параметра локального сетевого шлюза: Asn
и BgpPeerAddress
.
az group create -n TestRG5 -l westus
az network local-gateway create --gateway-ip-address 23.99.221.164 -n Site5 -g TestRG5 --local-address-prefixes 10.51.255.254/32 --asn 65050 --bgp-peering-address 10.51.255.254
Подключение шлюза виртуальной сети и шлюза локальной сети
На этом шаге вы создадите подключение между TestVNet1 и Site5. Необходимо указать параметр --enable-bgp
, чтобы включить протокол BGP для этого подключения.
В этом примере шлюз виртуальной и локальной сети находятся в разных группах ресурсов. Если шлюзы находятся в разных группах ресурсов, необходимо полностью указать идентификатор ресурса двух шлюзов, чтобы настроить подключение между виртуальными сетями.
1. Получение идентификатора ресурса VNet1GW
Используйте выходные данные следующей команды, чтобы получить идентификатор ресурса для VNet1GW:
az network vnet-gateway show -n VNet1GW -g TestRG1
В выходных данных найдите строку "id":
. Значения в кавычках понадобятся для создания подключения в следующем разделе.
Пример результата:
{
"activeActive": false,
"bgpSettings": {
"asn": 65010,
"bgpPeeringAddress": "10.12.255.30",
"peerWeight": 0
},
"enableBgp": true,
"etag": "W/\"<your etag number>\"",
"gatewayDefaultSite": null,
"gatewayType": "Vpn",
"id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW",
Скопируйте значения после "id":
в текстовый редактор, например Блокнот, чтобы их можно было быстро вставить при создании подключения.
"id": "/subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW"
2. Получение идентификатора ресурса Site5
Выполните следующую команду, чтобы получите идентификатор ресурса Site5 из выходных данных:
az network local-gateway show -n Site5 -g TestRG5
3. Создание подключения между TestVNet1 и Site5
На этом шаге вы создадите подключение между TestVNet1 и Site5. Как упоминалось ранее, можно использовать подключения BGP и не BGP для одного VPN-шлюза Azure. Если BGP не включен в свойстве подключения, Azure не будет включать BGP для этого подключения, даже если параметры BGP уже настроены в обоих шлюзах. Замените идентификатор подписки собственным идентификатором.
az network vpn-connection create -n VNet1ToSite5 -g TestRG1 --vnet-gateway1 /subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW --enable-bgp -l eastus --shared-key "abc123" --local-gateway2 /subscriptions/<subscription ID>/resourceGroups/TestRG5/providers/Microsoft.Network/localNetworkGateways/Site5
Конфигурация локального устройства
В следующем примере перечислены параметры, которые следует ввести в разделе конфигурации BGP на локальном VPN-устройстве для нашего упражнения.
- Site5 ASN : 65050
- Site5 BGP IP : 10.51.255.254
- Prefixes to announce : (for example) 10.51.0.0/16
- Azure VNet ASN : 65010
- Azure VNet BGP IP : 10.12.255.30
- Static route : Add a route for 10.12.255.30/32, with nexthop being the VPN tunnel interface on your device
- eBGP Multihop : Ensure the "multihop" option for eBGP is enabled on your device if needed
Подключение должно установиться через несколько минут. Сразу после создания подключения IPsec начнется сеанс пиринга BGP.
Создание подключения между виртуальными сетями с использованием BGP
В этом разделе добавляется подключение виртуальной сети к виртуальной сети с BGP, как показано на схеме 4.
Схема 4
Приведенные ниже инструкции продолжают действия, описанные в предыдущих разделах. Выполните шаги из раздела Включение BGP для VPN-шлюза, чтобы создать и настроить TestVNet1 и VPN-шлюз с BGP.
Создание TestVNet2 и VPN-шлюза
Важно убедиться, что пространство IP-адресов новой виртуальной сети TestVNet2 не перекрывается ни с какими диапазонами виртуальных сетей.
В этом примере виртуальные сети относятся к одной подписке. Вы можете создавать подключения между виртуальным сетями из разных подписок. Дополнительные сведения см. в статье Настройка подключения VPN-шлюза между виртуальными сетями с помощью Azure CLI. Чтобы использовать для подключения протокол BGP, обязательно укажите параметр -EnableBgp $True
при создании подключения.
1. Создание новой группы ресурсов
az group create -n TestRG2 -l eastus
2. Создание TestVNet2 в новой группе ресурсов
Первая команда создает адресное пространство переднего плана и подсеть FrontEnd. Вторая команда создает дополнительное адресное пространство для подсети BackEnd. Третья и четвертая команды создают подсеть BackEnd и GatewaySubnet.
az network vnet create -n TestVNet2 -g TestRG2 --address-prefix 10.21.0.0/16 --subnet-name FrontEnd --subnet-prefix 10.21.0.0/24
az network vnet update -n TestVNet2 --address-prefixes 10.21.0.0/16 10.22.0.0/16 -g TestRG2
az network vnet subnet create --vnet-name TestVNet2 -n BackEnd -g TestRG2 --address-prefix 10.22.0.0/24
az network vnet subnet create --vnet-name TestVNet2 -n GatewaySubnet -g TestRG2 --address-prefix 10.22.255.0/27
3. Создание общедоступного IP-адреса
Запросите общедоступный IP-адрес. VPN-шлюзу, созданному для виртуальной сети, выделяется общедоступный IP-адрес.
az network public-ip create -n GWPubIP2 -g TestRG2 --allocation-method Dynamic
4. Создание VPN-шлюза с номером AS
Создайте шлюз для виртуальной сети TestVNet2. Номер ASN по умолчанию необходимо переопределить для ваших VPN-шлюзов Azure. Номера ASN для подключенных виртуальных сетей должны быть разными, чтобы работал протокол BGP и транзитная маршрутизация.
az network vnet-gateway create -n VNet2GW -l eastus --public-ip-address GWPubIP2 -g TestRG2 --vnet TestVNet2 --gateway-type Vpn --sku Standard --vpn-type RouteBased --asn 65020 --no-wait
Подключение шлюзов TestVNet1 и TestVNet2
На этом шаге вы создадите подключение между TestVNet1 и Site5. Необходимо указать параметр --enable-bgp
, чтобы включить протокол BGP для этого подключения.
В следующем примере шлюз виртуальной и локальной сети находятся в разных группах ресурсов. Если шлюзы находятся в разных группах ресурсов, необходимо полностью указать идентификатор ресурса двух шлюзов, чтобы настроить подключение между виртуальными сетями.
1. Получение идентификатора ресурса VNet1GW
Получите идентификатор ресурса VNet1GW из выходных данных следующей команды:
az network vnet-gateway show -n VNet1GW -g TestRG1
Пример значения для ресурса шлюза:
"/subscriptions/<subscription ID value>/resourceGroups/TestRG2/providers/Microsoft.Network/virtualNetworkGateways/VNet2GW"
2. Получение идентификатора ресурса VNet2GW
Получите идентификатор ресурса VNet2GW из выходных данных следующей команды:
az network vnet-gateway show -n VNet2GW -g TestRG2
3. Создание подключений
Создайте подключение из TestVNet1 к TestVNet2, а также подключение из TestVNet2 к TestVNet1. Эти команды используют идентификаторы ресурсов. В этом упражнении большая часть идентификатора ресурса уже находится в примере. Обязательно замените значения идентификатора подписки собственными. Идентификатор подписки используется в нескольких местах в одной команде. При использовании этой команды для рабочей среды вы замените весь идентификатор ресурса для каждого объекта, на который ссылается ссылка.
az network vpn-connection create -n VNet1ToVNet2 -g TestRG1 --vnet-gateway1 /subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW --enable-bgp -l eastus --shared-key "abc123" --vnet-gateway2 /subscriptions/<subscription ID>/resourceGroups/TestRG2/providers/Microsoft.Network/virtualNetworkGateways/VNet2GW
az network vpn-connection create -n VNet2ToVNet1 -g TestRG2 --vnet-gateway1 /subscriptions/<subscription ID>/resourceGroups/TestRG2/providers/Microsoft.Network/virtualNetworkGateways/VNet2GW --enable-bgp -l eastus --shared-key "abc123" --vnet-gateway2 /subscriptions/<subscription ID>/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW
Внимание
Включите BGP для обоих подключений.
Подключение будет установлено через несколько минут после выполнения этих действий. Сразу после создания подключения между виртуальными сетями начнется сеанс пиринга BGP.
Следующие шаги
Дополнительные сведения о BGP см. в разделе "О BGP" и VPN-шлюз.