PowerShell を使用して ExpressRoute およびサイト間の共存接続を構成する

この記事は、ExpressRoute とサイト間 VPN が共存する接続を構成するのに役立ちます。 サイト間 VPN と ExpressRoute が構成可能な場合、いくつかの利点があります。 ExpressRoute 用にセキュリティで保護されたフェールオーバー パスとしてサイト間 VPN を構成したり、サイト間 VPN を使用して、ExpressRoute 経由で接続されていないサイトに接続したりできます。 この記事では、両方のシナリオを構成する手順について説明します。 この記事は、Resource Manager デプロイ モデルに適用されます。

サイト間 VPN と ExpressRoute が共存する接続を構成することには、いくつかの利点があります。

  • ExpressRoute のセキュリティで保護されたフェールオーバー パスとしてサイト間 VPN を構成することができます。
  • また、サイト間 VPN を使用して、ExpressRoute 経由で接続されていないサイトに接続することもできます。

この記事では、両方のシナリオを構成する手順について説明します。 この記事は、Resource Manager デプロイ モデルに適用されます。また、ここでは PowerShell が使用されます。 これらのシナリオは Azure Portal を使用して構成することもできますが、ドキュメントはまだ使用できません。 最初にどちらのゲートウェイでも構成できます。 通常、新しいゲートウェイやゲートウェイ接続を追加してもダウンタイムは発生しません。

Note

ExpressRoute 回線経由でサイト間 VPN を作成する場合は、Microsoft ピアリング経由のサイト間接続に関するページを参照してください。

制限と制限事項

  • サポートされているのはルート ベースの VPN ゲートウェイのみです。 ルート ベースの VPN ゲートウェイを使用する必要があります。 「複数のポリシーベース VPN デバイスへの接続」で説明されているように、"ポリシーベース トラフィック セレクタ" に VPN 接続が設定されているルートベースの VPN ゲートウェイを使用することもできます。
  • ExpressRoute と VPN ゲートウェイが共存する構成は、Basic SKU ではサポートされていません
  • ExpressRoute と VPN の間でトランジット ルーティングを使用する場合は、Azure VPN Gateway の AS 番号を 65515 に設定する必要があり、Azure Route Server を使用する必要があります。Azure VPN ゲートウェイは、BGP ルーティング プロトコルをサポートします。 ExpressRoute と Azure VPN を連動させるには、Azure VPN Gateway の自律システム番号を既定値 65515 のままで維持する必要があります。 以前に 65515 以外の AS 番号を選択し、設定を 65515 に変更する場合、設定を適用するには VPN Gateway をリセットする必要があります。
  • ゲートウェイ サブネットは /27 またはそれより短いプレフィックス (/26、/25 など) でなければなりません。そうでないと、ExpressRoute 仮想ネットワーク ゲートウェイを追加したときに、エラー メッセージが表示されます。
  • デュアルスタック仮想ネットワークでの共存はサポートされていません。 ExpressRoute IPv6 サポートとデュアルスタック ExpressRoute ゲートウェイを使用している場合、VPN Gateway とは共存できません。

構成の設計

ExpressRoute のフェールオーバー パスとしてサイト間 VPN を構成する

ExpressRoute 接続のバックアップとしてサイト間 VPN 接続を構成することができます。 この接続は、Azure のプライベート ピアリング パスにリンクされている仮想ネットワークにのみ適用されます。 Azure Microsoft ピアリングを介してアクセスできるサービスに対応した VPN ベースのフェールオーバー ソリューションはありません。 ExpressRoute 回線は常にプライマリ リンクです。 データは、ExpressRoute 回線で障害が発生した場合にのみ、サイト間 VPN パスを通過します。 非対称なルーティングを回避するには、ローカル ネットワーク構成でも、サイト間 VPN よりも ExpressRoute 回線を優先するようにします。 ExpressRoute を受け取るルートの優先度を高く設定すると、ExpressRoute パスを優先することができます。

注意

  • ExpressRoute Microsoft Peering を有効にしている場合、ExpressRoute 接続で Azure VPN ゲートウェイのパブリック IP アドレスを受け取ることができます。 バックアップとしてサイト間 VPN 接続を設定するには、VPN 接続がインターネットにルーティングされるように、オンプレミス ネットワークを構成する必要があります。

  • 両方のルートが同じである場合は、ExpressRoute 回線のパスがサイト間 VPN よりも優先されますが、Azure では最長プレフィックスの一致を使用してパケットの宛先へのルートを選択します。

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

ExpressRoute 経由で接続されていないサイトに接続するようにサイト間 VPN を構成する

サイト間 VPN 経由で Azure に直接接続するサイトと、ExpressRoute 経由で接続するサイトがあるネットワークを構成することができます。

Coexist

使用する手順の選択

2 とおりの手順があり、そのいずれかを選択できます。 接続先にする既存の仮想ネットワークがある場合と、新しい仮想ネットワークを作成する場合とでは、選択できる構成手順が異なります。

  • VNet がないので作成する必要がある。

    仮想ネットワークがまだない場合、この手順で Resource Manager デプロイ モデルを使用して新しい仮想ネットワークを作成し、新しい ExpressRoute 接続とサイト間 VPN 接続を作成します。

  • Resource Manager デプロイ モデル VNet が既にある。

    既存のサイト間 VPN 接続または ExpressRoute 接続を使用して、仮想ネットワークを既に配置している場合があります。 このシナリオでは、ゲートウェイ サブネットのプレフィックスが /28 以上 (/29、/30 など) の場合は、既存のゲートウェイを削除する必要があります。 既存の VNet で共存する接続を構成する手順のセクションでは、ゲートウェイを削除し、新しい ExpressRoute 接続とサイト間 VPN 接続を作成する手順について説明しています。

    ゲートウェイを削除して再作成すると、クロスプレミス接続のダウンタイムが発生します。 ただし、ゲートウェイの構成中でも、VM やサービスはインターネットを介して接続できます (そのように構成されている場合)。

開始する前に

この記事の手順と例では、Azure PowerShell Az モジュールが使用されます。 Az モジュールをご利用のコンピューターにローカルにインストールするには、Azure PowerShell のインストールに関するページを参照してください。 Az モジュールの詳細については、「新しい Azure PowerShell Az モジュールの概要」を参照してください。 PowerShell コマンドレットは、頻繁に更新されます。 最新バージョンを実行していないと、手順で指定されている値は失敗する場合があります。 システムにインストールされている PowerShell のバージョンを確認するには、Get-Module -ListAvailable Az コマンドレットを使用します。

Azure Cloud Shell を使用すると、Azure PowerShell または CLI をローカルにインストールしなくても、ほとんどの PowerShell コマンドレットおよび CLI コマンドを実行できます。 Azure Cloud Shell は、無料の対話型シェルで、一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。 この記事に含まれるコードを Azure Cloud Shell で実行するには、Cloud Shell セッションを開き、コード ブロック上の [コピー] ボタンを使ってコードをコピーし、Ctrl + Shift + V キー (Windows と Linux) または command + Shift + V キー (macOS) を押して Cloud Shell セッションに貼り付けます。 テキストを貼り付けても自動的には実行されません。コードを実行するには、Enter キーを押します。

Cloud Shell は、次のようにいくつかの方法で起動することができます。

オプション Link
コード ブロックの右上隅にある [使ってみる] をクリックします。 Cloud Shell in this article
ブラウザーで Cloud Shell を開きます。 https://shell.azure.com/powershell
Azure Portal の右上のメニューの [Cloud Shell] ボタンをクリックします。 Cloud Shell in the portal

この手順では、VNet を作成し、共存するサイト間接続と 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 を含む仮想ネットワークを作成します。 仮想ネットワークの作成の詳細については、「Create a virtual network (仮想ネットワークの作成)」を参照してください。 サブネットの作成の詳細については、サブネットの作成に関するページを参照してください。

    重要

    GatewaySubnetは /27 またはこれより短いプレフィックス (/26 や /25 など) にする必要があります。

    新しい仮想ネットワークを作成します。

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

    AppGatewaySubnet という名前の 2 つのサブネットを追加する。

    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 ゲートウェイの構成の詳細については、「サイト間接続を使用した VNet の構成」に関するページを参照してください。 GatewaySku は VpnGw1VpnGw2VpnGw3StandardHighPerformance の各 VPN ゲートウェイでのみサポートされています。 ExpressRoute と VPN Gateway が共存する構成は、Basic 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"
    

    Azure VPN ゲートウェイは、BGP ルーティング プロトコルをサポートします。 次のコマンドに -Asn フラグを追加することで、その仮想ネットワークの ASN (AS 番号) を指定できます。 Asn パラメーターを指定しない場合、既定では AS 番号は 65515 になります。

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

    Note

    共存するゲートウェイには、規定のAS 番号 65515 を使用する必要があります。 詳細については、「限度および制限」を参照してください。

    $azureVpn.BgpSettings.BgpPeeringAddress および $azureVpn.BgpSettings.Asn を実行することで、Azure が VPN ゲートウェイに使用する BGP ピアリング IP と AS 番号を取得できます。 詳細については、Azure VPN ゲートウェイの BGP の構成に関するページをご覧ください。

  5. ローカル サイト VPN ゲートウェイのエンティティを作成します。 このコマンドは、オンプレミスの VPN ゲートウェイを構成しません。 代わりに、パブリック IP やオンプレミスのアドレス空間などのローカル ゲートウェイ設定を指定できるため、Azure VPN ゲートウェイがこれに接続できます。

    ローカル 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 がサポートされており、動的ルーティングを有効にする場合、ローカル VPN デバイスの BGP ピアリング IP と 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 デバイスを構成して、新しい Azure VPN ゲートウェイに接続します。 VPN デバイス構成の詳細については、「 VPN デバイスの構成」を参照してください。

  7. Azure のサイト間 VPN ゲートウェイをローカル ゲートウェイにリンクします。

    $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. ExpressRoute 回線上で Azure プライベート ピアリングを構成します。 ExpressRoute 回線上で Azure プライベート ピアリングを構成する方法の詳細については、ピアリングの構成に関するページを参照してください。

  10. ExpressRoute ゲートウェイを作成します。 ExpressRoute ゲートウェイの構成の詳細については、「 ExpressRoute gateway configuration (ExpressRoute ゲートウェイの構成)」を参照してください。 GatewaySKU には、StandardHighPerformance、または 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 経由で確立されます。 リンク操作の詳細については、「 Link VNets to ExpressRoute (ExpressRoute への Vnet のリンク)」を参照してください。

    $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 portal を使用する必要があります。

  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 portal を使用して証明書をアップロードすることもできます。

    $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
    

ポイント対サイト VPN の詳細については、 ポイント対サイト接続の構成に関するページを参照してください。

ExpressRoute と Azure VPN の間でトランジット ルーティングを有効にするには

ExpressRoute に接続されているローカル ネットワークのいずれかと、サイト間 VPN 接続に接続されている別のローカル ネットワークの間で接続を有効にする場合は、Azure Route Server を設定する必要があります。

次のステップ

ExpressRoute の詳細については、「 ExpressRoute のFAQ」をご覧ください。