Azure PowerShell を使用して Azure Stack Edge Mini R デバイスで VPN を構成する
VPN オプションを指定すると、Azure Stack Edge Mini R または Azure Stack Edge Pro R デバイスから Azure への TLS 経由で移動中のデータに対する 2 番目の暗号化レイヤーが提供されます。 Azure portal または Azure PowerShell を使用して、Azure Stack Edge Mini R デバイスで VPN を構成することができます。
この記事では、クラウドで構成を作成するために Azure PowerShell スクリプトを使用して、Azure Stack Edge Mini R デバイスでポイント対サイト (P2S) VPN を構成するのに必要な手順について説明します。 Azure Stack Edge デバイスでの構成は、ローカル UI を介して行われます。
VPN の設定について
P2S VPN ゲートウェイ接続を使用すると、個々のクライアント コンピューターまたは Azure Stack Edge Mini R デバイスから仮想ネットワークへのセキュリティで保護された接続を作成することができます。 クライアント コンピューターまたはデバイスからの P2S 接続を開始します。 この場合の P2S 接続には、標準ベースの IPsec VPN ソリューションである IKEv2 VPN が使用されます。
一般的なワークフローには次の手順が含まれます。
- 構成の前提条件。
- Azure で必要なリソースを設定します。
- 仮想ネットワークと必要なサブネットを作成して構成します。
- Azure VPN ゲートウェイ (仮想ネットワーク ゲートウェイ) を作成して構成します。
- Azure Firewall を設定し、ネットワークとアプリの規則を追加します。
- Azure ルーティング テーブルを作成し、ルートを追加します。
- VPN ゲートウェイでポイント対サイトを有効にします。
- クライアント アドレス プールを追加します。
- トンネルの種類を構成します。
- 認証の種類を構成します。
- 証明書を作成します。
- 証明書をアップロードする。
- 電話帳をダウンロードします。
- デバイスのローカル Web UI で VPN を設定します。
- 電話帳を指定します。
- サービス タグ (json) ファイルを指定します。
詳しい手順については、次のセクションで説明します。
前提条件を構成する
Azure Stack Edge Mini R デバイスのインストールに関するページの手順に従ってインストールされている Azure Stack Edge Mini R デバイスにアクセスできる必要があります。 このデバイスで Azure との P2S 接続が確立されます。
Azure で Azure Stack Edge サービスに対して使用可能になっている有効な Azure サブスクリプションにアクセスできる必要があります。 このサブスクリプションを使用して、Azure Stack Edge Mini R デバイスを管理するための対応するリソースを Azure に作成します。
Azure Stack Edge Mini R デバイスにアクセスするために使用する Windows クライアントにアクセスできること。 このクライアントを使用して、クラウドに構成をプログラムで作成します。
Windows クライアントに必要なバージョンの PowerShell をインストールするには、次のコマンドを実行します。
Install-Module -Name Az -AllowClobber -Scope CurrentUser Import-Module Az.Accounts
Azure アカウントとサブスクリプションに接続するには、次のコマンドを実行します。
Connect-AzAccount Set-AzContext -Subscription "<Your subscription name>"
Azure Stack Edge Mini R デバイスで使用する Azure サブスクリプション名を指定して、VPN を構成します。
クラウドで構成を作成するために必要なスクリプトをダウンロードします。 このスクリプトでは以下を行います。
- Azure 仮想ネットワークとサブネット GatewaySubnet および AzureFirewallSubnet を作成します。
- Azure VPN ゲートウェイを作成して構成します。
- Azure ローカル ネットワーク ゲートウェイを作成して構成します。
- Azure VPN ゲートウェイとローカル ネットワーク ゲートウェイの間に Azure VPN 接続を作成して構成します。
- Azure Firewall を作成し、ネットワークの規則とアプリの規則を追加します。
- Azure ルーティング テーブルを作成し、それにルートを追加します。
Azure portal で、Azure リソースを作成するリソース グループを作成します。 Azure portal のサービスの一覧に移動し、[リソース グループ] を選んでから [+ 追加] を選択します。 サブスクリプションの情報とリソース グループの名前を指定してから、[作成] を選択します。 このリソース グループに移動する場合、現時点ではその下にリソースを含めることはできません。
Azure Stack Edge Mini R デバイスの
.cer
形式で、Base 64 でエンコードされた証明書が必要になります。 この証明書は、秘密キーと共にpfx
として Azure Stack Edge デバイスにアップロードする必要があります。 また、この証明書は、P2S 接続を確立しようとしているクライアント上のストアの信頼されたルートにインストールする必要もあります。
スクリプトの使用
まず、parameters-p2s.json
ファイルを変更してパラメーターを入力します。 次に、変更された json ファイルを使用してスクリプトを実行します。
これらの各手順については、以下のセクションで説明します。
サービス タグ ファイルをダウンロードする
スクリプトをダウンロードしたフォルダーには、既に ServiceTags.json
ファイルがある可能性があります。 ない場合は、サービス タグ ファイルをダウンロードできます。
Azure からローカル クライアントにサービス タグをダウンロードして、スクリプトを含む同じフォルダーに json ファイルとして保存しますhttps://www.microsoft.com/download/details.aspx?id=56519。
このファイルは、後の手順でローカル Web UI にアップロードされます。
パラメーター ファイルを変更する
最初の手順として、parameters-p2s.json
ファイルを変更し、その変更を保存します。
作成する Azure リソースについては、次の名前を指定します。
パラメーター名 | 説明 |
---|---|
virtualNetworks_vnet_name | Azure Virtual Network 名 |
azureFirewalls_firewall_name | Azure Firewall 名 |
routeTables_routetable_name | Azure ルート テーブル名 |
publicIPAddresses_VNGW_public_ip_name | 仮想ネットワーク ゲートウェイのパブリック IP アドレス名 |
virtualNetworkGateways_VNGW_name | Azure VPN ゲートウェイ (仮想ネットワーク ゲートウェイ) 名 |
publicIPAddresses_firewall_public_ip_name | Azure Firewall のパブリック IP アドレス名 |
location | これは、仮想ネットワークを作成するリージョンです。 デバイスに関連付けられているのと同じリージョンを選択します。 |
RouteTables_routetable_onprem_name | これは追加のルート テーブルの名前です。ファイアウォールで Azure Stack Edge デバイスにパケットをルーティングして戻すのに役立ちます。 このスクリプトでは 2 つの追加のルートを作成し、default と FirewallSubnet をこのルート テーブルに関連付けます。 |
仮想ネットワークと関連するサブネット (default、firewall、GatewaySubnet) を含む、作成される次の Azure リソースの IP アドレスとアドレス空間を指定します。
パラメーター名 | 説明 |
---|---|
VnetIPv4AddressSpace | これは、仮想ネットワークに関連付けられているアドレス空間です。 Vnet IP 範囲をプライベート IP 範囲 (https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses) として指定します。 |
DefaultSubnetIPv4AddressSpace | これは、仮想ネットワークの Default サブネットに関連付けられているアドレス空間です。 |
FirewallSubnetIPv4AddressSpace | これは、仮想ネットワークの Firewall サブネットに関連付けられているアドレス空間です。 |
GatewaySubnetIPv4AddressSpace | これは、仮想ネットワークの GatewaySubnet に関連付けられているアドレス空間です。 |
GatewaySubnetIPv4bgpPeeringAddress | これは BGP 通信用に予約されている IP アドレスであり、仮想ネットワークの GatewaySubnet に関連付けられているアドレス空間に基づいています。 |
ClientAddressPool | この IP アドレスは、Azure portal での P2S 構成のアドレス プールに使用されます。 |
PublicCertData | 公開証明書データは、それに接続している P2S クライアントを認証するために VPN ゲートウェイによって使用されます。 証明書データを取得するには、ルート証明書をインストールします。 証明書が Base 64 でエンコードされており、拡張子が .cer であることを確認します。 この証明書を開き、1 つの連続した行の ==BEGIN CERTIFICATE== と ==END CERTIFICATE== の間にある証明書のテキストをコピーします。 |
スクリプトを実行する
これらの手順に従って、変更された parameters-p2s.json
を使用し、スクリプトを実行して Azure リソースを作成します。
PowerShell を実行します。 スクリプトが配置されているディレクトリに切り替えます。
スクリプトを実行します。
.\AzDeployVpn.ps1 -Location <Location> -AzureAppRuleFilePath "appRule.json" -AzureIPRangesFilePath "<Service tag json file>" -ResourceGroupName "<Resource group name>" -AzureDeploymentName "<Deployment name>" -NetworkRuleCollectionName "<Name for collection of network rules>" -Priority 115 -AppRuleCollectionName "<Name for collection of app rules>"
Note
このリリースでは、スクリプトは米国東部の場所でのみ動作します。
スクリプトを実行するときに、次の情報を入力する必要があります。
パラメーター 説明 場所 これは、Azure リソースを作成する必要があるリージョンです。 AzureAppRuleFilePath これは appRule.json
のファイル パスです。AzureIPRangesFilePath これは、前の手順でダウンロードしたサービス タグの json ファイルです。 ResourceGroupName これは、すべての Azure リソースが作成されるリソース グループの名前です。 AzureDeploymentName これは Azure デプロイの名前です。 NetworkRuleCollectionName これは、作成されて Azure Firewall に追加されるすべてのネットワーク規則のコレクションの名前です。 優先順位 これは、作成されるすべてのネットワークおよびアプリケーションの規則に割り当てられる優先度です。 AppRuleCollectionName これは、作成されて Azure Firewall に追加されるすべてのアプリケーション規則のコレクションの名前です。 サンプル出力を次に示します。
PS C:\Offline docs\AzureVpnConfigurationScripts> .\AzDeployVpn.ps1 -Location eastus -AzureAppRuleFilePath "appRule.json" -AzureIPRangesFilePath ".\ServiceTags_Public_20200203.json" -ResourceGroupName "mytmarg3" -AzureDeploymentName "tmap2stestdeploy1" -NetworkRuleCollectionName "testnrc1" -Priority 115 -AppRuleCollectionName "testarc2" validating vpn deployment parameters Starting vpn deployment C:\Offline docs\AzureVpnConfigurationScripts\parameters-p2s.json C:\Offline docs\AzureVpnConfigurationScripts\template-p2s.json vpn deployment: tmap2stestdeploy1 started and status: Running Waiting for vpn deployment completion.... ==== CUT ==================== CUT ============== Adding route 191.236.0.0/18 for AzureCloud.eastus Adding route 191.237.0.0/17 for AzureCloud.eastus Adding route 191.238.0.0/18 for AzureCloud.eastus Total Routes:294, Existing Routes: 74, New Routes Added: 220 Additional routes getting added
重要
- スクリプトの実行には約 90 分かかります。 必ず、スクリプトが開始される直前にネットワークにサインインしてください。
- 何らかの理由でスクリプトに失敗したセッションがある場合は、必ず、リソース グループを削除し、その下に作成されたすべてのリソースを削除してください。
スクリプトが完了した後、そのスクリプトが存在するのと同じフォルダーにデプロイ ログが生成されます。
Azure リソースを検証する
スクリプトを正常に実行した後、すべてのリソースが Azure で作成されたことを検証します。 作成したリソース グループに移動します。 以下のリソースが表示されるはずです。
VPN プロファイルの電話帳をダウンロードする
この手順では、ご利用のデバイスの VPN プロファイルをダウンロードします。
Azure portal で、リソース グループにアクセスしてから、前の手順で作成した仮想ネットワーク ゲートウェイを選択します。
[設定] > [ポイント対サイトの構成] に移動します。 [VPN クライアントのダウンロード] を選択します。
zip 形式のプロファイルを保存し、Windows クライアントに抽出します。
WindowsAmd64 フォルダーに移動し、
.exe
(VpnClientSetupAmd64.exe) を展開します。一時パスを作成します。 次に例を示します。
C:\NewTemp\vnet\tmp
PowerShell を実行し、
.exe
が配置されているディレクトリに移動します。.exe
を実行するには、次のように入力します。.\VpnClientSetupAmd64.exe /Q /C /T:"C:\NewTemp\vnet\tmp"
一時パスには新しいファイルが含まれます。 出力例を次に示します。
PS C:\windows\system32> cd "C:\Users\Ase\Downloads\vngw5\WindowsAmd64" PS C:\Users\Ase\Downloads\vngw5\WindowsAmd64> .\VpnClientSetupAmd64.exe /Q /C /T:"C:\NewTemp\vnet\tmp" PS C:\Users\Ase\Downloads\vngw5\WindowsAmd64> cd "C:\NewTemp\vnet" PS C:\NewTemp\vnet> ls .\tmp Directory: C:\NewTemp\vnet\tmp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2/6/2020 6:18 PM 947 8c670077-470b-421a-8dd8-8cedb4f2f08a.cer -a---- 2/6/2020 6:18 PM 155 8c670077-470b-421a-8dd8-8cedb4f2f08a.cmp -a---- 2/6/2020 6:18 PM 3564 8c670077-470b-421a-8dd8-8cedb4f2f08a.cms -a---- 2/6/2020 6:18 PM 11535 8c670077-470b-421a-8dd8-8cedb4f2f08a.inf -a---- 2/6/2020 6:18 PM 2285 8c670077-470b-421a-8dd8-8cedb4f2f08a.pbk -a---- 2/6/2020 6:18 PM 5430 azurebox16.ico -a---- 2/6/2020 6:18 PM 4286 azurebox32.ico -a---- 2/6/2020 6:18 PM 138934 azurevpnbanner.bmp -a---- 2/6/2020 6:18 PM 46064 cmroute.dll -a---- 2/6/2020 6:18 PM 196 routes.txt PS C:\NewTemp\vnet>
.pbk ファイルは、VPN プロファイルの電話帳です。 これはローカル UI で使用します。
デバイスでの VPN 構成
Azure Stack Edge デバイスのローカル UI で、これらの手順に従います。
ローカル UI で、[VPN] ページに移動します。 [VPN 状態] で、[構成] を選択します。
[VPN の構成] ブレードで、次の操作を行います。
- [Upload phone book file]\(電話帳ファイルのアップロード\) で、前の手順で作成した .pbk ファイルを指定します。
- [Upload public IP list config file]\(パブリック IP リスト構成ファイルのアップロード\) で、Azure データ センターの IP 範囲の JSON ファイルを入力として指定します。 このファイルは、前の手順で https://www.microsoft.com/download/details.aspx?id=56519 からダウンロードしたものです。
- リージョンとして [eastus] を選び、[適用] を選択します。
[IP address ranges to be accessed using VPN only]\(VPN のみを使用してアクセスする IP アドレス範囲\) セクションで、Azure Virtual Network 用に選択した Vnet IPv4 の範囲を入力します。
クライアント接続を検証する
- Azure portal で、VPN ゲートウェイに移動します。
- [設定] > [ポイント対サイトの構成] に移動します。 [割り当て済み IP アドレス] に、Azure Stack Edge デバイスの IP アドレスが表示されるはずです。
VPN 経由のデータ転送を確認する
VPN が動作していることを確認するには、データを SMB 共有にコピーします。 Azure Stack Edge デバイスで「共有の追加」の手順に従います。
クライアント システムにマウントした SMB 共有に、\data\pictures\waterfall.jpg などのファイルをコピーします。
データがコピーされている間に、そのデータが VPN 経由で移動していることを確認するには、次のようにします。
Azure portal で VPN ゲートウェイに移動します。
[監視] > [メトリック] に移動します。
右側のペインで、VPN ゲートウェイとして [スコープ]、ゲートウェイ P2S 帯域幅として [メトリック]、Avg として [集計] を選びます。
データのコピー時に、帯域幅の使用率が増え、データのコピーが完了すると、帯域幅の使用率が減ることがわかります。
クラウド上のストレージ アカウントにこのファイルが表示されていることを検証します。
問題をデバッグする
問題をデバッグするには、次のコマンドを使用します。
Get-AzResourceGroupDeployment -DeploymentName $deploymentName -ResourceGroupName $ResourceGroupName
サンプル出力を次に示します。
PS C:\Projects\TZL\VPN\Azure-VpnDeployment> Get-AzResourceGroupDeployment -DeploymentName "tznvpnrg14_deployment" -ResourceGroupName "tznvpnrg14"
DeploymentName : tznvpnrg14_deployment
ResourceGroupName : tznvpnrg14
ProvisioningState : Succeeded
Timestamp : 1/21/2020 6:23:13 PM
Mode : Incremental
TemplateLink :
Parameters :
Name Type Value
=========================================== ========================= ==========
virtualNetworks_vnet_name String tznvpnrg14_vnet
azureFirewalls_firewall_name String tznvpnrg14_firewall
routeTables_routetable_name String tznvpnrg14_routetable
publicIPAddresses_VNGW_public_ip_name String tznvpnrg14_vngwpublicip
virtualNetworkGateways_VNGW_name String tznvpnrg14_vngw
publicIPAddresses_firewall_public_ip_name String tznvpnrg14_fwpip
localNetworkGateways_LNGW_name String tznvpnrg14_lngw
connections_vngw_lngw_name String tznvpnrg14_connection
location String East US
vnetIPv4AddressSpace String 172.24.0.0/16
defaultSubnetIPv4AddressSpace String 172.24.0.0/24
firewallSubnetIPv4AddressSpace String 172.24.1.0/24
gatewaySubnetIPv4AddressSpace String 172.24.2.0/24
gatewaySubnetIPv4bgpPeeringAddress String 172.24.2.254
customerNetworkAddressSpace String 10.0.0.0/18
customerPublicNetworkAddressSpace String 207.68.128.0/24
dbeIOTNetworkAddressSpace String 10.139.218.0/24
azureVPNsharedKey String 1234567890
dbE-Gateway-ipaddress String 207.68.128.113
Outputs :
Name Type Value
======================= ========================= ==========
virtualNetwork Object {
"provisioningState": "Succeeded",
"resourceGuid": "dcf673d3-5c73-4764-b077-77125eda1303",
"addressSpace": {
"addressPrefixes": [
"172.24.0.0/16"
]
================= CUT ============================= CUT ===========================
Get-AzResourceGroupDeploymentOperation -ResourceGroupName $ResourceGroupName -DeploymentName $AzureDeploymentName