Azure VPN Gateway(P2S)【Azureを使いこなしたい! 11】
0. 目次
コンテンツ
【今回の内容】
今回は、Azure VPN Gatewayを構成して、ローカルPCからAzure仮想ネットワーク(Vnet)へ安全にトラフィックを送信出来る、ポイント対サイト(P2S)接続を行いたいと思います。
Azure VPN Gatewayには、3つの接続構成があります。
• サイト間VPN接続(S2S):オンプレミスのデータセンターとAzure Vnetとの接続。
• ポイント対サイトVPN接続(P2S):個々のデバイスとAzure Vnetとの接続。
→Azure Vnetとオンプレミスの間で、 暗号化されたトラフィックをインターネットを介して送信します。
• VNet間VPN接続(VNet2VNet)
→Azure Vnet同士の間で、暗号化されたトラフィックをMicrosoftネットワークを介して送信します。
各仮想ネットワークに VPNゲートウェイは1 つしか作成出来ませんが、同一の VPNゲートウェイに対して複数の接続を作成することができます。
P2S接続は、オンプレミス側にVPNデバイスやパブリックIPアドレスが必要ありません。そのため、テレワークやリモート会議の場所から、AzureのVnetに接続する場合に便利です。また、管理者のみがVNetへの接続を必要とするなどクライアントが少ない場合にも、S2S の代替として使用するのがオススメです。
AzureでのAzure VPN GatewayはPaaSに分類されます。
【前提事項】
Azure VMを構築していること。(今回はWindows server2019を用いました)
1.VPNゲートウェイの作成
1-1.VPNゲートウェイの作成
※今回はAzure VM作成時に一緒に作成されたVnetを使用します。
Azure VMの作成についての詳細は、Azureを使いこなしたい! 1 ~仮想マシン Windows 10~を参照してください。
(1)Azure portalにて、<A>検索バーに[仮想ネットワークゲートウェイ]と入力します。 → <B>[仮想ネットワークゲートウェイ]をクリックします。
(2)[作成]または[仮想ネットワークゲートウェイの作成]をクリックします。
(3)<A>[サブスクリプション][地域]を選択します。[名前]を入力します。 → <B>デフォルトのままです。※1 → <C>[SKU][世代]を選択します。※2 → <D>[仮想ネットワーク]を選択します。 → <E>[ゲートウェイサブネットのアドレス範囲]を入力します。※3
※1 P2Sの構成では、ルートベースのVPNにする必要があります。
※2 今回は検証のため、[SKU]はBasicを選択しました。実際の運用にはBasic以外をご使用ください。
※3 将来ExpressRouteゲートウェイの追加などの変更のために十分な IPアドレスを確保するため、/27以上が推奨されています。
<F>デフォルトのままです。 → <G>[パブリックIPアドレス名]を入力します。 → <H>デフォルトのままです。 → <I>[次:タグ>]をクリックします。
VPNゲートウェイに関連付けられるパブリックIP アドレスリソースです。
(4)[次:確認および作成>]をクリックします。
※今回は検証のため、デフォルトのままとしました。
(5)[作成]をクリックします。
(6)デプロイが行われます。 → [リソースに移動]をクリックします。
(7)VPNゲートウェイが作成されました。
(8)<A>検索バーに[仮想ネットワーク(Vnet)]と入力します。 → <B>[仮想ネットワーク]をクリックします。
(9)作成したAzure VMとVPNゲートウェイが存在する[Vnet]をクリックします。
(10)<A>[アドレス空間]をクリックします。 → <B>[その他のアドレス範囲の追加]にVPNゲートウェイのアドレス空間を入力します。 → <C>[保存]をクリックします。
※ Azure は、ユーザーが割り当てたアドレス空間内のプライベートIPアドレスをVnet内のVPNゲートウェイに割り当てます。既存のVnetを使用する場合、プライベートIPアドレス空間をVPNゲートウェイ用に別途指定する必要があります。
これで、VPNゲートウェイの作成は完了です。
2.クライアントPCでの証明書の生成
2-1.自己署名ルート証明書、クライアント証明書の生成
※今回は、ローカルPCのWindows10に自己署名ルート証明書とクライアント証明書を生成します。
(1)<A>ローカルPCにて、[スタートメニュー]で右クリックします。 → <B>[Windows PowerShell]をクリックします。
(2)以下コマンドにて、自己署名ルート証明書を生成します。
[$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject “CN=自己署名ルート証明書の名前” -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation “Cert:\CurrentUser\My” -KeyUsageProperty Sign -KeyUsage CertSign]を入力します。 → Enterキーを押します。
※”Cert:\CurrentUser\My“のままの場合、インストールされる場所が”Certificates-Current User\Personal\Certificates” となります。
(3)以下コマンドにて、クライアント証明書を生成します。
[New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature `
-Subject “CN=クライアント証明書の名前” -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation “Cert:\CurrentUser\My” `
-Signer $cert -TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.2”)]を入力します。 → Enterキーを押します。
※”Cert:\CurrentUser\My“のままの場合、インストールされる場所が”Certificates-Current User\Personal\Certificates” となります。
※追加のクライアント証明書を生成する場合、または自己署名ルート証明書の生成後にWindows PowerShellウィンドウを閉じてしまった場合は、こちらを参照してください。【参考】マイクロソフト公式HP P2S 用の証明書を生成してエクスポートする: PowerShell – Azure VPN Gateway | Microsoft Learn
(4)[自己署名ルート証明書]と[クライアント証明書]が生成されました。
2-2.自己署名ルート証明書のエクスポート
(1)ローカルPCにて、<A>[スタートメニュー]で右クリックします。 → <B>[ファイル名を指定して実行]をクリックします。
(2)<A>[certmgr.msc]と入力します。 → <B>[OK]をクリックします。
※certlm.msc:ローカルコンピューターの証明書、certmgr.msc:現在のユーザーの証明書
(3)<A>[個人]を展開します。 → <B>[証明書]をクリックします。 → <C>[すべてのタスク]を展開します。 → <D>[エクスポート]をクリックします。
(4)[次へ]をクリックします。
(5)デフォルトのままです。 → [次へ]をクリックします。
(6)<A>[Base 64 encoded X.509 (.CER)]を選択します。 → <B>[次へ]をクリックします。
(7)<A>[参照]をクリックして保存先を指定します。 → <B>[次へ]をクリックします。
(8)[完了]をクリックします。
(9)[OK]をクリックします。
(10)自己署名ルート証明書がエクスポートされました。
3.Azure Vnetへの接続
3-1.VPNクライアントアドレスプールの追加
(1)Azure portalにて、先ほど作成した[仮想ネットワークゲートウェイ]のブレードを開きます。 → <A>[ポイント対サイトの構成]をクリックします。 → <B>[今すぐ構成]をクリックします。
(2)<A>[アドレスプール]を入力します。 → <B>ルート証明書の[名前]を入力します。
※P2Sで接続するクライアントは、このアドレスプール内のIPアドレスを動的に受け取ります。 接続元であるオンプレミスや、接続先とするVNetと、プライベートIPアドレス範囲が重複しないようにしてください。
(3)ローカルPCにて、<A>先ほどの[エクスポートした自己署名ルート証明書]を右クリックします。 → <B>[プログラムから開く]を展開します。 → <C>[メモ帳]をクリックします。
(4)[—–BEGIN CERTIFICATE—– と —–END CERTIFICATE—–の間の部分]をコピーします。
(5)Azure portal[ポイント対サイトの構成]ブレードにて、<A>[公開証明書データ]にペーストします。 → <B>[保存]をクリックします。
※復帰や改行のない 1 つの連続した行である必要があります。スペースがありますが、問題ありません。
(6)[VPNクライアントのダウンロード]をクリックします。
(7)[フォルダーに表示]をクリックします。
(8)[エクスプローラー]が開きます。 → <A>[仮想ネットワークゲートウェイ名のフォルダ]を右クリックします。→ <B>[すべて展開]をクリックします。
(9)<A>[参照]をクリックして展開先を指定します。 → <B>[展開]をクリックします。
(10)指定した展開先に移動し、[展開したフォルダー]をダブルクリックします。
(11)[WindowsAmd64]をダブルクリックします。
(12)<A>[VpnClientSetupAmd64]を右クリックします。 → <B>[管理者として実行]をクリックします。 → SmartScreenで[詳細][実行]をクリックします。
(13)[はい]をクリックします。
3-2.VPNクライアントの設定
(1)ローカルPCにて、<A>[スタートメニュー]を右クリックします。 → <B>[設定]をクリックします。
(2)[ネットワークとインターネット]をクリックします。
(3)<A>[VPN]をクリックします。 → <B>作成した[VPN接続]をクリックします。
(4)[接続]をクリックします。
(5)[続行]をクリックします。
(6)[接続済み]の表示に切り替わります。
※エラー702が表示される場合は、エラー720が表示された場合を参照してください。
これで、Azure VPN Gateway(P2S VPN)の構築は完了です!
※VPN接続時に、以下のようなエラー720が表示される場合があります。WANミニポート(IP)アダプターが、PCで正しくバインドされていない場合に発生するとのことです。【参考】マイクロソフト公式HP VPN 接続を確立しようとすると、”エラー 720: VPN 接続に接続できません”
(1)<A>ローカルPCにて、[スタートメニュー]で右クリックします。 → <B>[Windows PowerShell]をクリックします。
(2)以下コマンドにて、WANミニポート(IP)インターフェイスの名前を確認します。
[Get-NetAdapter -IncludeHidden | Where-Object {$_.InterfaceDescription -eq “WAN Miniport (IP)”}]を入力します。 → Enterキーを押します。
(3)以下コマンドにて、WANミニポート(IP)インターフェイスにバインドされているもの全てを表示します。
[Get-NetAdapterBinding -Name “ローカル エリア接続* 数字” -IncludeHidden -AllBindings]を入力します。 → Enterキーを押します。
※今回は、「リモート アクセスIP ARPドライバーが無効にはなっていない」、また「サード パーティ製フィルター ドライバーがバインドされていない」ため、WANミニポート(IP)インターフェイスドライバーを再インストールします。
(4)<A>[スタートメニュー]で右クリックします。 → <B>[デバイスマネージャー]をクリックします。
(5)<A>各[WAN Miniport]を右クリックします。 → <B>[デバイスのアンインストール]をクリックします。
※各[WAN Miniport]全てに行います。
(6)<A>上タブ[操作]をクリックします。 → <B>[ハードウェア変更のスキャン]をクリックします。
(7)WANミニポートデバイスが自動的に再インストールされます。
(8)再度、VPN接続を試みます。
※1 「リモート アクセスIP ARPドライバーが無効になっている」場合:以下のコマンドにて、有効にします。
→ [Windows PowerShell]にて、[Enable-NetAdapterBinding -Name “ローカル エリア接続* 数字” -IncludeHidden -AllBindings -ComponentID ms_wanarp]を入力します。 → Enterキーを押します。
※2 「サード パーティ製フィルター ドライバーがバインドされている」場合:以下のコマンドにて、無効にします。
→ [Windows PowerShell]にて、[Disable-NetAdapterBinding -Name “ローカル エリア接続* 数字” -IncludeHidden -AllBindings -ComponentID ComponentID]を入力します。 → Enterキーを押します。
4.確認
4-1.Azure VMへのVPN接続
※コマンドプロンプトにて[ipconfig/all]を使用して確認します。また、実際にAzure VMにRDP接続を試みます。
(1)<A>ローカルPCの[スタートメニュー]で右クリックします。 → <B>[ファイル名を指定して実行]をクリックします。
(2)<A>[cmd]と入力します。 → <B>[OK]をクリックします。
(3)[ipconfig/all]を入力します。 → Enterキーを押します。 → ローカルPCが、AzureのVnetに接続している(IPv4アドレスが設定したアドレスプール内である)ことが確認出来ます。
(4)<A>[スタートメニュー]を右クリックします。 → <B>[Windows PowerShell]をクリックします。
(5)以下コマンドにて、リソースグループに含まれるVMとプライベートIPアドレスの一覧を表示します。
[$VMs = Get-AzVM
$Nics = Get-AzNetworkInterface | Where VirtualMachine -ne $null
foreach($Nic in $Nics)
{$VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
$Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
$Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
Write-Output “$($VM.Name): $Prv,$Alloc”}]を入力します。 → Enterキーを押します。
※Azure Portalにて、個々のVMのブレードからでもプライベートIPアドレスの確認が出来ます。 → <A>[ネットワーク]をクリックします。 → <B>[NICプライベートIP]を確認します。
(6)<A>ローカルPCの[スタートメニュー]で右クリックします。 → <B>[ファイル名を指定して実行]をクリックします。
(7)<A>[mstsc]を入力します。 → <B>[OK]をクリックします。
(8)<A>[プライベートIPアドレス]を入力します。 → <B>[接続]をクリックします。 → Azure VMのRDP接続を行います。
※Azure VMのRDP接続方法については、Azureを使いこなしたい! 1 ~仮想マシン Windows 10~2-1. 仮想マシンへのRDP接続を参照してください。
(9)VPN接続することによって、プライベートIPアドレスでRDP接続が出来ました。
4-2.Azure FilesへのVPN接続
※Azure Filesの構築については、Azureを使いこなしたい! 2 ~Azure Files~を参照してください。
(1)Azure portalにて、[ストレージアカウント]のブレードを開きます。 → <A>[ネットワーク]をクリックします。 → <B>上タブ[プライベートエンドポイント接続]をクリックします。 → <C>[プライベートエンドポイント]をクリックします。
(2)<A>[サブスクリプション]を選択します。[リソースグループ]を選択または新規作成します。[名前]を入力します。 → <B>[地域]を選択します。 → <C>[次:リソース>]をクリックします。
※[地域]は、VPN接続先とするVNetと同じにする必要があります。
(3)<A>[file]を選択します。 → <B>[次:仮想ネットワーク>]をクリックします。
(4)<A>[仮想ネットワーク][サブネット]を選択します。 → <B>[次:DNS>]をクリックします。
※その他は、デフォルトのままとしました。状況に応じて変更してください。
(5)デフォルトのままです。 → [次:タグ>]をクリックします。
(6)[次:確認および作成>]をクリックします。
※今回は検証のため、デフォルトのままとしました。状況に応じて変更してください。
(7)[作成]をクリックします。
(8)デプロイが行われます。 → [リソースに移動]をクリックします。
(9)[DNSの構成]をクリックします。 → ネットワークインターフェイスの[IPアドレス]を確認します。
(10)ローカルPCにて、<A>[エクスプローラー]をクリックします。 → <B>[ネットワーク]をクリックします。 → <C>[ネットワークドライブの割り当て]をクリックします。
(11)<A>[ドライブ]を選択します。 → <B>[フォルダー]を入力します。 → <C>[完了]をクリックします。
※[フォルダー]は、[ \\先ほど作成したストレージアカウントのプライベートエンドポイントのIPアドレス\ファイル共有名]を入力します。
(12)<A>[別のアカウントを使用する]をクリックします。 → <B>[localhost \ストレージ アカウント名]を入力します。 → <C>[キー]を入力します。 → <D>[OK]をクリックします。
※[キー]は、ストレージアカウントの[アクセスキー]ブレードから確認出来ます。
(13)Azure Filesのファイル共有が確認出来ました。