Cloud Service
Azure NAT Gateway
サブネットの外向き通信を集約し、SNAT ポート枯渇を防いで安定したアウトバウンド接続を実現する Azure のマネージド NAT サービス。AWS の NAT Gateway に相当。
- 1.サブネットからの外向き通信に固定の送信元 IP を与えるマネージド NAT。
- 2.SNAT ポートを大量に確保し、接続枯渇を防ぐ。
- 3.受信は持たず外向き専用。AWS の NAT Gateway 相当。
解決する課題
プライベートサブネットの仮想マシンに公開 IP を直接付けずに、安定した外向き通信と固定の送信元 IP を確保できます。
- 各 VM に公開 IP を割り当てず、送信元 IP を1つ(または数個)に集約したい
- ロードバランサの送信規則で起きがちな SNAT ポート枯渇を解消したい
- 外部 API やパートナーに許可リスト用の固定 IP を提示したい
- 受信は許さず、外向き(アウトバウンド)通信だけを許可したい
主要概念と用語
- NAT Gateway: サブネットに関連付けて使うマネージドな送信元 NAT(SNAT)リソース。サブネット内のリソースの外向き通信を、指定した公開 IP / プレフィックスへ変換する。外向き専用で受信フローは持たない
- SNAT(送信元 NAT): プライベート IP を公開 IP へ書き換える変換。送信元 IP とポートの組み合わせ(ポート単位)でフローを多重化する
- SNAT ポート: 1つの公開 IP あたり利用できる送信ポートの数。宛先ごとにポートを消費するため、外向き接続数の上限を左右する
- アイドルタイムアウト: 確立済みフローが無通信のまま解放されるまでの待ち時間。長くするとポートを長く保持し、短くすると早く解放する
- 関連付け対象: NAT Gateway はサブネット単位で関連付ける。1サブネットに付けられる NAT Gateway は1つ
- 送信先 IP: NAT Gateway には公開 IP アドレスまたは公開 IP プレフィックスを複数まとめて割り当てられ、IP を増やすほど利用可能 SNAT ポート総数が増える
仕様・制限・クォータ
- Standard SKU の公開 IP / プレフィックスのみを関連付けできる
- NAT Gateway はゾーン指定(zonal)リソースで、特定の可用性ゾーンに配置する。ゾーンをまたぐ冗長は、ゾーンごとに NAT Gateway を分けて構成する
- 1つの NAT Gateway に複数の公開 IP / プレフィックスを束ねられ、合計の SNAT ポート数が利用上限を決める
- 同一サブネットに NAT Gateway とロードバランサ送信規則を併用しない(NAT Gateway が外向きを引き取る)
- アイドルタイムアウトは既定値があり、一定範囲で延長できる
- サブスクリプション/リージョンごとに NAT Gateway 数や IP 数の上限があり、必要に応じて引き上げ申請できる
内部の仕組み
NAT Gateway は、Azure の SDN(ソフトウェア定義ネットワーク)基盤上で動くフルマネージドな送信元 NAT です。サブネットに関連付けると、そのサブネット内のリソースの既定の外向き経路が NAT Gateway 経由に切り替わり、外向きフローは割り当てた公開 IP / プレフィックスへ SNAT されて出ていきます。
- ポートを宛先ごとに動的に割り当てるため、同じ送信元から多数の異なる宛先へ大量に接続しても、ポートを効率よく使い回せる。これが固定割り当てのロードバランサ送信規則より枯渇に強い理由
- 受信フローは扱わないため、外部からの着信は別途ロードバランサや公開 IP で構成する必要がある
- 複数の公開 IP / プレフィックスを束ねると、IP 全体でポートプールが拡大し、より多くの同時外向き接続を維持できる
- アイドルタイムアウト経過後にフローを解放してポートを回収する。短時間に再接続を繰り返すワークロードでは TCP のリセット動作と合わせて挙動を理解しておく
サブネットの外向き経路は、関連付けがあれば NAT Gateway が最優先で使われます。同じサブネットにロードバランサの送信規則やインスタンスレベルの公開 IP があっても、NAT Gateway があればそちらが外向きを担います。
設計パターン / ベストプラクティス
- プライベートサブネット + NAT Gateway を外向きの既定にする。VM に個別の公開 IP を付けずに済み、攻撃面を小さくできる
- SNAT ポートが足りないときは公開 IP / プレフィックスを追加する。多数の同時外向き接続(高並列のバッチ・スクレイピング・外部 API 連携)では特に有効
- 許可リスト用の固定送信元 IP を提示したい場合は、公開 IP プレフィックスで連続した範囲を確保すると相手側の登録が容易
- ゾーンごとに NAT Gateway を分離し、ゾーン障害の影響範囲をそのゾーンに閉じ込める
- 同じ宛先へ大量接続するならアイドルタイムアウトを見直す。短くするとポート回収が早まり枯渇を緩和できる
NAT Gateway とロードバランサの送信規則を同じサブネットで二重に使わないこと。外向きは NAT Gateway に一本化し、送信元 IP の管理とポート枯渇対策をそこに集約します。
運用・監視
- Azure Monitor のメトリクスで状態を把握する。代表的なものに、処理パケット数・バイト数、利用中の SNAT 接続数、SNAT ポートの利用状況、ドロップしたパケット数などがある
- SNAT ポート利用率が高止まりしていたら、公開 IP を増やす・アイドルタイムアウトを短くする・接続を使い回す(コネクションプール)などで対処する
- ドロップパケットの増加は枯渇や設定不整合のサイン。メトリクスのアラートを設定して早期に気づけるようにする
- 関連付けの変更(サブネットへの付け外し)は外向きの送信元 IP が変わるため、許可リストへ登録済みの相手がいる場合は影響を事前周知する
コスト
NAT Gateway は「リソースの時間課金」と「処理データ量」に加え、割り当てる公開 IP / プレフィックスの料金がかかります。アイドルでも時間課金が発生する点に注意します。
外向きトラフィックが少なく、固定送信元 IP も不要なら、NAT Gateway なしの既定の外向き(または最小構成)で足りることがあります。逆に多数の VM が個別に公開 IP を持つ構成なら、公開 IP を NAT Gateway に集約して IP 数を減らした方が安く・安全になる場合があります。
セキュリティ
- VM に公開 IP を付けない運用にできるため、外部からの直接到達面を減らせる。受信は NAT Gateway では一切行われない
- 外向きの送信元が既知の固定 IP に集約されるため、相手側ファイアウォールでの許可リスト運用がしやすい
- 通信内容の検査(IDS/IPS・URL フィルタリング)が要る場合は、NAT Gateway とは別に Azure Firewall などのアウトバウンド検査を併用する
- NSG はサブネット/NIC の受信・送信制御に引き続き有効。NAT Gateway は送信元変換を担い、フィルタリングは NSG / ファイアウォールが担う
NAT Gateway を通信内容のフィルタリング装置と誤解しないこと。NAT Gateway は送信元 IP とポートを変換するだけで、宛先 FQDN の許可・拒否や脅威検査は行いません。アウトバウンドの検査が必要なら Azure Firewall を経路に挟みます。
関連サービス・比較
外向き通信の出口(送信元 NAT)には複数の選択肢があり、用途で使い分けます。受信を伴うロードバランサの送信規則と、外向き専用の NAT Gateway は役割が異なります。
| 観点 | NAT Gateway | Load Balancer 送信規則 |
|---|---|---|
| 主な役割 | 外向き専用の送信元 NAT | 受信分散のついでに外向きも提供 |
| SNAT ポート割り当て | 宛先ごとに動的で枯渇に強い | 事前に固定割り当て |
| 受信フロー | 扱わない | 受信を担うのが本来の役目 |
| 設定の単位 | サブネットに関連付け | ロードバランサの規則として定義 |
| 向いている用途 | プライベートサブネットの外向き集約 | 受信 LB と外向きをまとめたい場合 |
外向きの安定性とポート枯渇対策が目的なら NAT Gateway。受信の負荷分散が主目的で外向きはおまけで足りるならロードバランサの送信規則。両方を同じサブネットで重ねないことが設計の基本です。
ハンズオン / CLI例
# リソースグループを作成
az group create --name demo-rg --location japaneast
# 送信元となる Standard 公開 IP を作成
az network public-ip create \
--resource-group demo-rg \
--name nat-pip \
--sku Standard \
--zone 1
# NAT Gateway を作成(公開 IP を関連付け)
az network nat gateway create \
--resource-group demo-rg \
--name demo-natgw \
--location japaneast \
--public-ip-addresses nat-pip \
--idle-timeout 4 \
--zone 1
# 既存サブネットに NAT Gateway を関連付け(外向きを集約)
az network vnet subnet update \
--resource-group demo-rg \
--vnet-name demo-vnet \
--name workload-subnet \
--nat-gateway demo-natgw
Azure Service
Azure NAT Gatewayを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ネットワーキング
比較で見る軸
クラウド: Azure / カテゴリ: ネットワーキング / 難易度: intermediate
導入後に効く点
SNAT ポートを大量に確保し、接続枯渇を防ぐ。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- ネットワーキング
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- reliability / security / operational / cost
判断チェックリスト
- 自社の用途が「ネットワーキング / reliability」に近いか確認する。
- 強みである「サブネットからの外向き通信に固定の送信元 IP を与えるマネージド NAT。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。