SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

検証用途で Windows Server 2019 を Always On VPN のデバイストンネルで Azure と Point to Site 接続してみる

leave a comment

自宅の検証環境の VM と Azure 上の VM を VPN で接続して実施したい検証があり、「自宅の検証環境だと Site to Site 接続するの厳しいから、Point to Site 接続でやるか」と思って試した際のメモです。

2013 年に Auto-connect for point-to-site VPN. というフィードバックがあり、去年の中ごろに実装されたとフィードバックされた、Windows 10 クライアントの Always On VPN 接続という機能があります。
(実際には、Windows 10 1709 で実装された機能となり、2018 年の段階で昨日自走はされていたようですが)

Azure で Point to Site (ポイント対サイト) 接続をしようとした場合は、ポイント対サイト VPN について / ネイティブ Azure 証明書認証を使用した VNet へのポイント対サイト VPN 接続の構成:Azure portal に記載されているような、方法で接続をすることができますが、この方法は「ユーザー証明書として接続に使用する証明書を格納」して、接続するというような「ユーザーを主体とした」接続方式となっていました。
Always On VPN では、「ユーザートンネル」と言われている方式に近い (もしくはそのもの?) かと思います。

ユーザー_トンネル_は、ユーザーがデバイスにログオンした後にのみ接続されます。 ユーザートンネルを使用すると、ユーザーは VPN サーバー経由で組織のリソースにアクセスできます。

 
Always On VPN では、もう一つ「デバイストンネル」という接続方式があります。

_デバイストンネル_は、ユーザーがデバイスにログオンする前に、指定された VPN サーバーに接続します。 ログイン前の接続のシナリオとデバイス管理の目的は、デバイスのトンネルを使用することです。

こちらの方式だと、ユーザーのログイン前に VPN 接続され、今回、私が検証したいと思っている内容で活用できそうでしたので、デバイストンネル方式を使って Azure と接続してみることにしました。
設定方法については次の記事が参考になります。

前提の条件ですが、ざっくり書くと次のようになります。

  • ドメインに参加した、Windows 10 Enterprise Edition 1709 以降を使用
  • Azure の VPN ゲートウェイの SKU は IKEv2 を使用するため、Standard 以上にする
  • 証明書は内部証明機関によって発行されたクライアント認証用の証明書をローカルシステムアカウントに登録する
  • ポイント対サイトに登録する証明書は、上記の証明書を発行した内部証明機関のルート証明書

 
本来は Windows 10 Enterprise 向けの機能なのですが、1709 向けであれば、ドメイン参加した Windows Server 2019 でも動くだろうと思って、設定してとりあえず動いています。
接続時には IKEv2 が必要となるので、VPN ゲートウェイは Basic ではなく、Standard 以上が必要となります。
証明書については、ポイント対サイトを実施する際には自己署名証明書を使って証明書を作成してみることが多いかと思いますが、紹介した記事では、次のように書かれており、私も試してみたところ内部証明機関発行のクライアント証明書が必要そうでしたので、参加したドメインに AD CS を構築して証明書の自動登録の設定を行って、クライアント認証用の証明書を作成していました。

Root CA Certificate

The Always On VPN device tunnel is authenticated using a machine certificate issued to domain-joined Windows 10 Enterprise edition clients by the organization’s internal Certification Authority (CA). The CA’s root certificate must be uploaded to Azure for the VPN gateway to authorize device tunnel connections. The root CA certificate can be exported using the Certification Authority management console (certsrv.msc) or via the command line.

 
AD に証明書の自動登録のためのグループポリシーを設定して、
image
AD CS でワークステーション認証のテンプレートを複製した、テンプレートを作成して、複製したテンプレートの Domain Computers に自動登録を有効化しています。
image
これで、コンピューターの証明書が自動的に発行されるようにしたら、AD CS のルート証明書を Base64 でエクスポートして、その情報をポイント対サイトの証明書として登録を行います。
そのあとの作業は Windows 10 で VPN デバイストンネルを構成する に書かれている内容となります。
最初に、Azure ポータルの「ポイント対サイトの構成」の「VPN クライアントのダウンロード」からダウンロードできる VPN のクライアントを適当な環境にダウロードして展開しておきます。
image
展開をすると「Generic」の中に、「VpnSettings.xml」がありますので、
image
これを適当なエディタで開いて、「VpnServer」の設定内容 (接続先のサーバー名である、~.vpn.azure.com) を控えておきます。
そうしましたら Windows 10 で VPN デバイストンネルを構成する に記載されている作業に移ります。
最初にこのドキュメント内の XML をコピーしてファイルを作成し、「Servers」のセクションに先ほど確認した「VpnSettings.xml」の「VpnServer」の内容を記載します。
Route セクションについては、接続をした際のルートテーブルとして使用される内容となりますので、Azure 側の仮想ネットワークの IP レンジを設定しておけば良いかと思います。
XML の編集が終わったら、ドキュメントに記載されている PowerShell のスクリプトもコピーしておきます。
最後、Sysinternals から、PSTools をダウンロードして配置します。
(実際に使うのは、「PsExec」だけとなります)
これで設定を追加するための準備は整いました。
ドキュメントに書かれている PowerShell のスクリプトと XML ファイルは、次のディレクトリに配置し、PSTools は「C:\PSTools」に配置した前提では次のようなコマンドで VPN の設定を追加することができます。

  • C:\AlwaysOn VPN\VPN_Profile_Device.ps1
  • C:\AlwaysOn VPN\VPNProfile.xml

最初に PsExec で Local System で起動される PowerShell をインタラクティブな形で起動して、

C:\PSTools\PsExec.exe -i -s powershell

 
新しく起動してきた PowerShell のウィンドウで次のコマンドを実行することで、Local System のコンテキスト内に VPN の設定を追加します。

cd "C:\AlwaysOn VPN"
.\VPN_Profile_Device.ps1 -xmlFilePath .\VPNProfile.xml -ProfileName DeviceTunnel

 
このコマンドを実行することで、登録した内容を確認できます。

Get-VpnConnection -AllUserConnection

 
「rasphone.exe」から、GUI を使用した接続のテストもできますので、接続が可能かを確認しておくとよいかと。
設定に問題がなければ、接続をした状態にすることができます。
image
 
Windows 10 の場合はこれで端末を再起動しても、再起動後に自動的に接続がされるのですが、Windows Server 2019 では自動接続がされませんでしたので、今回はタスクスケジューラーのスタートアップのコマンドとして、Local System で次のコマンドを実行するようにしておきました。
(DeviceTunnel となっている個所は、PowerShell 実行時に指定した「-ProfileName」の内容となります)

rasdial DeviceTunnel

 
imageimage
image
先ほどの rasphone は GUI での接続でしたが、rasdial では CUI で接続ができます。
これらの対応をしておくと、Windows Server 2019 でも OS の起動時に自動的にポイント対サイトの接続が実行されるようにすることができました。

Share

Written by Masayuki.Ozawa

1月 30th, 2020 at 12:28 am

Posted in Microsoft Azure

Tagged with

Leave a Reply