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

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

Настройка VPN типа "сеть — сеть" и "ExpressRoute" имеет несколько преимуществ:

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

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

Примечание.

Если вы хотите создать VPN типа "сеть — сеть" через канал ExpressRoute, обратитесь к VPN типа "сеть — сеть" через пиринг Майкрософт.

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

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

Diagram that shows a site-to-site VPN connection as a backup for ExpressRoute.

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

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

Coexist

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

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

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

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

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

    Возможно, у вас уже есть виртуальная сеть с существующим VPN-подключением типа "сеть — сеть" или подключением ExpressRoute. В этом случае, если размер префикса подсети шлюза составляет не меньше /28 (например, /29, /30 и т. д.), существующий шлюз нужно удалить. Действия по настройке сосуществующих подключений для уже существующего раздела виртуальной сети показано, как удалить шлюз, а затем создать новые VPN-подключения 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 in this article
Откройте Cloud Shell в браузере. https://shell.azure.com/powershell
Нажмите кнопку меню Cloud Shell в правом верхнем углу окна портала Azure. Cloud Shell in the portal

В этой процедуре описывается создание виртуальных сетей и подключений типа "сеть — сеть" и "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. Создайте виртуальную сеть, включая GatewaySubnet. См. дополнительные сведения в статье о создании виртуальной сети. См. дополнительные сведения в статье о создании подсети.

    Важно!

    ШлюзSubnet должен быть префиксом /27 или короче, например /26 или /25.

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

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

    Добавьте две подсети с именем App и GatewaySubnet.

    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-шлюза см. в статье "Настройка виртуальной сети с подключением типа "сеть — сеть". 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 Number) для виртуальной сети, добавив -Asn флаг в следующую команду. Не указывая Asn параметр по умолчанию для номера AS до 65515.

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

    Примечание.

    Для сосуществующих шлюзов необходимо использовать значение ASN по умолчанию, равное 65515. Дополнительные сведения см. в разделе об ограничениях и ограничениях.

    Вы можете найти 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 локального VPN-устройства.

    $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-шлюзу

Эти действия можно выполнить, чтобы добавить конфигурацию типа "точка — сеть" в 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.

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

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