こんにちは、三醍醐です。
今回は、Azure VPNについてお話します。
目次
サブスクリプション間VPNをARMテンプレートで作成

Azureで異なるサブスクリプション同士のVnetをVPN接続したい場合、PowerShellもしくはAzure CLIを用いる必要があります。(詳細な手順は、Docsの https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-vnet-vnet-rm-ps#difsub または、 https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-howto-vnet-vnet-cli#difsub を参照してください。)
これを、ARMテンプレートで作成しようとすると、以下のようなテンプレートが必要です。
Template.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"connections_GW1toGW2_name": {
"defaultValue": "<接続名>",
"type": "String"
},
"virtualNetworkGateways_GW1_VPN_externalid": {
"defaultValue": "VPNゲートウェイ1のリソースID",
"type": "String"
},
"virtualNetworkGateways_GW2_VPN_externalid": {
"defaultValue": "VPNゲートウェイ2のリソースID",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Network/connections",
"apiVersion": "2019-11-01",
"name": "[parameters('connections_GW1toGW2_name')]",
"location": "japaneast",
"properties": {
"virtualNetworkGateway1": {
"id": "[parameters('virtualNetworkGateways_GW1_VPN_externalid')]"
},
"virtualNetworkGateway2": {
"id": "[parameters('virtualNetworkGateways_GW2_VPN_externalid')]"
},
"connectionType": "Vnet2Vnet",
"connectionProtocol": "IKEv2",
"routingWeight": 0,
"sharedKey": "<共有キー>",
"enableBgp": false,
"usePolicyBasedTrafficSelectors": false,
"ipsecPolicies": [],
"trafficSelectorPolicies": [],
"expressRouteGatewayBypass": false
}
}
]
}
…お気づきかと思いますが、通常の展開用テンプレートと何ら違いはありません。
もうひとつ、VPNゲートウェイ1とVPNゲートウェイ2を入れ替えたテンプレートを実行したら作成完了です。
BGPを利用せずに、ハブ構成を作成する

上の図2のようなハブ構成を取ったとき、VNET同士をVNET間VPNで接続してしまうと、直接接続しているネットワーク帯以外に通信することができません。
すなわち、VPNゲートウェイ2のネットワークからVPNゲートウェイ3の通信や、オンプレミス拠点1からVPNゲートウェイ2への接続ができません。
しかし、AzureのVNET同士をSite to Siteで接続することで直接接続されていないアドレス空間との通信が可能になります。

以上、知っていれば思いの外簡単なVPNの豆知識でした。