Настройка BGP для Azure VPN-шлюз: CLI

Эта статья поможет вам включить BGP для vpn-подключений типа "сеть — сеть" (S2S) и подключений типа "виртуальная сеть — виртуальная сеть" с помощью 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

Схема, показывающая конфигурацию IPsec.

Создание и настройка шлюза локальной сети

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

  • Локальный сетевой шлюз может находиться в том же расположении, что и VPN-шлюз, или в любом другом. Это же справедливо в отношении групп ресурсов. В нашем примере шлюзы располагаются в разных группах ресурсов и расположениях.
  • Минимальный префикс, который необходимо объявить для локального сетевого шлюза — это IP-адрес узла BGP на вашем VPN-устройстве. В нашем примере это префикс /32 для адреса 10.51.255.254/32.
  • Не забывайте, что для локальных сетей и виртуальной сети 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. Как упоминалось ранее, для одного VPN-шлюза Azure можно использовать подключения BGP и подключения, отличные от BGP. Если 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/<subscripion 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-шлюз.