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

Эта статья поможет вам включить BGP для vpn-подключений типа "сеть — сеть" (S2S) и подключений типа "виртуальная сеть — виртуальная сеть" с помощью Azure PowerShell. Если вы не знакомы с этим типом конфигурации, возможно, вам будет проще использовать портал Azure версию этой статьи.

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

Дополнительные сведения о преимуществах BGP, а также о технических требованиях и рекомендациях по использованию BGP см. в статье Сведения о BGP и Azure VPN-шлюз.

Начало работы

Все части этой статьи помогут вам создать базовые блоки для использования BGP в вашей сети. Если выполнить все три этапа (настройка BGP на шлюзе, подключение S2S и подключение типа "виртуальная сеть — виртуальная сеть") вы создадите топологию, как показано на схеме 1. Вы можете объединять разделы для создания более сложных, многоскачковых и транзитных сетей в соответствии со своими задачами.

Схема 1

Схема, показывающая сетевую архитектуру и параметры.

Включение BGP для VPN-шлюза

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

Схема 2

Схема, показывающая параметры шлюза виртуальной сети.

Подготовка к работе

Действия для этого упражнения можно выполнить с помощью azure Cloud Shell в браузере. Если вы хотите использовать PowerShell непосредственно с компьютера, установите командлеты Azure Resource Manager PowerShell. См. дополнительные сведения об установке и настройке командлетов Azure PowerShell.

Создание и настройка VNet1

1. Объявление переменных

В этом упражнении мы начнем с объявления переменных. В примере ниже объявлены переменные со значениями для этого упражнения. Чтобы ознакомиться с этим типом конфигурации, можно использовать примеры переменных (за исключением имени подписки). Измените все переменные, а затем скопируйте и вставьте их в консоль PowerShell. Обязательно замените значения своими при настройке для рабочей среды.

$Sub1 = "Replace_With_Your_Subscription_Name"
$RG1 = "TestRG1"
$Location1 = "East US"
$VNetName1 = "TestVNet1"
$FESubName1 = "FrontEnd"
$BESubName1 = "Backend"
$GWSubName1 = "GatewaySubnet"
$VNetPrefix11 = "10.11.0.0/16"
$VNetPrefix12 = "10.12.0.0/16"
$FESubPrefix1 = "10.11.0.0/24"
$BESubPrefix1 = "10.12.0.0/24"
$GWSubPrefix1 = "10.12.255.0/27"
$VNet1ASN = 65010
$DNS1 = "8.8.8.8"
$GWName1 = "VNet1GW"
$GWIPName1 = "VNet1GWIP"
$GWIPconfName1 = "gwipconf1"
$Connection12 = "VNet1toVNet2"
$Connection15 = "VNet1toSite5"

2. Подключение к подписке Azure и создание группы ресурсов

Для работы с командлетами Resource Manager необходимо переключиться в режим PowerShell. Дополнительные сведения см. в статье Использование Azure PowerShell с диспетчером ресурсов Azure.

Если вы используете azure Cloud Shell, вы автоматически подключаетесь к своей учетной записи. Если вы используете PowerShell с компьютера, откройте консоль PowerShell и подключитесь к своей учетной записи. Для подключения используйте следующий пример.

Connect-AzAccount
Select-AzSubscription -SubscriptionName $Sub1
New-AzResourceGroup -Name $RG1 -Location $Location1

Затем создайте группу ресурсов.

New-AzResourceGroup -Name $RG1 -Location $Location1

3. Создание TestVNet1

В примере ниже создается виртуальная сеть с именем TestVNet1 и три подсети: GatewaySubnet, FrontEnd и Backend. При замене значений важно, чтобы вы назвали подсеть шлюза именем GatewaySubnet. Если вы используете другое имя, создание шлюза завершится сбоем.

$fesub1 = New-AzVirtualNetworkSubnetConfig -Name $FESubName1 -AddressPrefix $FESubPrefix1
$besub1 = New-AzVirtualNetworkSubnetConfig -Name $BESubName1 -AddressPrefix $BESubPrefix1
$gwsub1 = New-AzVirtualNetworkSubnetConfig -Name $GWSubName1 -AddressPrefix $GWSubPrefix1

New-AzVirtualNetwork -Name $VNetName1 -ResourceGroupName $RG1 -Location $Location1 -AddressPrefix $VNetPrefix11,$VNetPrefix12 -Subnet $fesub1,$besub1,$gwsub1

Создание VPN-шлюза с включенным протоколом BGP

1. Создание IP-адресов и настройка подсети

Запросите общедоступный IP-адрес, который будет выделен шлюзу, который вы создадите для виртуальной сети. Также следует определить необходимые конфигурации подсети и IP-адресов.

$gwpip1 = New-AzPublicIpAddress -Name $GWIPName1 -ResourceGroupName $RG1 -Location $Location1 -AllocationMethod Dynamic

$vnet1 = Get-AzVirtualNetwork -Name $VNetName1 -ResourceGroupName $RG1
$subnet1 = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet1
$gwipconf1 = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfName1 -Subnet $subnet1 -PublicIpAddress $gwpip1

2. Создание VPN-шлюза с номером AS

Создайте шлюз для виртуальной сети TestVNet1. Для BGP требуется Route-Based VPN-шлюза, а также дополнительный параметр -Asn , чтобы задать ASN (AS Number) для TestVNet1. Обязательно укажите параметр -Asn . Если параметр -Asn не задан, по умолчанию назначается ASN 65515 (который не подходит для этой конфигурации). Создание шлюза может занять некоторое время (45 минут или более).

New-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1 -Location $Location1 -IpConfigurations $gwipconf1 -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn $VNet1ASN

С помощью созданного шлюза можно установить подключение между локальными или виртуальными сетями с использованием BGP.

3. Получение IP-адреса однорангового узла Azure BGP

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

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

При необходимости восстановите переменные:

$RG1 = "TestRG1"
$GWName1 = "VNet1GW"

Выполните следующую команду и запишите значение BgpPeeringAddress из выходных данных.

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1
$vnet1gw.BgpSettingsText

Выходные данные примера:

$vnet1gw.BgpSettingsText
{
    "Asn": 65010,
    "BgpPeeringAddress": "10.12.255.30",
    "PeerWeight": 0
}

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

Создание подключения между локальными сетями с использованием BGP

Чтобы установить соединение между локальными сетями, нужно создать локальный сетевой шлюз, который будет представлять локальное VPN-устройство, а также подключение между VPN-шлюзом и шлюзом локальной сети, как описано в разделе Создание подключения "сайт-сайт". В следующих разделах содержатся свойства, необходимые для указания параметров конфигурации BGP, показанных на схеме 3.

Схема 3

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

Прежде чем продолжить, убедитесь, что вы включили BGP для VPN-шлюза в предыдущем разделе.

Шаг 1. Создание и настройка локального сетевого шлюза

1. Объявление переменных

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

$RG5 = "TestRG5"
$Location5 = "West US"
$LNGName5 = "Site5"
$LNGPrefix50 = "10.51.255.254/32"
$LNGIP5 = "4.3.2.1"
$LNGASN5 = 65050
$BGPPeerIP5 = "10.51.255.254"

Несколько важных замечаний о параметрах локального сетевого шлюза.

  • Локальный сетевой шлюз может находиться в том же расположении, что и VPN-шлюз, или в любом другом. Это же справедливо в отношении групп ресурсов. В нашем примере они располагаются в разных группах ресурсов и расположениях.
  • Префикс, который необходимо объявить для локального сетевого шлюза — это IP-адрес узла BGP на вашем VPN-устройстве. В этом случае это префикс /32 с "10.51.255.254/32".
  • Не забывайте, что для локальных сетей и виртуальной сети Azure должны быть указаны разные номера ASN BGP. Если они совпадают, необходимо изменить ASN виртуальной сети, если локальное VPN-устройство уже использует ASN для пиринга с другими соседями BGP.

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

Создайте группу ресурсов перед созданием шлюза локальной сети.

New-AzResourceGroup -Name $RG5 -Location $Location5

Создайте локальный сетевой шлюз. Обратите внимание на два дополнительных параметра локального сетевого шлюза: Asn и BgpPeerAddress.

New-AzLocalNetworkGateway -Name $LNGName5 -ResourceGroupName $RG5 -Location $Location5 -GatewayIpAddress $LNGIP5 -AddressPrefix $LNGPrefix50 -Asn $LNGASN5 -BgpPeeringAddress $BGPPeerIP5

Шаг 2. Подключение шлюза виртуальной сети к локальному сетевому шлюзу

1. Получение обоих шлюзов

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1  -ResourceGroupName $RG1
$lng5gw  = Get-AzLocalNetworkGateway -Name $LNGName5 -ResourceGroupName $RG5

2. Создание подключения между TestVNet1 и Site5

На этом шаге вы создадите подключение между TestVNet1 и Site5. Чтобы активировать BGP для этого подключения, укажите параметр -EnableBGP True. Как упоминалось ранее, для одного VPN-шлюза можно использовать подключения BGP и подключения, отличные от BGP. Если BGP не включен в свойстве подключения, Azure не будет включать BGP для этого подключения, даже если параметры BGP уже настроены на обоих шлюзах.

При необходимости повторно объявите переменные:

$Connection15 = "VNet1toSite5"
$Location1 = "East US"

Затем выполните следующую команду.

New-AzVirtualNetworkGatewayConnection -Name $Connection15 -ResourceGroupName $RG1 -VirtualNetworkGateway1 $vnet1gw -LocalNetworkGateway2 $lng5gw -Location $Location1 -ConnectionType IPsec -SharedKey 'AzureA1b2C3' -EnableBGP $True

Конфигурация локального устройства

В следующем примере перечислены параметры, которые следует ввести в разделе конфигурации 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.

Шаг 1. Создание TestVNet2 и VPN-шлюза

Важно убедиться, что пространство IP-адресов новой виртуальной сети TestVNet2 не перекрывается с диапазонами виртуальных сетей.

В этом примере виртуальные сети относятся к одной подписке. Вы можете создавать подключения между виртуальным сетями из разных подписок. Дополнительные сведения см. в статье Настройка подключения VPN-шлюза между виртуальными сетями с помощью PowerShell. Чтобы использовать для подключения протокол BGP, обязательно укажите параметр -EnableBgp True при создании подключения.

1. Объявление переменных

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

$RG2 = "TestRG2"
$Location2 = "East US"
$VNetName2 = "TestVNet2"
$FESubName2 = "FrontEnd"
$BESubName2 = "Backend"
$GWSubName2 = "GatewaySubnet"
$VNetPrefix21 = "10.21.0.0/16"
$VNetPrefix22 = "10.22.0.0/16"
$FESubPrefix2 = "10.21.0.0/24"
$BESubPrefix2 = "10.22.0.0/24"
$GWSubPrefix2 = "10.22.255.0/27"
$VNet2ASN = 65020
$DNS2 = "8.8.8.8"
$GWName2 = "VNet2GW"
$GWIPName2 = "VNet2GWIP"
$GWIPconfName2 = "gwipconf2"
$Connection21 = "VNet2toVNet1"
$Connection12 = "VNet1toVNet2"

2. Создание TestVNet2 в новой группе ресурсов

New-AzResourceGroup -Name $RG2 -Location $Location2

$fesub2 = New-AzVirtualNetworkSubnetConfig -Name $FESubName2 -AddressPrefix $FESubPrefix2
$besub2 = New-AzVirtualNetworkSubnetConfig -Name $BESubName2 -AddressPrefix $BESubPrefix2
$gwsub2 = New-AzVirtualNetworkSubnetConfig -Name $GWSubName2 -AddressPrefix $GWSubPrefix2

New-AzVirtualNetwork -Name $VNetName2 -ResourceGroupName $RG2 -Location $Location2 -AddressPrefix $VNetPrefix21,$VNetPrefix22 -Subnet $fesub2,$besub2,$gwsub2

3. Создание VPN-шлюза для TestVNet2 с параметрами BGP

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

Объявите переменные.

$gwpip2    = New-AzPublicIpAddress -Name $GWIPName2 -ResourceGroupName $RG2 -Location $Location2 -AllocationMethod Dynamic

$vnet2     = Get-AzVirtualNetwork -Name $VNetName2 -ResourceGroupName $RG2
$subnet2   = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet2
$gwipconf2 = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfName2 -Subnet $subnet2 -PublicIpAddress $gwpip2

Создайте VPN-шлюз с номером AS. Необходимо переопределить ASN по умолчанию для VPN-шлюзов. Номера ASN для подключенных виртуальных сетей должны быть разными, чтобы работал протокол BGP и транзитная маршрутизация.

New-AzVirtualNetworkGateway -Name $GWName2 -ResourceGroupName $RG2 -Location $Location2 -IpConfigurations $gwipconf2 -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn $VNet2ASN

Шаг 2. Подключение шлюзов TestVNet1 и TestVNet2

В этом примере оба шлюза находятся в одной подписке. Этот шаг можно выполнить в одном сеансе PowerShell.

1. Получение обоих шлюзов

При необходимости восстановите переменные:

$GWName1 = "VNet1GW"
$GWName2 = "VNet2GW"
$RG1 = "TestRG1"
$RG2 = "TestRG2"
$Connection12 = "VNet1toVNet2"
$Connection21 = "VNet2toVNet1"
$Location1 = "East US"
$Location2 = "East US"

Получение обоих шлюзов.

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1
$vnet2gw = Get-AzVirtualNetworkGateway -Name $GWName2 -ResourceGroupName $RG2

2. Создание обоих подключений

На этом шаге вы создадите подключение из TestVNet1 к TestVNet2, а также подключение из TestVNet2 к TestVNet1.

Подключение TestVNet1 к TestVNet2.

New-AzVirtualNetworkGatewayConnection -Name $Connection12 -ResourceGroupName $RG1 -VirtualNetworkGateway1 $vnet1gw -VirtualNetworkGateway2 $vnet2gw -Location $Location1 -ConnectionType Vnet2Vnet -SharedKey 'AzureA1b2C3' -EnableBgp $True

Подключение TestVNet2 к TestVNet1.

New-AzVirtualNetworkGatewayConnection -Name $Connection21 -ResourceGroupName $RG2 -VirtualNetworkGateway1 $vnet2gw -VirtualNetworkGateway2 $vnet1gw -Location $Location2 -ConnectionType Vnet2Vnet -SharedKey 'AzureA1b2C3' -EnableBgp $True

Важно!

Не забудьте включить BGP для ОБОИХ подключений.

Подключение будет установлено через несколько минут после выполнения этих действий. Сразу после создания подключения между виртуальными сетями начнется сеанс пиринга BGP.

Если вы выполнили все три части этого упражнения, вы установили следующую топологию сети:

Схема 4

На схеме показана полная сеть

В контексте, ссылаясь на схему 4, если BGP будет отключен между TestVNet2 и TestVNet1, TestVNet2 не узнает маршруты для локальной сети Site5 и, следовательно, не сможет взаимодействовать с сайтом 5. После включения BGP, как показано на схеме 4, все три сети смогут обмениваться данными через подключения S2S IPsec и "виртуальная сеть — виртуальная сеть".

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

Дополнительные сведения о BGP см. в разделе Сведения о BGP и VPN-шлюз.