こんにちは駆け出しアーキテクトのやまぱんです。
以前にこんな記事を書きました。
じゃあ次は P2S もやってみようということで今回は P2S 環境を作ります。
ただし、今回は VPN ゲートウェイ の SKU を basic で作ります。
現在の VPNGW のデプロイ可能状況です。
✅ Basic VPN Gateway + Basic Public IP (Dynamic) → 作成可能( 9 月 30 日まで)
❌ Basic VPN Gateway + Standard Public IP (Static) → 非対応(そのうち対応するかも?)
❌ VpnGw1+ VPN Gateway + Basic Public IP (Dynamic) → 作成負荷
✅ VpnGw1-5Az + VPN Gateway + Standard Public IP (Static) → 作成可能(今後のメイン商用 VPNGW)
Basic Public IP 廃止・ standard Public IP 移行に伴うものであり、Basic VPNGW は standard Public IP に対応していないです。いかドキュメントによれば、そのうち Basic SKU の VPNGW + standard Public IP の組み合わせがサポートされる予感はします。
いいえ。VPN Gateway Basic SKU は廃止されません。 PowerShell または CLI 経由で、Basic ゲートウェイ SKU を使用して VPN ゲートウェイを作成できます。 現在、VPN Gateway Basic SKU では、Basic SKU パブリック IP アドレス リソースのみがサポートされています (これは廃止予定ではありません)。 Standard SKU パブリック IP アドレス リソースのサポートを VPN Gateway Basic SKU に追加する作業を行っています。
参考
誰かの役に立てば幸いです。
コメントなどあれば是非いただければと思います👸
Azure VPN Gateway の接続方法
そもそも Azure VPN Gateway の接続方法は以下の3種類あります。
- S2S / Site to Site 接続
他クラウド環境と接続したり、オンプレミス環境と接続する - V2V / VNet to VNet 接続
Vnet 同士 の VPN 接続 - P2S / Point to Site 接続 (今回はこちら)
クライアント PC と Azure の仮想ネットワークとの接続
前置き
vpngw の SKU
・ VPN Gateway の価格
https://azure.microsoft.com/ja-jp/pricing/details/vpn-gateway/
ただ、SKU : VpnGw1 でも一時間当たり 28.4250 円、一か月あたり20,466 円
一方、SKU: basic だと一時間当たり、5.39 円、一か月あたり3,880 円
と結構な違いがあります。
basic SKU だと、S2SVPN は構成できないのですが、今回の P2SVPN は構成することができます。
なので今回は SDGs の為にも、basic SKU を利用して P2S を構成します。
ただし、basic の VPN ゲートウェイは Azure Portal からはデプロイできません。
そのため Azure PowerShell や Azure 公式認定の IaC ツールである bicep などを用いてデプロイする必要があります。
basic SKU の VPN ゲートウェイは Azure Portal からはデプロイできない。
(VPN ゲートウェイで basic SKU を使う場合は完全 GUI でのデプロイは出来ない。)
完全 GUI でのデプロイは出来ないので、(GUI / Azure Portal 編) と書いてありながらも、一部 PowerShell で実施している箇所があります。
・ Gateway の SKU
【参考】こちらの記事では basic SKU 以外の VPN ゲートウェイを GUI ・ Azure Portal でデプロイされてて完全 GUI で実施されています~
https://qiita.com/dessin/items/32492d563279d4cc2bf4#vpn-gateway%E3%81%AE%E4%BD%9C%E6%88%90
やりたいこと
おうちの Windows PC と Azure のネットワーク(Vnet-Hub) をつなげたい。
ついでに Azure 上の Windows VM は DNS サーバーにし、Ubuntu VM は Web サーバーにして、おうちから名前解決して Private IP で Web サイトにアクセスしたい。
As is と To be
As is
Bastion および Bastion Subnet は VM 接続に便利なのでデプロイしてますが必須ではありません。
作業開始前 は こんな感じの環境

以下をクリックすることで上記の bastion がないバージョンのシンプルな環境をデプロイできます。
デプロイするときはパラメーターファイルをコピーして、適宜編集して貼り付けると同じような構成になります。(参考)
To be
手順
VPN ゲートウェイ(basic sku) の作成
早速です。
先に述べたように Azure Portal からは Basic SKU を選択することができません。

Azure Portal からでは Basic SKU がない!
なので今回は Azure PowerShell を用いて作成します。
下記に既存の Vnet に対して Basic sku の VPN ゲートウェイ をデプロイする Azure PowerShell スクリプトを置いてます。
https://github.com/aktsmm/Scripts/tree/main/ps/AzVPNGateway
これを使って、まず basic SKU の VPN ゲートウェイ をデプロイします。
少し待ちますが、10 分もあればできました。
アドレスプールの入力
[作成した VPN ゲートウェイ] → [ポイント対サイトの構成] と遷移して、"アドレス プール" を入力して、[保存] をクリックします。

結構時間がかかります。
私の場合 1 時間ちょっとまちました。
ルート証明書の作成と Azure へのアップロード
クライアント側で PowerShell を立ち上げて下記のコマンドを実行します。
# 自己署名ルート証明書の作成
$cert = New-SelfSignedCertificate -Type Custom `
-KeySpec Signature `
-Subject "CN=P2SRootC" `
-KeyExportPolicy Exportable `
-HashAlgorithm sha256 `
-KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyUsageProperty Sign `
-KeyUsage CertSign
# クライアント証明書の作成
New-SelfSignedCertificate -Type Custom `
-DnsName P2SRootC `
-KeySpec Signature `
-Subject "CN=P2SChildC" `
-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
こんな感じで作成した自己署名ルート証明書とクライアント証明書が確認できます。

- 作成した自己署名ルート証明書を探し、右クリックして ”すべてのタスク” → ”エクスポート” を選択します
- 次へをクリックします
- いいえ、秘密キーをエクスポートしませんをクリックします
- Base 64 encoded X.509 をクリックします
- エクスポート先を選択してクリックします
- エクスポートした証明書を VS Code やメモ帳で開き VPN ゲートウェイに登録します。
その後、[保存]を押す、数分まって画面を再読み込みすると VPN クライアントのダウンロードが可能になるので、ダウンロードする。
P2S VPN 接続(クライアント側)
下記の "CRT_0 ファイル" の名前を変更して拡張子を .cer に変更し、ダブルクリックしてサーバー証明書をインストールします。

つぎに展開したフォルダ内の [WindowsPowershell] を選択して、スクリプトを実行します。

その後、クライアント側の VPN メニューに下記がでるので「接続」する

接続確認
ipconfig
クライアント側で ipconfig を打つと VPN に使われる NIC が追加されているのがわかる

ping による疎通確認
クライアント側から Azure 上の Ubuntu/Web サーバ (10.100.1.4)に対して ping の疎通確認

FQDN による Web サーバーへのアクセス確認
ここでは設定や説明を省いていますが、ローカルのクライアント PC から Azure 上の IaaS で立てた DNS サーバー(10.100.1.5)に設定した web.ksk.yamapan.tokyo の名前解決をして、Ubuntu/Web サーバ (10.100.1.4) にアクセスし、http ページが表示されることも確認済です。(DNS 周りが気になる方は、参考をご覧ください。)

参考
P2S 接続してる方の記事です
Web サーバや DNS 周りについて






