🐕

Azure Nat Gatewayを作成する

2024/04/06に公開

NatGatewayとは

・仮想マシン等のインターネットアウトバウンド接続をNAT(アドレス変換)してくれるものです。
・Gatewayとありますが、公式ドキュメントの説明通り「ネットワーク アドレス変換 (NAT) サービス」と考えたほうがイメージに合うかもしれません。
※ApplicationGatewayや仮想ネットワークGatewayのように専用サブネットを作成するというわけでなく、NatGatewayに紐づけたサブネット内のアウトバウンド接続をNat変換してくれる形です。

以下公式ドキュメントです。
https://learn.microsoft.com/ja-jp/azure/nat-gateway/nat-overview

作成

以下公式ドキュメントです。
https://learn.microsoft.com/ja-jp/azure/nat-gateway/quickstart-create-nat-gateway-portal?source=recommendations

・構成
同じVNETにVM2台(Windows,Linux)を作成しました。
そのVNETにNatgatewayを紐づけていきます。

  1. マーケットプレイスで「nat」と入力すると「NATゲートウェイ」が表示されます。

  2. 「基本」タブの設定を入れていきます。

  3. 「送信IP」タブの設定を入れていきます。

     ※既存のパブリックIPアドレスを使用する場合はSKUが「Standard」、割り当てが「静的」であることが前提となるので注意です。

4.「サブネット」タブの設定を入れていきます。

 ※ここでNat対象が存在するサブネットを選択します。

  1. 最後に確認画面が表示されるので、問題なければ「作成」をクリックします。

    ※デプロイは1分かからない程度で終わりました。

  2. NatGatewayのリソースが存在しています。

確認

ここからはOS上でIPアドレスが変換されるのか確認していきます。

Linux

以下のコマンドを実行します。
curl inet-ip.info

Windows

以下のコマンドを実行します。
curl inet-ip.info

どちらもNatGatewayのIPアドレスを使用していることが確認できましたね。

その他

パブリックIPプレフィックスを使った場合どうなるのか確認してみます
before

after

curl inet-ip.info

何度か実行してみましたが、プレフィックス内で割り振られることがわかりましたのでここまでにしたいと思います。
※NatGatewayを削除するときは仮想ネットワークとの関連付けを解除しましょう。

ARMテンプレート情報

本日使用したNatGatewayのARMテンプレートです。
Paramter.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"natGateways_testnatGW_name": {
"value": null
},
"publicIPAddresses_NATGatewayPIP_externalid": {
"value": null
}
}
}

template.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"natGateways_testnatGW_name": {
"defaultValue": "testnatGW",
"type": "String"
},
"publicIPAddresses_NATGatewayPIP_externalid": {
"defaultValue": "/subscriptions/fd558ead-a0aa-49ef-b2b6-1cdc988011bf/resourceGroups/test01-rg/providers/Microsoft.Network/publicIPAddresses/NATGatewayPIP",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Network/natGateways",
"apiVersion": "2023-09-01",
"name": "[parameters('natGateways_testnatGW_name')]",
"location": "japaneast",
"sku": {
"name": "Standard",
"tier": "Regional"
},
"properties": {
"idleTimeoutInMinutes": 4,
"publicIpAddresses": [
{
"id": "[parameters('publicIPAddresses_NATGatewayPIP_externalid')]"
}
]
}
}
]
}

Discussion