AzureのP2S VPNをやったのでメモを残しておきます。
まずAzureのVPNには、P2SとS2Sがあります。それぞれ、Point to Siteと、Site to Siteで、P2Sは端末とAzureを、S2Sは拠点とAzureをVPN接続する接続方式です。今回は、このうちP2Sをやってみました。
手順概要
手順は以下の流れになります。
- VNet を作成する
- VPN ゲートウェイを作成する
- 証明書の生成をする(ルート証明書、クライアント証明書)
- VPN クライアント アドレス プールの追加する
- トンネルの種類と認証の種類を指定する
- ルート証明書の公開キー情報のアップロード
- VPN クライアントの設定を構成する
- Azure に接続する
参照:P2S VPN と証明書認証を使用して VNet に接続する: ポータル - Azure VPN Gateway | Microsoft Docs
手順のポイント
Docsに沿って実施すればできました。
VPNGatewayの作成はけっこう時間かかります。僕はDocsに記載の通り、45分くらいかかりました。P2Sの場合には、ポリシーベースのルーティングとする必要があります(ルートベースのルーティングはNG)
証明書作成は、以下のDocsにコマンドがあるので、それで実行すればOKです。
P2S 用の証明書を生成してエクスポートする: PowerShell - Azure VPN Gateway | Microsoft Docs
ぼくはWindows10の端末で実施しましたが、以下コマンドでルート証明書を作り、
$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject "CN=P2SRootCert" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign
続けて以下コマンドでクライアント証明書を作るだけです。
New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature `
-Subject "CN=P2SChildCert" -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")
VPN クライアント アドレス プールは適当な値で大丈夫です。192.168.1.0/24など。VPN接続した際に、このプールからIPアドレスが払い出されます。
「VPN クライアントの設定を構成する」の手順では、以下の「Download VPN Client」からVPNの構成をダウンロードします。
ダウンロードしたファイルにxmlファイルが含まれているので、これをAzure VPNクライアントにインポートすればOKです。Azure VPNクライアントはMicrosoftストアからダウンロードが可能です。
その他
Docsを見るとクライアント証明書の失効などもできるようです。別途試してみたいと思います。