LoginSignup
0
1

More than 1 year has passed since last update.

DNSなしの閉域環境でApp Serviceに接続する(P2S接続)

Last updated at Posted at 2021-12-11

Azure Advent Calendar 2021 12/12(日)の記事として投稿します。

0.構成図

今回の構成図。自宅の端末からPoint to Site(P2S)でAzure仮想ネットワークに閉域で接続し、App Serviceに安全に接続する。
image.png

1.準備

以下リソースを作成しておく。

  • リソースグループ
  • 仮想ネットワーク(Vnet。今回は192.168.0.0/20)
    • GatewaySubnet(今回は192.168.5.0/24)
    • アプリケーションゲートウェイ用サブネット(今回は192.168.10.0/24)
  • 仮想ネットワークゲートウェイ(VPNGW)
  • App Service(BasicプランでOK。ランタイム等も適当で)
    image.png

インターネットに接続している自宅の端末から、作成したApp Serviceにアクセスできることを確認しておく。今回ブラウザはGoogle Chromeを使用している。
image.png

2.アプリケーションゲートウェイの作成

1.で作成したリソースグループに、アプリケーションゲートウェイを作成する。

◆基本◆

  • インスタンスの詳細

    • ゲートウェイ名:任意
    • 地域:東日本
    • レベル:Standard v2
    • 自動スケール:いいえ
    • インスタンス数:2
    • 可用性ゾーン:なし
    • HTTP2:無効
  • 仮想ネットワークの構成

    • 仮想ネットワーク:(1.で作成した仮想ネットワークを指定)
    • サブネット:(1.で作成したアプリケーションゲートウェイ用のサブネットを指定)
      image.png

◆フロントエンドの数◆

  • フロントエンドの種類:両方(今回プライベートIPが必要だが、プライベートIPのみは選択できないため)
  • パブリックIPアドレス:新規
  • プライベートIPアドレスの指定:はい
    • プライベートIPアドレス:1.で作成したアプリケーションゲートウェイ用のサブネット範囲から任意(今回は192.168.10.10)
      image.png

◆バックエンド◆

image.png

  • バックエンドプールの追加
    • 名前:任意(今回はAGWBackendPool)
    • ターゲットを持たないバックエンドプールを追加します:はい(後で設定する)
      image.png

◆構成◆

ルーティング規則の追加

image.png
####ルール名:任意(今回はAGWRoutingRole)

リスナー
  • リスナー名:AGWListener
  • フロントエンドIP:プライベート
  • プロトコル:HTTP
  • ポート:80
  • 追加設定
    • リスナーの種類:Basic
    • エラーページのURL:いいえ
      image.png
バックエンドターゲット
  • ターゲットの種類:バックエンドプール
  • バックエンドターゲット:作成済みのバックエンドプール(今回はAGWBackendPool)

image.png

HTTP設定(新規作成)
  • HTTP設定名:任意(今回はHTTPSettings)
  • バックエンドプロトコル:HTTP
  • バックエンドポート:80
  • 追加設定
    • Cookieベースのアフィニティ:無効化
    • 接続のドレイン:無効化
    • 要求のタイムアウト:20(デフォルト)
    • バックエンドパスのオーバーライド:-(空欄)
  • ホスト名
    • 新しいホスト名でオーバーライドする:はい
    • ホスト名をオーバーライドする:バックエンドターゲットからホスト名を選択する
    • カスタムプローブを作成する:はい(事前に作成してもよい。ここで「はい」にすると任意の文字列を含むカスタムプローブが自動作成される)
      image.png

HTTP設定が終わったらルーティング規則の追加に戻る。
image.png

image.png
タグの作成は任意。確認と作成からアプリケーションゲートウェイを作成する。
image.png

3.アプリケーションゲートウェイの設定変更

2.で作成したアプリケーションゲートウェイの設定を変更する。
リソースをクリックし画面左側メニューから「バックエンドプール」をダブルクリックする。
image.png
「バックエンドプールの編集」画面が開く。

  • ターゲットを持たないバックエンドプールを追加します:いいえ
  • バックエンドのターゲット
    • ターゲットの種類:App Service
    • ターゲット:1.で作成したApp serviceを選択(今回はAppService-emiki)

保存。
image.png

「バックエンド正常性」より、アプリケーションゲートウェイのバックエンドに設定したApp Serviceが正常か確認する。
image.png

ここまで設定すると、アプリケーションゲートウェイのフロントエンドプライベートIPにアクセスした際、バックエンドに設定したApp Serviceにルーティングされるようになる。
image.png

4.サービスエンドポイントの設定(App Service)

1.で作成したApp Serviceを選択し、画面左側メニューから「ネットワーク」を選択し、「アクセス制限」をクリックする。
image.png

##規則の追加

  • 全般設定
    • 名前:任意(今回は「From-AGWSnet-Only」)
    • アクション:許可
    • 優先度:任意(今回は300)
    • 説明:任意(今回は「AGWSnet-emikiからの通信のみ許可」)
  • ソースの設定
    • 種類:仮想ネットワーク
    • サブスクリプション:任意(自身がリソースの作成で使用しているもの)
    • 仮想ネットワーク:1.で作成したものを選択
    • サブネット:1.で作成したアプリケーションゲートウェイ用のサブネットを選択

その他はデフォルト設定のままでよい。
image.png
image.png
アクセス制限がオンになっている。
image.png

この設定をするとサービスエンドポイントが有効になり、指定したアプリケーションゲートウェイ用のサブネット空の通信からしかApp Serviceに接続できなくなる。インターネット経由でApp Serviceに接続できないことを確認する。
image.png
image.png

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

image.png

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")

image.png

  • ルート証明書とクライアント証明書が作成されていることの確認
  • Windows+Rで「ファイル名を指定して実行」を開き、「certmgr.msc」を実行する。
    image.png
    [証明書-現在のユーザー]-[個人]-[証明書]に、作成した証明書が表示されていればOK。
    image.png

ルート証明書をエクスポートする。(クライアント証明書ではなくルート証明書をエクスポートする。仮想ネットワークゲートウェイにルート証明書をアップロードする必要があるため
ルート証明書を右クリックし、[すべてのタスク]-[エクスポート]からエクスポートウィザードを開く。
image.png
image.png
秘密鍵はエクスポートしない。
image.png
Base64でエンコードする。
image.png
エクスポートする場所を指定する。わかりやすい場所と名前を指定する。
image.png
image.png
image.png
指定した場所にエクスポートされているのを確認する。
image.png
メモ帳などで開くと、秘密鍵が表示される。(「-----BEGIN CERTIFICATE-----」のあとから「-----END CERTIFICATE-----」の前までの文字列の部分)
image.png
別のメモ帳などを開いてコピーし、改行なしの1行の文字列にしておく。
image.png

5-3.証明書をAzure 仮想ネットワークゲートウェイにアップロードする

Azureポータルから1.で作成した仮想ネットワークゲートウェイを選択し、画面左側メニューから「ポイント対サイトの構成」をクリックし「今すぐ構成」をクリックする。
image.png

  • アドレスプール
    • アドレスプールに任意のプライベートアドレス範囲を記載する。P2S接続する際、手元の端末はここに設定したIP範囲から払い出される。
  • ルート証明書
    • 名前:任意(5-2.でエクスポートしたルート証明書であることが分かる名前。今回は「P2SRootCert_emiki」)
    • 公開証明書データ:5-2.でエクスポートしたルート証明書の改行なしの文字列をここに入力する
      image.png

5-4.VPNクライアントを仮想ネットワークゲートウェイのポータルからダウンロードし、P2S接続する

そのままAzureポータルからVPNクライアントをダウンロードする。
image.png
ダウンロードされたファイルを展開し、「WindowsAmd64」フォルダ内の「VpnClientSetupAmd64.exe」を実行する。
image.png
image.png
「WindowsによってPCが保護されました」という青い画面が出たら、「詳細情報」をクリックして展開し、「実行」ボタンをクリックする。
image.png
image.png
「Do you wish to install a Vpn Client for (作成した仮想ネットワークの名前)?」と表示されたら「はい」をクリックする。
image.png
Windowsの[設定]-[ネットワークとインターネット]-[VPN]をクリックすると、作成したP2S接続(VPN)が表示されている。「接続」をクリックする。
image.png
「接続」をクリックする。
image.png
「接続済み」と表示され、仮想ネットワークゲートウェイと端末でP2S接続された。
image.png

P2S接続された状態の端末から、アプリケーションゲートウェイのフロントエンドIPアドレスにアクセスすると、ルーティングされてApp Serviceにアクセスできるようになっている。
image.png

以下図のように接続ができた。
image.png

6.参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1