はじめに
弊宅にAzureとのS2S VPN接続をしたいと思ったのですが、最も安価なAzure VPN Gateway Basic SKUの構築はAzureポータルからできず、PowerShellで実施する必要があるので、備忘録として残そうと思います。
基本的にmicrosoftの公式ドキュメントを見ればできるものですが、コードがわかりづらいとか解読したくないという方や調べて分かったAzureの仕様を書こうかと思っています。
なお、AzureポータルのCloudShell実行やリソースグループ、仮想ネットワーク、サブネット作成は割愛しますので、ご了承ください。
Microsoft公式ドキュメント:PowerShell を使用して Basic SKU VPN ゲートウェイを作成する
目標
Azure 仮想ネットワークゲートウェイ(VPNゲートウェイ)のBasic SKUを構築する。
※S2S接続に関しては別記事で書きます。
今回わかったAzureの仕様
- Basic SKUパブリックIPは2025/09/30に廃止される
- Basic SKU 仮想ネットワークゲートウェイは本稿執筆時点ではBasic SKUパブリックIPしかサポートしていない
- Standard SKUパブリックIPがBasic SKU 仮想ネットワークゲートウェイで利用できるようにMicrosoftは対応を進めているところ
- Basic SKUパブリックIPが廃止になるだけで、Basic SKU 仮想ネットワークゲートウェイは今後も残る(調べると勘違いされている方がいるみたいです)
- Basic SKU 仮想ネットワークゲートウェイでもサイト間接続は可能
事前作業
命名規則
この操作では以下のリソースの名前を作成する必要があります。
あらかじめ決めておくと作業がスムーズになります。
もし命名にこだわりがない場合は、Microsoftから名前付け規則の定義が出ていますので、マネするのがよいかと思います。
今回はMicrosoftの名前付け定義を参考にしています。
名前付けが必要なリソース
- リソースグループ
- 仮想ネットワーク(VNET)
- パブリックIP
- VPNゲートウェイ
手順
リソースグループを作成する
Azureポータルで作成できます。
今回は(rg-hub-prod-eastjp-001)で作成
仮想ネットワークの作成
Azureポータルで作成できます。
今回は(vnet-hub-prod-eastjp-001)で作成
ゲートウェイサブネットの追加
Azureポータルで作成できます。
名前はGatewaySubnetにする必要があります。
パブリックIPアドレスの作成
Azureポータルで作成できますが、今回は後の仮想ネットワークゲートウェイ(VPNゲートウェイ)作成の時に楽になるので、PowerShellで作成します。
コマンド
$gwpip = New-AzPublicIpAddress -Name "pip-vpngw-prod-japaneast-001" -ResourceGroupName "rg-hub-prod-eastjp-001" -Location "JapanEast" -AllocationMethod Dynamic -Sku Basic
コマンド解説
$gwpip
変数の設定です。
New-AzPublicIpAddress
新しいパブリックIPアドレスを作成するという宣言です。
-Name "pip-vpngw-prod-japaneast-001"
パブリックIPアドレスのリソース名を指定しています。
-ResourceGroupName "rg-hub-prod-eastjp-001"
パブリックIPアドレスのリソースを紐付けるリソースグループを指定しています。
-Location "JapanEast"
パブリックIPアドレスのリソースを作成するリージョンを指定しています。今回はJapanEastなので東京リージョンです。
-AllocationMethod Dynamic
パブリックIPアドレスを静的にするか動的にするかを指定します。
S2S接続をするなら静的の方がいいのですが、Basic SKU VPNゲートウェイはDynamicにしか対応していないため、Dynamicを指定します。
-Sku Basic
パブリックIPアドレスのSKUを指定します。
Basicは2025/09/30に廃止されますが、現在Basic SKUのVPNゲートウェイを作成する場合はBasic SKUパブリックIPにしか対応していないため、Basicに設定します。
公式ドキュメントによると現在はBasic SKUパブリックIPにしか対応していないですが、Standard SKUパブリックIPへの対応を進めているとのことです。
ゲートウェイIPアドレス構成の作成
VPNゲートウェイに設定するIPアドレスの構成を作成します。
コマンド
$vnet = Get-AzVirtualNetwork -Name vnet-hub-prod-eastjp-001 -ResourceGroupName rg-hub-prod-eastjp-001
$subnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
$gwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig -SubnetId $subnet.Id -PublicIpAddressId $gwpip.Id
コマンド解説
$vnet
変数の設定です。
Get-AzVirtualNetwork
リソース グループ内の仮想ネットワーク(VNET)の情報を取得するコマンドです。
-Name vnet-hub-prod-eastjp-001
情報を取得するVNET名を指定します。
作成済みのものでないと取得できません。
-ResourceGroupName rg-hub-prod-eastjp-001
VNETが属するリソース グループの名前を指定します。
$subnet
変数の設定です。
Get-AzVirtualNetworkSubnetConfig
VNET内のサブネット情報を取得します。
-Name 'GatewaySubnet'
情報を取得するサブネットの名前を指定します。
-VirtualNetwork $vnet
情報を取得するサブネット構成が所属するVNETを指定します。今回は前段でVNETの情報を取得しているため、変数($vnet)を指定します。
$gwipconfig
変数の設定です。
New-AzVirtualNetworkGatewayIpConfig
仮想ネットワーク ゲートウェイ(VPNゲートウェイ)の IP 構成を作成します
-Name gwipconfig
公式ドキュメントにも解説がないのですが、IP構成の構成名を入れるのだと思います。
-SubnetId $subnet.Id
VPNゲートウェイに設定するサブネットIDを指定します。
今回は前段でサブネットの情報を取得しているため、変数($subnet.ID)を指定します。
-PublicIpAddressId $gwpip.Id
VPNゲートウェイに設定するパブリックIPアドレスを指定します。
今回はパブリックIPアドレス作成の時に作成したパブリックIPアドレスの情報を変数($gwpip)に格納しているため、ここでも変数を指定します。
VPNゲートウェイを作成する
VPNゲートウェイを作成します。
今回はSKUをBasicに指定しています。
コマンド
New-AzVirtualNetworkGateway -Name vgw-prod-japaneast-001 -ResourceGroupName rg-hub-prod-eastjp-001 -Location "JapanEast" -IpConfigurations $gwipconfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku Basic
コマンド解説
New-AzVirtualNetworkGateway
新しい仮想ネットワークゲートウェイ(VPNゲートウェイ)を作成するコマンドです。
-Name vgw-prod-japaneast-001
VPNゲートウェイの名前を指定します。
-ResourceGroupName rg-hub-prod-eastjp-001
所属するリソースグループを指定します。
-Location "JapanEast"
デプロイするリージョンを指定します。
-IpConfigurations $gwipconfig
利用するパブリックIPアドレスなどのネットワーク情報を指定します。
前段で変数($gwipconfig)に値を入れているため、今回は変数を指定します。
-GatewayType "Vpn"
ゲートウェイのタイプを指定します。
-VpnType "RouteBased"
ポリシーベースかルートベースのどちらかを指定します。
Basic SKUの場合はルートベースのみになります。
-GatewaySku Basic
SKUを指定します。
今回はBasicに指定します。
作成が完了するまで待つ
コマンドであっても少し時間がかかります。
Azureポータルの通知で作成完了がわかるはずです。
事後確認
指定したとおりにVPNゲートウェイが作成できているかを確認します。
以下のコマンドで内容が正しければ問題ありません。
コマンド
Get-AzVirtualNetworkGateway -Name vgw-prod-japaneast-001 -ResourceGroup rg-hub-prod-eastjp-001
実行結果
ResourceGroupName Name Location GatewayType VpnType EnableBgp DisableIPsecProtection EnablePrivateIpAddress ActiveActive ProvisioningState Sku Name ExtendedLocation VNetExtendedLocationResourceId EnableBgpRou
teTranslatio
nForNat
----------------- ---- -------- ----------- ------- --------- ---------------------- ---------------------- ------------ ----------------- -------- ---------------- ------------------------------ ------------
rg-hub-prod-eastjp-001 vgw-prod-japaneast-001 japaneast Vpn RouteBased False False False False Succeeded Basic False