Поделиться через


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

В этой статье показано, как включить VPN-подключения типа "сеть — сеть" (S2S) bGP на нескольких локальных vpn-подключениях и подключениях между виртуальными сетями с помощью 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 непосредственно с компьютера, установите командлеты PowerShell Для Azure Resource Manager. См. дополнительные сведения об установке и настройке командлетов 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 требуется 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".
  • Вы также можете оставить префикс пустым, если вы используете BGP для подключения к этой сети. VPN-шлюз Azure добавит внутренний маршрут IP-адреса однорангового узла BGP в соответствующий туннель IPsec.
  • Не забывайте, что для локальных сетей и виртуальной сети 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. Как упоминалось ранее, можно использовать подключения BGP и не BGP для одного VPN-шлюза. Если 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-шлюз.