みち草

Azure中心にまとめる技術情報ブログ

iPad で Azure VPN P2S 接続を構成する + Fiddler をプロキシにしてテナント制限をかける (P2S 接続編)

はじめに

iPad を Azure に P2S 接続させた記録です。

そこに至るまでの iPad の設定に手間取ったためまとめておきます。

接続後、Azure VM に Fiddler を入れたプロキシを用意し、テナント制限をかけるところまで試したのでそちらも後にまとめます。

目次

参考にした記事

今回の内容は、次の記事を参考にして実現できました。 ほぼそのままでできた部分もあれば、一部変更が必要な箇所もありました。

qiita.com

www.cloudou.net

qiita.com

環境

使用しているデバイス、OS 情報などは次のとおりです。

  • iPad (iOS 17.6.1)
  • プロキシ (Fiddler Classic) 用 VM (Windows (Windows Server 2022 Datacenter Azure Edition)
  • 手元の操作端末 (Windows 11 24H2)

準備した Azure 環境はこんな感じです。

  • VNet (10.3.0.0/16)
  • VM 用サブネット (10.3.0.0/24)
  • GatewaySubnet (10.3.250.0/24)
  • プロキシ用 VM (10.3.0.4)
  • VPN ゲートウェイ (VpnGw1, アクティブ/アクティブ、BGP、Key Vault アクセスは無効)

NSG や Bastion など、あまり関係のないリソースは省略しています。

これらを使ってこうやったらできたよ、というのをまとめます。

環境の構築

リソースのデプロイ

VNet、VM、VPN ゲートウェイのデプロイは特に特別なことはないため、ここでは省略します。

強いて挙げれば、ここでは VPN ゲートウェイをデプロイするときの次の 3 つの選択はすべて "無効" を選択しています。

  • アクティブ/アクティブ モードの有効化
  • BGP の構成
  • Key Vault アクセスを有効にする

P2S 用証明書の作成

続いて、P2S の認証で使用する自己署名のルート証明書、クライアント証明書を作成します。次のドキュメントに従います。

learn.microsoft.com

ルート証明書の作成

ドキュメントの「自己署名ルート証明書の作成」の流れでルート証明書を作成します。

特にこだわりがなければ、ドキュメント内のサンプルをそのままコピペ実行で大丈夫です。

管理者権限の PowerShell で実行します。

PowerShell は閉じずに次へ

クライアント証明書の作成

こちらは 「クライアント証明書の生成」に従います。 PowerShell を閉じておらず、こだわりがなければそのまま「例 1 - PowerShell コンソール セッションがまだ開いたまま」のコマンドをコピペして実行すれば OK です。

これで、必要な証明書が作成できました。

証明書のエクスポート

作成した次の 2 つの証明書をエクスポートします。

同じドキュメントの「ルート証明書の公開キー (.cer) のエクスポート」と「クライアント証明書のエクスポート」に従い、それぞれ .cer と .pfx 形式でエクスポートします。

クライアント証明書のエクスポートでは、「秘密キーのエクスポート」を忘れずに!

VPN ゲートウェイの設定

エクスポートした証明書を用いて、VPN ゲートウェイに P2S 用の設定を行います。 ドキュメントで言うと「VPN クライアント アドレス プールを追加する」、「トンネルの種類と認証の種類を指定する」、「ルート証明書の公開キー情報のアップロード」 の箇所に該当します。

やることはシンプル、こんな感じで VPN ゲートウェイの「ポイント対サイトの構成」にアドレスプール、トンネルの種類、エクスポートした証明書の中身のアップロードを行います。

アドレス プールは P2S のクライアントに払い出される IP アドレスとなるため、既存環境と重複しないものを指定します。

トンネルの種類は、ここでは OpenVPN を利用します。

公開証明書データには、エクスポートした証明書 (.cer) をメモ帳で開き、BEGIN と END の間にある値だけをコピペします。 ただし、そのままコピペすると改行が含まれてしまうため、改行を消して 1 行の状態にしてからポータルへ貼り付けましょう。

※ ↓ この辺の改行が含まれてると NG

VPN ゲートウェイの設定はこれで OK です。

VPN 構成ファイルの作成

ここまではよくある P2S 構成と同じですが、ここからカスタマイズしていく必要があります。 参考手順は「iOSデバイスからAzure上の仮想ネットワークにP2S接続する」の 手順 7 以降ですが、先日試した結果だと構成ファイルに少し変更が必要なので、下にまとめています。

pfx からのキー情報取り出し

参考手順と順番が前後しますが、セクション分けしやすいのでこちらを先に行います。

この後、pfx にエクスポートされている秘密鍵などのコピペが必要になりますが、pfx のままでは見られないため、 openssl のコマンドを用いて pfx を txt 形式に変換します。

openssl がインストールされた環境がなくても、Cloud Shell が使えればそこでできます。今はストレージ アカウントも不要なので簡単です。

learn.microsoft.com

Cloud Shell を起動して、[ファイルの管理] - [アップロード] からエクスポートした pfx ファイルをアップロードします。

アップロードした pfx ファイルに対して、次のコマンドを実行します。

openssl pkcs12 -in "<pfx ファイル名>" -nodes -out "profileinfo.txt"

pfx のパスワードを入力すると、変換されたファイルが出力されます。

今度は [ファイルの管理]-[ダウンロード] から profileinfo.txt を指定し、ファイルをダウンロードします。

ここで [ダウンロード] を選択した後、右下のポップアップを選択しないとダウンロードされないので注意

これで、構成ファイル作成の準備ができました。

既存構成ファイルの編集

続いて、 VPN ゲートウェイからクライアントをダウンロードします。

zip でダウンロードされるので解凍して、OpenVPN フォルダにある vpnconfig.ovpn をメモ帳で開き、上から順に変更していきます。

オプション削除

上部に記載されているのは OpenVPN のオプションのようですが、このままだとエラーが出てしまい使えないオプションがありました。 そのため、"persist-key"、"persist-tun"、"log openvpn.log" の 3 行を削除します。

証明書情報コピペ

P2S CA root certificate と Pre Shared Key はそのままで問題なく、その下の P2S client certificate と private key の $xxxx の部分にそれぞれの値を貼り付ける必要があります。

ここで、先ほどの profileinfo.txt を使用します。

profileinfo 内には BEGIN PRIVATE KEY、BEGIN CERTIFICATE、BEGIN CERTIFICATE と 3 つありますが、1 番上の Private Key を vpnconfig.ovpn の $PRIVATEKEY と置き換えます。

置き換え後の vpnconfig

続いて、真ん中の BEGIN CERTIFICATE から END CERTIFICATE までを、vpnconfig.ovpn の $CLIENTCERTIFICATE と置き換えます。

置き換え後の vpnconfig

これで、構成ファイルの作成は完了です。あとはこれを使って、iPad から VPN 接続を行います。

メールなり何なりで、iPad に編集した vpnconfig.ovpn ファイルをわたしておきます。

iPad から VPN 接続を行う

iPad から VPN 接続を行うため、クライアントとして OpenVPN Connect アプリをインストールします。

OpenVPN Connect – OpenVPN App

OpenVPN Connect – OpenVPN App

  • OpenVPN Inc.
  • ユーティリティ
  • 無料
apps.apple.com

vpnconfig.ovpn ファイルを OpenVPN Connect で開くと、プロファイル追加画面になるため Add します。

プロファイルを用いて接続を行えば、VPN 接続が構成されます。

接続の確認には、Azure VM にアクセスさせてみたり、 ping を送ってみたりするのがよいでしょう

これで iPad での Azure VPN P2S 接続は完了です!

終わりに

iPad (iOS) での接続は初めてだったのでよくわからないところからスタートしましたが、先人の知恵をお借りして無事接続できました。 config で消さないといけない部分があったりと結構手こずったので、参考になればと思います。

本当は続けて Fiddler を介したテナント制限まで書くつもりだったのですが、なかなか筆が進められず、ここまで作るのにも結構時間がかかってしまいました。 時間がかかって結局何も投稿しないのが一番よくないので、一旦完成した P2S 接続編までの投稿です。 テナント制御編も書きます。