Azure PowerShell を使って仮想ネットワークを ExpressRoute 回線に接続する

この記事では、Resource Manager デプロイ モデルと PowerShell を使用して Azure ExpressRoute 回線に仮想ネットワーク (VNet) をリンクする方法について説明します。 仮想ネットワークは、同じサブスクリプションにあっても、別のサブスクリプションの一部であってもかいまいません。 このチュートリアルでは、仮想ネットワークのリンクを更新する方法も示します。

ExpressRoute 回線にリンクされた仮想ネットワークを示す図。

前提条件

  • 構成を開始する前に、前提条件ルーティングの要件ワークフローを確認します。

  • アクティブな ExpressRoute 回線が必要です。

    • 手順に従って、 ExpressRoute 回線を作成 し、接続プロバイダー経由で回線を有効にしてください。
    • 回線用に Azure プライベート ピアリングが構成されていることを確認してください。 ルーティング手順については、 ルーティングの構成 に関する記事を参照してください。
    • エンドツーエンド接続のために、確実に Azure プライベート ピアリングが構成され、ご使用のネットワークと Microsoft の間の BGP ピアリングを確立します。
    • 仮想ネットワークと仮想ネットワーク ゲートウェイを作成し、完全にプロビジョニングします。 指示に従って ExpressRoute 用の仮想ネットワーク ゲートウェイを作成します。 ExpressRoute 用の仮想ネットワーク ゲートウェイでは、VPN ではなく GatewayType ExpressRoute が使用されます。
  • 最大 10 個の仮想ネットワークを標準 ExpressRoute 回線に接続できます。 標準 ExpressRoute 回線を使用する場合は、すべての仮想ネットワークが同じ地理的リージョンに存在する必要があります。

  • 1 つの仮想ネットワークを最大 16 個の ExpressRoute 回線にリンクできます。 この記事の手順を使用して、接続先の各 ExpressRoute 回線の新しい接続オブジェクトを作成します。 ExpressRoute 回線は、同じサブスクリプション、異なるサブスクリプション、または両方の組み合わせにすることができます。

  • ExpressRoute Premium アドオンを有効にした場合は、ExpressRoute 回線の地理的リージョンの外部にある仮想ネットワークをリンクすることができます。 Premium アドオンを使用すると、選択した帯域幅に応じて、10 を超える仮想ネットワークを ExpressRoute 回線に接続することができます。 Premium アドオンの詳細については、 FAQ を確認してください。

  • ExpressRoute 回線からターゲットの ExpressRoute 仮想ネットワーク ゲートウェイへの接続を作成するために、ローカルまたはピアリングされた仮想ネットワークからアドバタイズされるアドレス空間の数は 200 個以下である必要があります。 接続が正常に作成されたら、ローカルまたはピアリングされた仮想ネットワークにアドレス空間をさらに追加できます (最大 1,000 個)。

  • ExpressRoute 経由の仮想ネットワーク間の接続のガイダンスを確認します。

Azure PowerShell を使用する

この記事の手順と例では、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
ブラウザーで Cloud Shell を開きます。 https://shell.azure.com/powershell
Azure Portal の右上のメニューの [Cloud Shell] ボタンをクリックします。 ポータルの Cloud Shell

仮想ネットワークに接続する

最大の回復性 (推奨) - 仮想ネットワークに最高レベルの回復性を提供します。 仮想ネットワーク ゲートウェイから、異なる ExpressRoute の場所にある、2 つの異なる ExpressRoute 回線への 2 つの冗長接続を提供します。

スクリプトを複製する

最大の回復性接続を作成するには、GitHub からセットアップ スクリプトを複製します。

# Clone the setup script from GitHub.
git clone https://github.com/Azure-Samples/azure-docs-powershell-samples/ 
# Change to the directory where the script is located.
CD azure-docs-powershell-samples/expressroute/

New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 スクリプトを実行して、高可用性接続を作成します。 次の例は、2 つの ExpressRoute 回線への 2 つの新しい接続を作成する方法を示しています。

$SubscriptionId = Get-AzureSubscription -SubscriptionName "<SubscriptionName>"
$circuit1 = Get-AzExpressRouteCircuit -Name "MyCircuit1" -ResourceGroupName "MyRG"
$circuit2 = Get-AzExpressRouteCircuit -Name "MyCircuit2" -ResourceGroupName "MyRG"
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"

highAvailabilitySetup/New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 -SubscriptionId $SubscriptionId -ResourceGroupName "MyRG" -Location "West EU" -Name1 "ERConnection1" -Name2 "ERConnection2" -Peer1 $circuit1.Peerings[0] -Peer2 $circuit2.Peerings[0] -RoutingWeight1 10 -RoutingWeight2 10 -VirtualNetworkGateway1 $gw

新しい接続を作成し、既存の接続も使用する場合は、次の例を使用できます。 この例では、2 番めの ExpressRoute 回線に新しい接続を作成し、最初の ExpressRoute 回線には既存の接続を使用します。

$SubscriptionId = Get-AzureSubscription -SubscriptionName "<SubscriptionName>"
$circuit1 = Get-AzExpressRouteCircuit -Name "MyCircuit1" -ResourceGroupName "MyRG"
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"
$connection = Get-AzVirtualNetworkGatewayConnection -Name "ERConnection1" -ResourceGroupName "MyRG"

highAvailabilitySetup/New-AzHighAvailabilityVirtualNetworkGatewayConnections.ps1 -SubscriptionId $SubscriptionId -ResourceGroupName "MyRG" -Location "West EU" -Name2 "ERConnection2" -Peer2 $circuit1.Peerings[0] -RoutingWeight2 10 -VirtualNetworkGateway1 $gw -ExistingVirtualNetworkGatewayConnection $connection

別のサブスクリプション内の仮想ネットワークを回線に接続する

複数のサブスクリプションで ExpressRoute 回線を共有できます。 下図に、複数のサブスクリプションで ExpressRoute 回線を共有するしくみについて概略を示します。

注意

Azure ソブリン クラウドとパブリック Azure クラウドの間での仮想ネットワーク接続はサポートされていません。 仮想ネットワークのリンクは、同じクラウド内の異なるサブスクリプション間に限られます。

大規模クラウド内のそれぞれの小規模クラウドは、組織内のさまざまな部門に属するサブスクリプションを表すために使用されています。 組織内の各部門は、サービスのデプロイを目的として、固有のサブスクリプションを使用できますが、1 つの ExpressRoute 回線を共有することで、オンプレミス ネットワークに接続し直すことができます。 1 つの部門 (この例では IT) で ExpressRoute 回線を所有できます。 組織内の他のサブスクリプションを使用する場合も、ExpressRoute 回線を使用できます。

注意

ExpressRoute 回線の接続と帯域幅の料金は、サブスクリプションの所有者が負担することになります。 すべての仮想ネットワークが同じ帯域幅を共有します。

サブスクリプション間接続

管理 - 回線所有者と回線ユーザー

"回線所有者" は、ExpressRoute 回線リソースの権限のあるパワー ユーザーです。 回線所有者は、"回線ユーザー" が利用できる承認を作成できます。 回線ユーザーは、ExpressRoute 回線と同じサブスクリプション内には存在しない仮想ネットワーク ゲートウェイの所有者です。 回線ユーザーは、承認を利用できます (仮想ネットワークごとに 1 つの承認)。

回線所有者は、承認をいつでも変更し、取り消す権限を持っています。 承認を取り消すと、アクセスが取り消されたサブスクリプションからすべてのリンク接続が削除されます。

Note

回線所有者は、組み込み RBAC ロールではなく、ExpressRoute リソースでも定義されていません。 回線所有者の定義は、次のアクセス権を持つ任意のロールです。

  • Microsoft.Network/expressRouteCircuits/authorizations/write
  • Microsoft.Network/expressRouteCircuits/authorizations/read
  • Microsoft.Network/expressRouteCircuits/authorizations/delete

これには、共同作成者、所有者、ネットワーク共同作成者などの組み込みロールが含まれます。 さまざまな組み込みロールの詳細な説明。

回線所有者の操作

承認を作成するには

回線所有者が承認を作成すると、承認キーが作成されます。回線ユーザーは、その承認キーを使用して、各自の仮想ネットワーク ゲートウェイを ExpressRoute 回線に接続します。 承認は、1 つの接続に対してのみ有効です。

次のコマンドレット スニペットは、承認を作成する方法を示しています。

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
Add-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization1"
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$auth1 = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization1"

前のコマンドに対する応答には、承認キーと状態が含まれます。

Name                   : MyAuthorization1
Id                     : /subscriptions/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/resourceGroups/ERCrossSubTestRG/providers/Microsoft.Network/expressRouteCircuits/CrossSubTest/authorizations/MyAuthorization1
Etag                   : &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
AuthorizationKey       : ####################################
AuthorizationUseStatus : Available
ProvisioningState      : Succeeded

承認を確認するには

回線所有者は、次のコマンドレットを実行し、特定の回線で発行されるすべての承認を確認できます。

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$authorizations = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit

承認を追加するには

回線所有者は、次のコマンドレットを使用して承認を追加できます。

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
Add-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "MyAuthorization2"
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"
$authorizations = Get-AzExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit

承認を削除するには

回線所有者は、次のコマンドレットを実行して、ユーザーに対する承認を取り消したり削除したりすることができます。

Remove-AzExpressRouteCircuitAuthorization -Name "MyAuthorization2" -ExpressRouteCircuit $circuit
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit

回線ユーザーの操作

回線ユーザーは、ピア ID と回線所有者が作成した承認キーを必要とします。 承認キーは GUID です。

ピア ID は、次のコマンドから確認できます。

Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG"

接続の承認を利用するには

回線ユーザーは次のコマンドレットを実行し、リンク承認を利用できます。

$id = "/subscriptions/********************************/resourceGroups/ERCrossSubTestRG/providers/Microsoft.Network/expressRouteCircuits/MyCircuit"    
$gw = Get-AzVirtualNetworkGateway -Name "ExpressRouteGw" -ResourceGroupName "MyRG"
$connection = New-AzVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName "RemoteResourceGroup" -Location "East US" -VirtualNetworkGateway1 $gw -PeerId $id -ConnectionType ExpressRoute -AuthorizationKey "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"

接続の承認を解除するには

ExpressRoute 回線を仮想ネットワークにリンクしている接続を削除することで、承認を解除できます。

仮想ネットワーク接続を変更する

仮想ネットワーク接続の特定のプロパティを更新することができます。

接続の重みを更新するには

仮想ネットワークは、複数の ExpressRoute 回線に接続できます。 複数の ExpressRoute 回線から同じプレフィックスを受け取る場合があります。 このプレフィックスを宛先とするトラフィックをどの接続が送信するかを選択するには、接続の RoutingWeight を変更します。 RoutingWeight が最も高い接続でトラフィックが送信されます。

$connection = Get-AzVirtualNetworkGatewayConnection -Name "MyVirtualNetworkConnection" -ResourceGroupName "MyRG"
$connection.RoutingWeight = 100
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection

RoutingWeight の範囲は 0 ~ 32000 です。 既定値は 0 です。

ExpressRoute FastPath を構成する

仮想ネットワーク ゲートウェイが Ultra Performance または ErGw3AZ である場合は、ExpressRoute FastPath を有効にすることができます。 FastPath により、オンプレミス ネットワークと仮想ネットワークの間の 1 秒あたりのパケット数や 1 秒あたりの接続数などのデータ パスのパフォーマンスが向上します。

新しい接続で FastPath を構成する

$circuit = Get-AzExpressRouteCircuit -Name "MyCircuit" -ResourceGroupName "MyRG" 
$gw = Get-AzVirtualNetworkGateway -Name "MyGateway" -ResourceGroupName "MyRG" 
$connection = New-AzVirtualNetworkGatewayConnection -Name "MyConnection" -ResourceGroupName "MyRG" -ExpressRouteGatewayBypass -VirtualNetworkGateway1 $gw -PeerId $circuit.Id -ConnectionType ExpressRoute -Location "MyLocation" 

既存の接続を更新して FastPath を有効にする

$connection = Get-AzVirtualNetworkGatewayConnection -Name "MyConnection" -ResourceGroupName "MyRG" 
$connection.ExpressRouteGatewayBypass = $True
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection

仮想ネットワーク ピアリングと UDR のサポートでの FastPath は、"スポーク" 仮想ネットワークにデプロイされた VM にトラフィックを直接送信し (仮想ネットワーク ピアリング経由で接続)、GatewaySubnet で構成されている UDR を優先的に使用します。 この機能は現在一般提供 (GA) されています。

FastPath と Private Link を使用すると、ExpressRoute 経由で送信される Private Link トラフィックは、データ パス内の ExpressRoute 仮想ネットワーク ゲートウェイをバイパスします。 これらの機能を両方とも有効にすると、FastPath は"スポーク" 仮想ネットワークにデプロイされているプライベート エンドポイントにトラフィックを直接送信します。

これらのシナリオは、10 Gbps と 100 Gbps の ExpressRoute Direct 回線に関連付けられた接続の限定的なシナリオについて一般提供されています。 これを有効にするには、次のガイダンスに従います。

  1. サブスクリプションの登録を要求するには、こちらの Microsoft フォームに入力してください。 リクエストが完了するまでに最大 4 週間かかる場合があるため、それに応じてデプロイを計画してください。
  2. 手順 1 の確認を受け取ったら、ターゲットの Azure サブスクリプションで次の Azure PowerShell コマンドを実行します。
$connection = Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <resource-group> -ResourceName <connection-name>
$connection.ExpressRouteGatewayBypass = $true
$connection.EnablePrivateLinkFastPath = $true
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection

Note

接続モニターを使用して、FastPath を使用してトラフィックが宛先に到達していることを確認できます。

Note

限定的な GA シナリオで FastPath の Private Link サポートを有効にする場合、完了するまでに 4 週間以上かかる場合があります。 事前にデプロイを計画してください。

仮想ネットワーク ピアリングと UDR の FastPath サポートは、ExpressRoute Direct 接続でのみ使用できます

Note

FastPath が既に構成されていて、限定的な GA 機能への登録を希望される場合は、次を実行する必要があります。

  1. Azure PowerShell コマンドを使用して、いずれかの FastPath 機能に登録します。
  2. ターゲット接続で FastPath を無効にしてから再度有効にします。
  3. 限定的な GA 機能を切り替える場合は、ターゲット プレビュー PowerShell コマンドを使用してサブスクリプションを登録してから、接続で FastPath を無効にし、再び有効にします。

リソースをクリーンアップする

ExpressRoute 接続が不要になった場合は、ゲートウェイが配置されているサブスクリプションから、Remove-AzVirtualNetworkGatewayConnection コマンドを使用して、ゲートウェイと回線の間のリンクを削除します。

Remove-AzVirtualNetworkGatewayConnection "MyConnection" -ResourceGroupName "MyRG"

次のステップ

このチュートリアルでは、同じサブスクリプションと別のサブスクリプションの回線に、仮想ネットワークを接続する方法について説明しました。 ExpressRoute ゲートウェイの詳細については、ExpressRoute の仮想ネットワーク ゲートウェイに関するページを参照してください。

PowerShell を使用して Microsoft ピアリングのルート フィルターを構成する方法を学ぶには、次のチュートリアルに進んでください。