ExpressRoute の ARM (Azure Resource Manager) 版が出た当初は同一サブスクリプション内の仮想ネットワーク (Vnet) (実際には仮想ネットワーク ゲートウェイ) との接続方法しか提供されていませんでしたが、現在は「承認」を作成、承認情報 (Peer ID, 認証キー) を元に別サブスクリプション内の VNet との接続が可能となっています (承認は、1 つの接続に対してのみ有効)。
承認の作成、VNet との接続は Azure ポータルではなく、Azure PowerShell で実施する必要があります。
手順については、以下の Azure ドキュメントに詳しい説明とともに記載がありますが、少しはまった部分もあったため、自分の備忘録として纏めてみました。
※Azure PowerShell v1.6.0 で確認しています。
- PowerShell を使用した ExpressRoute 回線への仮想ネットワークのリンク | Microsoft Azure
https://azure.microsoft.com/ja-jp/documentation/articles/expressroute-howto-linkvnet-arm/
設定手順
前提条件を満たしている上で以下のような環境での手順となります。
- 回線所有者 : ExpressRoute 回線を作成している Azure サブスクリプション
※Subscription A としています。 - 回線ユーザー : 回線所有者が作成したExpressRoute 回線を利用するサブスクリプション
※Subscription B としています。
大まかには、以下の流れとなります。
- ExpressRoute 回線に対する承認を作成 (Subscription A で実施)
- 承認情報を用いて、仮想ネットワーク ゲートウェイを接続 (Subscription B で実施)
前提条件
手順を行う際の前提条件は以下となります (Azure モジュールのインポートなどの準備は省略しています)。
- SubScription A 側でExpressRoute 回線の作成 (ServiceProviderProvisioningState が「Provisioned」の状態)、およびルーティング設定が完了済
- Azure リソース マネージャーと PowerShell を使用して ExpressRoute 回線を作成および変更する | Microsoft Azure
https://azure.microsoft.com/ja-jp/documentation/articles/expressroute-howto-circuit-arm/ - ExpressRoute 回線のルーティングを構成する方法 |Microsoft Azure
https://azure.microsoft.com/ja-jp/documentation/articles/expressroute-howto-routing-arm/
- Azure リソース マネージャーと PowerShell を使用して ExpressRoute 回線を作成および変更する | Microsoft Azure
- SubScription B 側で VNet、および仮想ネットワークゲートウェイの作成まで完了
- ARM の PowerShell を使用した仮想ネットワークの作成 | Microsoft Azure
https://azure.microsoft.com/ja-jp/documentation/articles/virtual-networks-create-vnet-arm-ps/ - Resource Manager と PowerShell を使用した ExpressRoute の仮想ネットワークへの VNet ゲートウェイの追加 | Microsoft Azure
https://azure.microsoft.com/ja-jp/documentation/articles/expressroute-howto-add-gateway-resource-manager/
- ARM の PowerShell を使用した仮想ネットワークの作成 | Microsoft Azure
手順1. ExpressRoute 回線に対する承認を作成 (Subscription A で実施)
- 以下のコマンドを実行して、承認を作成する ExpressRoute 回線情報を変数 $ciruit に格納します。
$circuit = Get-AzureRmExpressRouteCircuit -Name "<ExpressRoute 回線名>" -ResourceGroupName "<リソース グループ名>"
- 以下のコマンドを実行して、ExpressRoute 回線に対する承認を作成、設定します。
Add-AzureRmExpressRouteCircuitAuthorization -Name "<ExpressRoute 回線名に対する承認名>" -ExpressRouteCircuit $circuit Set-AzureRmExpressRouteCircuit -ExpressRouteCircuit $circuit
- 以下のコマンドを実行して、ExpressRoute 回線に対する承認が情報として反映されているか確認します。
※情報の表示までに 5 ~ 10 分程度掛かる場合があります。Get-AzureRmExpressRouteCircuitAuthorization -ExpressRouteCircuit $circuit -Name "<ExpressRoute 回線名に対する承認名>"
Get-AzureRmExpressRouteCircuitAuthorization コマンドレットでは、承認キー (AuthorizationKey) は確認することは可能ですが、Peer ID を確認することはできない点に注意してください。
※表示されている ID は、「Peer ID」ではなく、「Authorization ID」。
- 以下のコマンドを実行して、Peer ID および認証キーを確認します。
Get-AzureRmExpressRouteCircuit -Name "<ExpressRoute 回線名>" -ResourceGroupName "<リソース グループ名>"
手順2. 承認情報を用いて、仮想ネットワーク ゲートウェイを接続 (Subscription B で実施)
- 以下のコマンドを実行し、手順 1-4 で確認した Peer ID の値を変数 $id に格納します。
$id = "/subscriptions/<サブスクリプション ID>/resourceGroups/<リソース グループ名>/providers/Microsoft.Network/expressRouteCircuits/<ExpressRoute 回線名>"
※手順 1-4 で確認した Peer ID
- 以下のコマンドを実行し、手順 1-4 で確認した認証キーの値を変数 $authkey に格納します。
$authkey = "KKKKKKKK-LLLL-MMMM-NNNN-OOOOOOOOOOOO"
※手順 1-4 で確認した認証キー
- 以下のコマンドを実行し、接続する仮想ネットワークゲートウェイの情報を変数 $gw に格納します。
$gw = Get-AzureRmVirtualNetworkGateway -Name "<仮想ネットワーク ゲートウェイ名>" -ResourceGroupName "<リソース グループ名>"
- 以下のコマンドを実行し、認証情報を用いて ExpressRoute 回線と仮想ネットワークゲートウェイを接続します。
New-AzureRmVirtualNetworkGatewayConnection -Name "<接続名>" -ResourceGroupName "<リソース グループ名>" -Location "<ロケーション名>" -VirtualNetworkGateway1 $gw -PeerId $id -ConnectionType ExpressRoute -AuthorizationKey $authkey
参考
- ExpressRoute – クラウド統合ソリューション | Microsoft Azure
https://azure.microsoft.com/ja-jp/services/expressroute/ - ExpressRoute Documentation | Azure
https://azure.microsoft.com/ja-jp/documentation/services/expressroute/ - PowerShell を使用した ExpressRoute 回線への仮想ネットワークのリンク | Microsoft Azure
https://azure.microsoft.com/ja-jp/documentation/articles/expressroute-howto-linkvnet-arm/