はじめに
今回の記事では、シンプルに VPN ゲートウェイ の作成を紹介したかったのですが、それだけだとつまらないので、不要な時には 削除して課金を抑え、 必要になった時に 同一構成の VPN ゲートウェイ を簡単に再作成できる方法までを紹介したいと思います。
VPN ゲートウェイ のコスト
VPN ゲートウェイ の費用は、以下の公開情報に記載されています。
下図は、上記の記事から抜粋していますが、BGP が利用できるうち 最安値 の SKU (VpnGw1) をデプロイすると、月額 2 万円 も掛かってしまいます。VPN ゲートウェイは、停止することができないため、リソースが存在しているだけで、これだけのコストが請求されてしまいます。
そのため、不要な時には 削除 しておき、必要な時に 同一構成の VPN ゲートウェイ を作成することで、コストを抑えることができるようになります。
関連記事:合わせて参照ください
Azure VPN Gateway について
SKU(機能、性能、コスト)の違いや、インスタンス、動作モード、可用性ゾーン (AZ)、接続方式 (S2S/V2V/P2S) などについて、詳細に解説しています。
Azure 仮想ネットワークについてのまとめ
VPN ゲートウェイのみならず、その他の Azure ネットワーク全般について解説しています。
全体の中で、VPN ゲートウェイは どのような位置づけなのかが判ります。
前提事項
Azure サブスクリプション 上に、リソースグループ と 仮想ネットワーク が作成されている事を前提としています。
その前提となる環境は、以下の記事の設定値をもとに構成しています。
当然、上記とは違う名称や IP アドレスでも構成可能ですが、私の記事の内容と読み替えて参照してください。
ネットワーク設計
前提で用意した既存の 仮想ネットワークに、以下の GatewaySubnet を追加して利用する設計としました。
変更点 | 役割 | 名称 | アドレス |
---|---|---|---|
- | リソースグループ | AVD-Environment | - |
- | 仮想ネットワーク (アドレス空間) |
AZ-DefaultVNet | 10.10.0.0/16 |
- | サブネット1 | Subnet1 | 10.10.10.0/24 |
- | サブネット2 | Subnet2 | 10.10.20.0/24 |
追加 | ゲートウェイサブネット 管理用サブネット |
GatewaySubnet | 10.10.50.0/24 |
ゲートウェイ サブネット の作成手順
- 用意した仮想ネットワークを開き、左ペインの 設定 から サブネット を開きます。
続いて、+ゲートウェイサブネット のボタンを押します。
- 以下の画面では、開始アドレス を 意図した値に編集して 追加 を押します。
なお、サブネットの目的 は、初めから Vitrual Network Gateway になっており、これが ゲートウェイサブネット のことを意味しています。
- 以下の通知が表示されれば OK です。
- 下図の通り、GatewaySubnet が追加されれば OK です。
VPN ゲートウェイ の デプロイ 手順
VPN ゲートウェイ を GUI を使ってデプロイを行う手順です。
2.基本 タブでは、以下の表を参考に 値を 選択・入力 して 確認および作成 を押します。
# | 説明 | 値 |
---|---|---|
名前 | 任意の名称 | VPNGW-JPEAST |
地域 | 用意した 仮想ネットワーク が存在する場所を選択 |
Japan East |
ゲートウェイの種類 | 固定 | VPN |
SKU | 任意のサイズ あとで変更に制約アリ ※1 |
VpnGw1 |
世代 | あとで変更 できないので注意 |
Generation1 |
仮想ネットワーク | 事前に用意したものを選択 | AZ-DefaultVNet |
サブネット | この欄に GatewaySubnet が表示されている事を確認 |
GatewaySubnet (x.x.x.x/x) |
パブリック IP アドレス名 | 任意の名称 例:ゲートウェイ名に -pip を付与 |
VPNGW-JPEAST-pip |
アクティブ / アクティブ モードの有効化 | 動作モードのこと あとで変更可 ひとまず 無効 を推奨 |
無効 |
BGP の構成 | 推奨 | 有効 |
自律システム番号 (ASN) | 既定値 | 65521 |
SKU や、世代、動作モード については、以下の記事で詳しく解説しているので、参照ください。
SKU の変更可能なサイズ ※1 についても、説明しています。
VPN Gateway について
https://qiita.com/carol0226/items/f28f381e3dcf43590d7b
BGP の ASN を利用できる範囲について
ASN の範囲は、以下の公開情報のとおり、64512 ~ 65514 および 65521 ~ 65534 が利用可能と明記されています。
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-vpn-faq?wt.mc_id=mvp_407731#what-private-asns-can-i-use
なお、既定値では 65515 が使われるようになっており、これも利用できますが、特殊用途となるため、この ASN は避けておきます。
3.確認および作成 タブでは、設定した内容を確認できます。
ここで、緑枠 の Automation のテンプレートをダウンロードする を押すことで ARM テンプレートを保存できます。
ARM テンプレートを保存したら、作成 を押して デプロイを開始します。
ARM テンプレート の ダウンロード手順は、ココをクリック して参照できます
ダウンロードボタンをおすと、template.zip というファイルが保存されます。
ZIP ファイルを展開すると、以下の2つのファイルが存在しています。
・ template.json
・ parameters.json
それぞれのファイルは、以下の内容になっています。
template.json
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string"
},
"location": {
"type": "string"
},
"gatewayType": {
"type": "string",
"defaultValue": "Vpn",
"allowedValues": [
"Vpn",
"ExpressRoute"
]
},
"sku": {
"type": "string"
},
"vpnGatewayGeneration": {
"type": "string"
},
"vpnType": {
"type": "string",
"defaultValue": "RouteBased",
"allowedValues": [
"RouteBased",
"PolicyBased"
]
},
"subnetId": {
"type": "string"
},
"newPublicIpAddressName": {
"type": "string"
},
"enableBgp": {
"type": "bool"
},
"asn": {
"type": "int"
},
"customBgpIpAddress": {
"type": "Array"
}
},
"resources": [
{
"apiVersion": "2023-02-01",
"name": "[parameters('name')]",
"type": "Microsoft.Network/virtualNetworkGateways",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/', parameters('newPublicIpAddressName'))]"
],
"tags": {},
"properties": {
"gatewayType": "[parameters('gatewayType')]",
"ipConfigurations": [
{
"name": "default",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[parameters('subnetId')]"
},
"publicIpAddress": {
"id": "[resourceId('AVD-Environment', 'Microsoft.Network/publicIPAddresses', parameters('newPublicIpAddressName'))]"
}
}
}
],
"enableBgp": "[parameters('enableBgp')]",
"bgpSettings": {
"asn": "[parameters('asn')]",
"bgpPeeringAddresses": [
{
"ipconfigurationId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AVD-Environment/providers/Microsoft.Network/virtualNetworkGateways/VPNGW-JPEAST/ipConfigurations/default",
"customBgpIpAddresses": "[parameters('customBgpIpAddress')]"
}
]
},
"vpnType": "[parameters('vpnType')]",
"vpnGatewayGeneration": "[parameters('vpnGatewayGeneration')]",
"sku": {
"name": "[parameters('sku')]",
"tier": "[parameters('sku')]"
}
}
},
{
"apiVersion": "2020-08-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[parameters('newPublicIpAddressName')]",
"location": "[parameters('location')]",
"properties": {
"publicIPAllocationMethod": "Static"
},
"sku": {
"name": "Standard",
"tier": "Regional"
},
"zones": []
}
]
}
parameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"value": "japaneast"
},
"name": {
"value": "VPNGW-JPEAST"
},
"gatewayType": {
"value": "Vpn"
},
"sku": {
"value": "VpnGw1"
},
"vpnType": {
"value": "RouteBased"
},
"vpnGatewayGeneration": {
"value": "Generation1"
},
"subnetId": {
"value": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AVD-Environment/providers/Microsoft.Network/virtualNetworks/AZ-DefaultVNet/subnets/GatewaySubnet"
},
"newPublicIpAddressName": {
"value": "VPNGW-JPEAST-pip"
},
"enableBgp": {
"value": true
},
"asn": {
"value": 65521
},
"customBgpIpAddress": {
"value": []
}
}
4.デプロイは、約 30 分 掛かります。デプロイが完了すると、以下の画面になるため、赤枠の 操作の詳細 を押します。
5.以下の通り、実際に デプロイに掛かった時間を確認できます。
6.デプロイが完了し、作成された VPN ゲートウェイ の画面に遷移すると、以下のようになっています。
(概要タブ)
(構成タブ)
正常性プローブ
デプロイされた VPN ゲートウェイ に対して、以下の URL にアクセスすることで、インスタンスの状態を確認することができます。
https:// [YourVirtualNetworkGatewayIP] :8081/healthprobe
(具体例)
https://48.210.40.187:8081/healthprobe
手順 7: Azure ゲートウェイの正常性プローブを確認する
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-troubleshoot-site-to-site-cannot-connect?wt.mc_id=mvp_407731#step-7-verify-the-azure-gateway-health-probe
VPN ゲートウェイ の削除
VPN ゲートウェイ をコストを抑えるため または、不要になった場合に 削除 を行う場合は、以下の手順を実行します。
- VPN ゲートウェイ の概要ページで 削除 を押します。
- 以下の確認で はい を押します。
- 以下の通知が表示されます。削除が完了するまで 約 10 分くらい掛かりました。
- VPN ゲートウェイが削除されると、以下のように 仮想ネットワーク と パブリック IP アドレス が残ります。
ポイント
コスト抑制のための一時的な削除の場合は、上記のリソースは このまま 残しておきます。
再作成の際に、この 仮想ネットワーク と パブリック IP アドレス を利用することで、同一構成の VPN ゲートウェイを 簡単に 作成可能になります。
完全に削除を行う場合は、パブリック IP アドレス も削除を行ってください。
ARM テンプレートを使った再作成
この手順を実行することで、前回と 同一構成の VPN ゲートウェイ を再作成できます。
前提
・ 前回作成時の 仮想ネットワーク と パブリック IP アドレス が残っている
・ ARM テンプレート を保存済みで、ZIP を解凍済みである(template.json と parameters.json がある)
手順
- Azure Portal の検索窓で カスタム テンプレートのデプロイ(①~②)を選択し、エディターで独自のテンプレートを作成する(③)をクリックします。
- 以下の画面で ファイルの読み込み を押し、template.json ファイルを選択します。
緑枠の箇所に読み込まれた事を確認して、保存 を押します。
- 以下の画面で 赤枠の パラメーターの・・・ を押します。
- 以下の画面で ファイルの読み込み を押し、parameters.json ファイルを選択します。
緑枠の箇所に読み込まれた事を確認して、保存 を押します。
- 以下の画面のように、テンプレートに パラメーターが読み込まれた状態になります。
このまま 確認と作成 を押すと、前回と同一仕様の VPN ゲートウェイ が展開できますが、この画面で 設定値を変更することもできます。
-
確認と作成 タブで 最終確認を行い、作成 を押します。
- 以下は、デプロイが完了した画面です。作成時と 同様の時間が掛かります。
- 以下の通り、前回と 同一仕様の VPN ゲートウェイ が展開されました。
Next Step
VPN ゲートウェイ をデプロイ出来たら、続けて 接続 を構成してみましょう。
以下は、各接続の種類ごとのリンクです。
※現在は、公開情報へのリンクになっていますが、順次 私自身で記載した記事へ差し替えていく予定です。
V2V の 構築手順
以下の記事で、V2V の構成手順のキャプチャ付き に加えて、ARM テンプレートによる 再作成 について紹介しています。
公開情報:VNet 間 VPN ゲートウェイ接続の構成
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-howto-vnet-vnet-resource-manager-portal?wt.mc_id=mvp_407731
S2S の 構築手順
P2S の 構築手順
P2S は、以下の公開情報に記載されている通り、3つの方法があります。
- Azure 証明書認証
- Microsoft Entra ID 認証
- RADIUS 認証
Azure 証明書認証
Microsoft Entra ID 認証
RADIUS 認証
VPN Gateway のログを Log Analytics に保存する手順
FAQ
Support Blog の FAQ
公開情報 の FAQ
IPsec/IKE ポリシーに関する FAQ
https://learn.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-about-compliance-crypto?wt.mc_id=mvp_407731#ipsecike-policy-faq
おまけ:1発デプロイ用のテンプレート
以下のテンプレートは、Parameters.json を必要とせず、Template.json のみで 1発でデプロイできるように 私がカスタマイズしたものになっています。
通常のテンプレートは、"サブスクリプション ID" が含まれた リソース ID が直書きで指定されている箇所があるため汎用性がありません。それを どのサブスクリプションでも動作するように工夫をしています。Azure Portal からダウンロードしたテンプレートと比較していただくと、違いが判ると思います。
以下の記事で紹介している [Azure にデプロイボタン] の方法を使って、このテンプレートを展開することで、ボタン1発で VPN ゲートウェイ を展開できるようになります。
https://qiita.com/carol0226/items/c7af5206ce78492ba879
1発デプロイ用のテンプレート
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string",
"defaultValue": "VPNGW-JPEAST"
},
"location": {
"type": "string",
"defaultValue": "japaneast"
},
"gatewayType": {
"type": "string",
"defaultValue": "Vpn"
},
"sku": {
"type": "string",
"defaultValue": "VpnGw1"
},
"vpnGatewayGeneration": {
"type": "string",
"defaultValue": "Generation1"
},
"vpnType": {
"type": "string",
"defaultValue": "RouteBased",
"allowedValues": [
"RouteBased",
"PolicyBased"
]
},
"VnetResourceGroup": {
"type": "string",
"defaultValue": "AVD-Environment"
},
"VirtualNetwork": {
"type": "string",
"defaultValue": "AZ-DefaultVNet"
},
"newPublicIpAddressName": {
"type": "string",
"defaultValue": "VPNGW-JPEAST-pip"
},
"enableBgp": {
"type": "bool",
"defaultValue": true
},
"asn": {
"type": "int",
"defaultValue": 65521
},
"customBgpIpAddress": {
"type": "Array",
"defaultValue": []
}
},
"resources": [
{
"apiVersion": "2023-02-01",
"name": "[parameters('name')]",
"type": "Microsoft.Network/virtualNetworkGateways",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/', parameters('newPublicIpAddressName'))]"
],
"tags": {},
"properties": {
"gatewayType": "[parameters('gatewayType')]",
"ipConfigurations": [
{
"name": "default",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[resourceId(parameters('VnetResourceGroup'),'Microsoft.Network/virtualNetworks/subnets',parameters('VirtualNetwork'),'GatewaySubnet')]"
},
"publicIpAddress": {
"id": "[resourceId(parameters('VnetResourceGroup'), 'Microsoft.Network/publicIPAddresses', parameters('newPublicIpAddressName'))]"
}
}
}
],
"enableBgp": "[parameters('enableBgp')]",
"bgpSettings": {
"asn": "[parameters('asn')]",
"bgpPeeringAddresses": [
{
"ipconfigurationId": "[resourceId(parameters('VnetResourceGroup'),'Microsoft.Network/virtualNetworkGateways/ipConfigurations',parameters('name'),'default')]",
"customBgpIpAddresses": "[parameters('customBgpIpAddress')]"
}
]
},
"vpnType": "[parameters('vpnType')]",
"vpnGatewayGeneration": "[parameters('vpnGatewayGeneration')]",
"sku": {
"name": "[parameters('sku')]",
"tier": "[parameters('sku')]"
}
}
},
{
"apiVersion": "2020-08-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[parameters('newPublicIpAddressName')]",
"location": "[parameters('location')]",
"properties": {
"publicIPAllocationMethod": "Static"
},
"sku": {
"name": "Standard",
"tier": "Regional"
},
"zones": []
}
]
}