Azure Advent Calendar 2021 12/12(日)の記事として投稿します。
0.構成図
今回の構成図。自宅の端末からPoint to Site(P2S)でAzure仮想ネットワークに閉域で接続し、App Serviceに安全に接続する。
1.準備
以下リソースを作成しておく。
- リソースグループ
- 仮想ネットワーク(Vnet。今回は192.168.0.0/20)
- GatewaySubnet(今回は192.168.5.0/24)
- アプリケーションゲートウェイ用サブネット(今回は192.168.10.0/24)
- 仮想ネットワークゲートウェイ(VPNGW)
- App Service(BasicプランでOK。ランタイム等も適当で)
インターネットに接続している自宅の端末から、作成したApp Serviceにアクセスできることを確認しておく。今回ブラウザはGoogle Chromeを使用している。
2.アプリケーションゲートウェイの作成
1.で作成したリソースグループに、アプリケーションゲートウェイを作成する。
◆基本◆
-
インスタンスの詳細
- ゲートウェイ名:任意
- 地域:東日本
- レベル:Standard v2
- 自動スケール:いいえ
- インスタンス数:2
- 可用性ゾーン:なし
- HTTP2:無効
-
仮想ネットワークの構成
◆フロントエンドの数◆
- フロントエンドの種類:両方(今回プライベートIPが必要だが、プライベートIPのみは選択できないため)
- パブリックIPアドレス:新規
- プライベートIPアドレスの指定:はい
◆バックエンド◆
◆構成◆
ルーティング規則の追加
####ルール名:任意(今回はAGWRoutingRole)
リスナー
バックエンドターゲット
- ターゲットの種類:バックエンドプール
- バックエンドターゲット:作成済みのバックエンドプール(今回はAGWBackendPool)
HTTP設定(新規作成)
- HTTP設定名:任意(今回はHTTPSettings)
- バックエンドプロトコル:HTTP
- バックエンドポート:80
-
追加設定
- Cookieベースのアフィニティ:無効化
- 接続のドレイン:無効化
- 要求のタイムアウト:20(デフォルト)
- バックエンドパスのオーバーライド:-(空欄)
- ホスト名
タグの作成は任意。確認と作成からアプリケーションゲートウェイを作成する。
3.アプリケーションゲートウェイの設定変更
2.で作成したアプリケーションゲートウェイの設定を変更する。
リソースをクリックし画面左側メニューから「バックエンドプール」をダブルクリックする。
「バックエンドプールの編集」画面が開く。
- ターゲットを持たないバックエンドプールを追加します:いいえ
- バックエンドのターゲット
- ターゲットの種類:App Service
- ターゲット:1.で作成したApp serviceを選択(今回はAppService-emiki)
「バックエンド正常性」より、アプリケーションゲートウェイのバックエンドに設定したApp Serviceが正常か確認する。
ここまで設定すると、アプリケーションゲートウェイのフロントエンドプライベートIPにアクセスした際、バックエンドに設定したApp Serviceにルーティングされるようになる。
4.サービスエンドポイントの設定(App Service)
1.で作成したApp Serviceを選択し、画面左側メニューから「ネットワーク」を選択し、「アクセス制限」をクリックする。
##規則の追加
-
全般設定
- 名前:任意(今回は「From-AGWSnet-Only」)
- アクション:許可
- 優先度:任意(今回は300)
- 説明:任意(今回は「AGWSnet-emikiからの通信のみ許可」)
-
ソースの設定
- 種類:仮想ネットワーク
- サブスクリプション:任意(自身がリソースの作成で使用しているもの)
- 仮想ネットワーク:1.で作成したものを選択
- サブネット:1.で作成したアプリケーションゲートウェイ用のサブネットを選択
その他はデフォルト設定のままでよい。
アクセス制限がオンになっている。
この設定をするとサービスエンドポイントが有効になり、指定したアプリケーションゲートウェイ用のサブネット空の通信からしかApp Serviceに接続できなくなる。インターネット経由でApp Serviceに接続できないことを確認する。
5.端末からAzure仮想ネットワークにP2S接続する
手元の端末からAzure仮想ネットワークにP2S接続する。以下手順はWindows10を想定している。
5-1.P2S接続の流れ
-
P2S接続するWindows10端末で実施する
- ルート証明書作成(PowerShell)
- クライアント証明書作成(PowerShell)
- ルート証明書のエクスポート
-
Azure Portalで実施する
- エクスポートしたルート証明書を仮想ネットワークゲートウェイにアップロード
-
P2S接続するWindows10端末で実施する
- VPNクライアントダウンロード
- VPNクライアントインストール
##5-2.証明書作成
-
管理者権限でPowerShellを開く
- P2S接続したい手元のWindows10端末にて、管理者権限でPowerShellを開く
-
ルート証明書作成(PowerShell)
-
P2SRootCert_emiki
部分は任意の文字列にする
-
$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject "CN=P2SRootCert_emiki" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign
PowerShell コンソールを開いたままにして、次の手順に進む。
- クライアント証明書を生成
-
P2SChildCert_emiki
部分は任意の文字列にする
-
New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert_emiki -KeySpec Signature `
-Subject "CN= P2SChildCert_emiki" -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")
- ルート証明書とクライアント証明書が作成されていることの確認
- Windows+Rで「ファイル名を指定して実行」を開き、「certmgr.msc」を実行する。
[証明書-現在のユーザー]-[個人]-[証明書]に、作成した証明書が表示されていればOK。
ルート証明書をエクスポートする。(クライアント証明書ではなくルート証明書をエクスポートする。仮想ネットワークゲートウェイにルート証明書をアップロードする必要があるため)
ルート証明書を右クリックし、[すべてのタスク]-[エクスポート]からエクスポートウィザードを開く。
秘密鍵はエクスポートしない。
Base64でエンコードする。
エクスポートする場所を指定する。わかりやすい場所と名前を指定する。
指定した場所にエクスポートされているのを確認する。
メモ帳などで開くと、秘密鍵が表示される。(「-----BEGIN CERTIFICATE-----」のあとから「-----END CERTIFICATE-----」の前までの文字列の部分)
別のメモ帳などを開いてコピーし、改行なしの1行の文字列にしておく。
5-3.証明書をAzure 仮想ネットワークゲートウェイにアップロードする
Azureポータルから1.で作成した仮想ネットワークゲートウェイを選択し、画面左側メニューから「ポイント対サイトの構成」をクリックし「今すぐ構成」をクリックする。
- アドレスプール
- アドレスプールに任意のプライベートアドレス範囲を記載する。P2S接続する際、手元の端末はここに設定したIP範囲から払い出される。
- ルート証明書
5-4.VPNクライアントを仮想ネットワークゲートウェイのポータルからダウンロードし、P2S接続する
そのままAzureポータルからVPNクライアントをダウンロードする。
ダウンロードされたファイルを展開し、「WindowsAmd64」フォルダ内の「VpnClientSetupAmd64.exe」を実行する。
「WindowsによってPCが保護されました」という青い画面が出たら、「詳細情報」をクリックして展開し、「実行」ボタンをクリックする。
「Do you wish to install a Vpn Client for (作成した仮想ネットワークの名前)?」と表示されたら「はい」をクリックする。
Windowsの[設定]-[ネットワークとインターネット]-[VPN]をクリックすると、作成したP2S接続(VPN)が表示されている。「接続」をクリックする。
「接続」をクリックする。
「接続済み」と表示され、仮想ネットワークゲートウェイと端末でP2S接続された。
P2S接続された状態の端末から、アプリケーションゲートウェイのフロントエンドIPアドレスにアクセスすると、ルーティングされてApp Serviceにアクセスできるようになっている。
6.参考