Настройка параллельных подключений "сеть — сеть" и ExpressRoute с помощью PowerShell

Сведения в этой статье помогут настроить параллельные соединения ExpressRoute и соединения VPN типа "сеть — сеть". Возможность настройки VPN типа "сеть-сеть" и ExpressRoute дает целый ряд преимуществ. Вы можете настроить VPN-подключение "сеть — сеть" как защищенный путь отработки отказа для ExressRoute или использовать эту сеть VPN для подключения к сайтам, не подключенным через ExpressRoute. В этой статье мы рассмотрим порядок действия в каждом из этих вариантов. Эта статья посвящена модели развертывания Resource Manager.

Настройка параллельных VPN-подключений типа "сеть — сеть" и ExpressRoute дает ряд преимуществ.

  • VPN типа "сеть — сеть" можно настроить как безопасный путь отработки отказа для ExpressRoute.
  • Кроме того, VPN типа "сеть — сеть" можно использовать для подключения к сайтам, которые не подключены через ExpressRoute.

В этой статье описан порядок действий для каждого из этих вариантов. Эта статья посвящена модели развертывания Resource Manager. Кроме того, в ней используется PowerShell. Эти сценарии можно также настроить с помощью портала Azure, несмотря на то, что документация еще недоступна. Вы можете начать настройку c любого шлюза. Как правило, не будет взиматься плата за простои при добавлении нового шлюза или подключении к шлюзу.

Примечание

Если вы хотите создать VPN типа "сеть — сеть" через канал ExpressRoute, см. эту статью.

Квоты и ограничения

  • Поддерживается только VPN-шлюз на основе маршрутов. Необходимо использовать VPN-шлюз на основе маршрутов. Также вы можете использовать VPN-шлюз на основе маршрутов с VPN-подключением, настроенным для селекторов трафика на основе политик, как описано в статье Подключение к нескольким VPN-устройствам на основе политик.
  • Одновременное использование конфигураций VPN-шлюзов и ExpressRoute не поддерживается в SKU "Базовый" .
  • Значение ASN VPN-шлюза Azure должно быть равно 65515. VPN-шлюз Azure поддерживает протокол маршрутизации BGP. Для совместной работы ExpressRoute и Azure VPN необходимо, чтобы номер автономной системы (ASN) VPN-шлюза Azure был равен значению по умолчанию 65515. Если ранее был установлен другой ASN, но затем вы изменили параметр на 65515, сбросьте VPN-шлюз, чтобы этот параметр вступил в силу.
  • Для подсети шлюза требуется префикс /27 или более короткий (например, /26 или /25), иначе при добавлении шлюза виртуальной сети ExpressRoute появится сообщение об ошибке.
  • Сосуществование в виртуальной сети с двумя стеками не поддерживается. Если вы используете поддержку протокола IPv6 для ExpressRoute и шлюз ExpressRoute с двумя стеками, сосуществование с VPN-шлюзом будет невозможно.

Схемы конфигурации

Настройка VPN типа "сеть-сеть" как пути отработки отказа для ExpressRoute

VPN-подключение типа "сеть-сеть" можно настроить как службу архивации для ExpressRoute. Это подключение применяется только к виртуальным сетям, связанным с путем частного пиринга Azure. Для служб, доступ к которым осуществляется через пиринг Microsoft Azure, решения для отработки отказа на основе VPN не существует. Канал ExpressRoute всегда является основной ссылкой. Данные передаются по пути VPN "сеть — сеть", только если канал ExpressRoute не справляется с этой задачей. Во избежание ассиметричной маршрутизации конфигурация локальной сети должна предпочитать канал ExpressRoute, а не VPN типа "сеть — сеть". Чтобы настроить предпочтение для канала ExpressRoute, задайте для маршрутов, полученных через ExpressRoute, более высокий локальный приоритет.

Примечание

Если пиринг Майкрософт для ExpressRoute включен, вы можете получить общедоступный IP-адрес VPN-шлюза Azure в подключении ExpressRoute. Чтобы задать VPN-подключение типа "сеть — сеть" в качестве резервного, настройте локальную сеть таким образом, чтобы VPN-подключение направлялось в Интернет.

Примечание

Хотя канал ExpressRoute лучше использовать для VPN типа "сеть — сеть", когда оба маршрута одинаковы, Azure будет выбирать маршрут для назначения пакета по совпадению самого длинного префикса.

Схема, на которой показано использование VPN-подключения типа "сеть — сеть" в качестве резервного для ExpressRoute.

Настройка VPN типа "сеть-сеть" для подключения к сайтам, не подключенным через ExpressRoute

Сети можно настроить таким образом, чтобы одни из них подключались непосредственно к Azure по VPN типа "сеть-сеть", а другие — через ExpressRoute.

Существуют одновременно

Выбор действий для использования

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

  • У меня нет виртуальной сети, и мне нужно ее создать.

    Если у вас еще нет виртуальной сети, выполните эти шаги, чтобы создать ее с помощью модели развертывания Resource Manager, а также создать подключение ExpressRoute и VPN типа "сеть — сеть". Чтобы настроить виртуальную сеть, выполните шаги, описанные в разделе Создание виртуальной сети и параллельных подключений.

  • У меня уже есть виртуальная сеть с моделью развертывания Resource Manager.

    Возможно, у вас уже имеется виртуальная сеть, а также подключения к VPN типа "сеть-сеть" или к ExpressRoute. В этом случае, если размер маски подсети шлюза равен или меньше /28 (например, /28, /29 и т. д.), существующий шлюз нужно удалить. В разделе Настройка параллельных подключений для существующей виртуальной сети представлены пошаговые инструкции по удалению шлюза и созданию подключений ExpressRoute и VPN типа "сеть — сеть".

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

Перед началом

В шагах и примерах в этой статье используются модули Az для Azure PowerShell. Чтобы установить модули Az локально, см. статью Установка Azure PowerShell. Чтобы узнать о модуле Az, см. статью Знакомство с новым модулем Az для Azure PowerShell. Командлеты PowerShell часто обновляются. Если вы не используете последнюю версию, применение значений, указанных в инструкциях, может привести к сбою. Чтобы найти установленные в системе версии PowerShell, используйте командлет Get-Module -ListAvailable Az.

Azure Cloud Shell можно использовать для выполнения большинства командлетов PowerShell и команд CLI. Это позволяет избежать локальной установки Azure PowerShell или CLI. Azure Cloud Shell — это бесплатная интерактивная оболочка, в которой предустановлены и настроены для использования с вашей учетной записью стандартные средства Azure. Для выполнения кода из этой статьи в Azure Cloud Shell откройте сеанс Cloud Shell, скопируйте блок кода с помощью кнопки Копировать и вставьте его в сеанс Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS. Вставленный текст не выполняется автоматически, поэтому нажмите клавишу ВВОД для выполнения кода.

Cloud Shell можно запустить разными способами:

Параметр Ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом. Cloud Shell в этой статье
Откройте Cloud Shell в браузере. https://shell.azure.com/powershell
Нажмите кнопку меню Cloud Shell в правом верхнем углу окна портала Azure. Cloud Shell на портале

Создание новой виртуальной сети и параллельных подключений

В этой процедуре подробно рассматривается создание виртуальной сети, а также параллельных подключений ExpressRoute и "сеть — сеть". Командлеты, которые будут использоваться для этой конфигурации, могут немного отличаться от уже знакомых вам. Обязательно используйте командлеты, указанные в инструкциях.

  1. Выполните вход и выберите подписку.

    Если вы используете Azure Cloud Shell, вы автоматически войдете в учетную запись Azure после нажатия кнопки "Попробовать". Чтобы войти локально, откройте консоль PowerShell с повышенными привилегиями и выполните командлет для подключения.

    Connect-AzAccount
    

    Если у вас есть несколько подписок Azure, запросите их список.

    Get-AzSubscription
    

    Укажите подписку, которую нужно использовать.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. Задайте переменные.

    $location = "Central US"
    $resgrp = New-AzResourceGroup -Name "ErVpnCoex" -Location $location
    $VNetASN = 65515
    
  3. Создайте виртуальную сеть и подсеть шлюза. См. дополнительные сведения в статье о создании виртуальной сети. См. дополнительные сведения в статье о создании подсети.

    Важно!

    Подсеть шлюза должна иметь префикс /27 или более короткий префикс (например, /26 или /25).

    Создайте виртуальную сеть.

    $vnet = New-AzVirtualNetwork -Name "CoexVnet" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AddressPrefix "10.200.0.0/16"
    

    Добавьте подсети.

    Add-AzVirtualNetworkSubnetConfig -Name "App" -VirtualNetwork $vnet -AddressPrefix "10.200.1.0/24"
    Add-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet -AddressPrefix "10.200.255.0/24"
    

    Сохраните конфигурацию виртуальной сети.

    $vnet = Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  4. Далее создайте VPN-шлюз типа "сеть — сеть". Дополнительные сведения о настройке VPN-шлюза см. в статье Создание виртуальной сети с подключением типа "сеть — сеть" с помощью PowerShell. GatewaySku поддерживается только в VPN-шлюзах VpnGw1, VpnGw2, VpnGw3, Standard и HighPerformance. Одновременное использование конфигураций VPN-шлюзов и ExpressRoute не поддерживается в SKU "Базовый". Параметр VpnType должен иметь значение RouteBased.

    $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    $gwIP = New-AzPublicIpAddress -Name "VPNGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
    $gwConfig = New-AzVirtualNetworkGatewayIpConfig -Name "VPNGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
    New-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "VpnGw1"
    

    Шлюз VPN Azure поддерживает протокол маршрутизации BGP. Для этой виртуальной сети можно указать ASN (номер AS), добавив параметр -Asn в команду ниже. Без этого параметра номер AS получит значение по умолчанию — 65515.

    $azureVpn = New-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "VpnGw1" -Asn $VNetASN
    

    IP-адрес пиринга BGP и номер AS, используемый Azure для VPN-шлюза, можно найти в атрибутах $azureVpn.BgpSettings.BgpPeeringAddress и $azureVpn.BgpSettings.Asn. Дополнительные сведения см. в статье Настройка BGP на VPN-шлюзах Azure с помощью Azure Resource Manager и PowerShell.

  5. Создайте сущность VPN-шлюза локального сайта. Эта команда не настраивает локальный VPN-шлюз. Она только позволяет указать параметры локального шлюза, такие как общедоступный IP-адрес и локальное адресное пространство, чтобы VPN-шлюз Azure мог подключиться к нему.

    Если локальное VPN-устройство поддерживает только статическую маршрутизацию, статические маршруты можно настроить следующим образом:

    $MyLocalNetworkAddress = @("10.100.0.0/16","10.101.0.0/16","10.102.0.0/16")
    $localVpn = New-AzLocalNetworkGateway -Name "LocalVPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -GatewayIpAddress *<Public IP>* -AddressPrefix $MyLocalNetworkAddress
    

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

    $localVPNPublicIP = "<Public IP>"
    $localBGPPeeringIP = "<Private IP for the BGP session>"
    $localBGPASN = "<ASN>"
    $localAddressPrefix = $localBGPPeeringIP + "/32"
    $localVpn = New-AzLocalNetworkGateway -Name "LocalVPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -GatewayIpAddress $localVPNPublicIP -AddressPrefix $localAddressPrefix -BgpPeeringAddress $localBGPPeeringIP -Asn $localBGPASN
    
  6. Настройте локальное VPN-устройство для подключения к новому VPN-шлюзу Azure. Дополнительные сведения о настройке VPN-устройства см. в статье О VPN-устройствах для подключений VPN-шлюзов типа "сеть — сеть".

  7. Свяжите VPN-шлюз к сети типа "сеть-сеть" в Azure с локальным шлюзом.

    $azureVpn = Get-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName
    New-AzVirtualNetworkGatewayConnection -Name "VPNConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $azureVpn -LocalNetworkGateway2 $localVpn -ConnectionType IPsec -SharedKey <yourkey>
    
  8. При подключении к существующему каналу ExpressRoute пропустите шаги 8 и 9 и перейдите к шагу 10. Настройте каналы ExpressRoute. Дополнительные сведения о настройке каналов ExpressRoute см. в статье о создании канала ExpressRoute.

  9. Настройте частный пиринг Azure через канал ExpressRoute. Дополнительные сведения о настройке открытого пиринга Azure через канал ExpressRoute см. в этой статье

  10. Создайте шлюз ExpressRoute. Дополнительные сведения о настройке шлюза ExpressRoute см. в статье Настройка шлюза виртуальной сети для ExpressRoute с помощью диспетчера ресурсов и PowerShell. Параметр GatewaySKU должен иметь значение Standard, HighPerformance или UltraPerformance.

    $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    $gwIP = New-AzPublicIpAddress -Name "ERGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
    $gwConfig = New-AzVirtualNetworkGatewayIpConfig -Name "ERGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
    $gw = New-AzVirtualNetworkGateway -Name "ERGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "ExpressRoute" -GatewaySku Standard
    
  11. Свяжите шлюз ExpressRoute с каналом ExpressRoute. После выполнения этого действия подключение локальной сети к Azure через ExpressRoute будет установлено. Дополнительные сведения об операции связывания см. в статье Связывание виртуальной сети с каналом ExpressRoute.

    $ckt = Get-AzExpressRouteCircuit -Name "YourCircuit" -ResourceGroupName "YourCircuitResourceGroup"
    New-AzVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $gw -PeerId $ckt.Id -ConnectionType ExpressRoute
    

Настройка параллельных подключений для существующей виртуальной сети

Если у вас есть виртуальная сеть только с одним шлюзом виртуальной сети (например, VPN-шлюз "сеть — сеть") и вы хотите добавить еще один шлюз другого типа (например, шлюз ExpressRoute), проверьте размер подсети шлюза. Если размер подсети шлюза — /27 или больше, можно пропустить описанные ниже шаги и перейти к предыдущему разделу, чтобы добавить шлюз ExpressRoute или VPN-шлюз "сеть — сеть". Если размер подсети шлюза — /28 или /29, необходимо сначала удалить шлюз виртуальной сети и увеличить размер подсети шлюза. В этом разделе показано, как это сделать.

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

  1. Удалите для сети типа "сеть — сеть" существующий VPN-шлюз или шлюз ExpressRoute.

    Remove-AzVirtualNetworkGateway -Name <yourgatewayname> -ResourceGroupName <yourresourcegroup>
    
  2. Удалите подсеть шлюза.

    $vnet = Get-AzVirtualNetwork -Name <yourvnetname> -ResourceGroupName <yourresourcegroup> Remove-AzVirtualNetworkSubnetConfig -Name GatewaySubnet -VirtualNetwork $vnet
    
  3. Добавьте подсеть шлюза с префиксом /27 или больше.

    Примечание

    Если в виртуальной сети недостаточно свободных IP-адресов для увеличения размера подсети шлюза, необходимо добавить дополнительные пространства IP-адресов.

    $vnet = Get-AzVirtualNetwork -Name <yourvnetname> -ResourceGroupName <yourresourcegroup>
    Add-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet -AddressPrefix "10.200.255.0/24"
    

    Сохраните конфигурацию виртуальной сети.

    $vnet = Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  4. На этом этапе у вас есть виртуальная сеть без шлюзов. Чтобы создать новые шлюзы и настроить подключения, используйте приведенные ниже примеры.

    Задайте переменные.

    $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    $gwIP = New-AzPublicIpAddress -Name "ERGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
    $gwConfig = New-AzVirtualNetworkGatewayIpConfig -Name "ERGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
    

    Создайте шлюз.

    $gw = New-AzVirtualNetworkGateway -Name <yourgatewayname> -ResourceGroupName <yourresourcegroup> -Location <yourlocation> -IpConfigurations $gwConfig -GatewayType "ExpressRoute" -GatewaySku Standard
    

    Создайте подключение.

    $ckt = Get-AzExpressRouteCircuit -Name "YourCircuit" -ResourceGroupName "YourCircuitResourceGroup"
    New-AzVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $gw -PeerId $ckt.Id -ConnectionType ExpressRoute
    

Добавление конфигурации "точка — сеть" к VPN-шлюзу

Чтобы добавить конфигурацию "точка — сеть" к VPN-шлюзу при настройке параллельных подключений, выполните следующее. Чтобы отправить корневой сертификат VPN, необходимо либо установить PowerShell локально на компьютер, либо использовать портал Azure.

  1. Добавьте пул адресов VPN-клиента.

    $azureVpn = Get-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $azureVpn -VpnClientAddressPool "10.251.251.0/24"
    
  2. Отправьте корневой сертификат VPN в Azure для VPN-шлюза. В этом примере предполагается, что корневой сертификат хранится на локальном компьютере, где выполняются указанные ниже командлеты PowerShell, и что вы запустили PowerShell локально. Также можно отправить сертификат с помощью портала Azure.

    $p2sCertFullName = "RootErVpnCoexP2S.cer" 
    $p2sCertMatchName = "RootErVpnCoexP2S" 
    $p2sCertToUpload=get-childitem Cert:\CurrentUser\My | Where-Object {$_.Subject -match $p2sCertMatchName} 
    if ($p2sCertToUpload.count -eq 1){write-host "cert found"} else {write-host "cert not found" exit} 
    $p2sCertData = [System.Convert]::ToBase64String($p2sCertToUpload.RawData) 
    Add-AzVpnClientRootCertificate -VpnClientRootCertificateName $p2sCertFullName -VirtualNetworkGatewayname $azureVpn.Name -ResourceGroupName $resgrp.ResourceGroupName -PublicCertData $p2sCertData
    

Дополнительные сведения см. в статье Настройка подключения типа "точка — сеть" к виртуальной сети с помощью PowerShell.

Включение транзитной маршрутизации между ExpressRoute и VPN Azure

Если вы хотите разрешить подключение между одной из локальных сетей, подключенных к ExpressRoute, и другой локальной сетью, подключенной к VPN типа "сеть — сеть", необходимо настроить Azure Route Server.

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

Дополнительные сведения об ExpressRoute см. в статье Вопросы и ответы по ExpressRoute.