Cloud Service
Cloud NAT
外部 IP を持たないプライベート VM などに、アウトバウンド専用のフルマネージドな送信元 NAT を提供する分散サービス。AWS の NAT Gateway に相当。
- 1.外部 IP を持たない VM に、外向き通信だけを安全に提供するマネージド NAT。
- 2.インバウンドは許可せず、アウトバウンドと戻りの応答のみを通す。
- 3.Google が分散実装するためボトルネックの単一機器がなく、スケールする。
解決する課題
外部 IP アドレスを割り当てない VM やコンテナ、ジョブから、インターネットや一部の Google API へ安全に外向き通信したい、という要件を満たします。
- 攻撃面を減らすため VM に外部 IP を付けたくないが、OS パッケージ更新や外部 API 呼び出しの外向き通信は必要
- 多数のインスタンスの送信元を少数の共有 IP に集約し、相手側の許可リスト(アローリスト)を簡素にしたい
- インバウンドは一切許さず、アウトバウンドと戻りの応答だけを通したい
- NAT 機器の冗長化・スケール・運用を Google に任せたい
主要概念と用語
- Cloud NAT ゲートウェイ: VPC ネットワークの特定リージョン・特定サブネットに対して、送信元 NAT を提供する論理的な構成。物理的な単一機器ではなく Google が分散実装する
- Cloud Router: Cloud NAT の設定(NAT 対象や IP の割り当て情報)を配布する制御プレーン。リージョン単位で関連付ける。NAT のデータ経路そのものではなく設定を司る点に注意
- 送信元 NAT(SNAT): 内部 IP を NAT 用の外部 IP とポートに付け替えて外へ出す変換。Cloud NAT は SNAT のみを行い、外部から開始する接続(DNAT)は提供しない
- NAT IP の割り当て: NAT に使う外部 IP を**自動割り当て(auto)にするか、予約済みの静的 IP を手動割り当て(manual)**にするかを選ぶ
- エンドポイント非依存マッピング(EIM): 同一の内部送信元に対し、宛先が変わっても同じ NAT IP・ポートを再利用する挙動。一部のピアツーピア通信で必要になる
- NAT 対象範囲: ゲートウェイがどのサブネットのプライマリ/セカンダリ範囲を NAT 対象にするかの指定。サブネット単位で細かく選べる
仕様・制限・クォータ
- リージョン単位のサービス。1 つのゲートウェイは 1 つの VPC・1 つのリージョンを対象とし、複数リージョンをまたぐ場合はリージョンごとに作成する
- アウトバウンド専用。インターネットから VM への接続を開始することはできない。戻りの応答パケットのみ通す
- NAT には外部 IP ごとに利用可能なポート数の上限があり、1 つの IP で同時に張れる接続数は有限。多数の同時接続が必要なら、割り当て IP を増やすか VM あたりの最小ポート数を調整する
- ポート枯渇を起こすと新規接続が失敗するため、IP 数と VM あたりポート数のバランス設計が重要
- TCP / UDP / ICMP を対象にできる。プロトコルごとにタイムアウト(アイドル時間)が設定可能
- 外部 IP を持つ VM、外部ロードバランサ配下で直接応答する経路など、そもそも別経路で外へ出る通信は NAT 対象外
- 具体的なポート数・タイムアウト・クォータの数値は変動するため、設計時は公式ドキュメントで最新値を確認する
内部の仕組み
Cloud NAT はソフトウェア定義の分散 NAT です。トラフィックを集約する専用の NAT 機器やプロキシ VM を経由させるのではなく、各 VM をホストする基盤側で変換を行うため、単一のボトルネックや単一障害点を持ちにくい構造になっています。
- 設計上、NAT 用の外部 IP とポートを各 VM へ事前に割り当てておき、VM はその範囲を使って外へ出る。Cloud Router がこの割り当て情報を配布する
- アウトバウンドのパケットは内部 IP・ポートから NAT IP・ポートへ付け替えられ、戻りの応答は元の内部アドレスへ戻される
- 一方で、宛先ごとに NAT IP・ポートを使い分けるエンドポイント依存の挙動が既定で、これが NAT としての安全性に寄与する。ピアツーピアで穴あけが必要な場合のみ EIM を検討する
- マネージドサービスとしてスケールするため、インスタンス数の増加に合わせて追加の NAT 機器をプロビジョニングする必要はない
Cloud NAT の容量は「NAT IP 数 × IP あたりのポート数」で決まり、各 VM には最小ポート数が予約されます。短命な接続を大量に張るワークロード(外部 API への高頻度アクセスなど)ではポートが枯渇して新規接続が失敗しがちです。NAT IP の追加、VM あたり最小ポート数の見直し、動的ポート割り当ての活用で対処します。
設計パターン / ベストプラクティス
- VM には外部 IP を付けず、外向き通信は Cloud NAT に集約して攻撃面を最小化する
- 相手先の許可リストが必要なら、手動割り当ての静的 IP を NAT に使い、送信元 IP を固定・公開する
- 同時接続が多いワークロードでは、NAT IP を複数用意し、必要なら動的ポート割り当てを有効化して枯渇を避ける
- ゲートウェイはリージョンごとに用意し、ワークロードと同一リージョンで NAT して不要なリージョン間転送を避ける
- 多くの Google API はプライベート経路(限定公開の Google アクセスなど)で到達できるため、API 向け通信に Cloud NAT を必須にしない設計も検討する
- GKE のプライベートクラスタからの外向き通信や、外部 IP を持たないバッチ・パイプラインの egress に活用する
運用・監視
- Cloud Monitoring で、割り当て済みポート数・使用中ポート数・ドロップされた接続数などのメトリクスを監視し、ポート枯渇の予兆を捉える
- NAT ロギングを有効化すると、変換された接続やドロップされた接続を Cloud Logging に記録できる。ログ対象は「変換のみ」「エラーのみ」「両方」から選べる
- 枯渇の兆候(ドロップ増加)が出たら、NAT IP の追加または VM あたりポート数の調整で対応する
- アイドルタイムアウトが長すぎるとポートが解放されず枯渇しやすいため、ワークロードに合わせて調整する
コスト
課金は「NAT ゲートウェイの稼働」と「処理データ量」が中心です。外部 IP アドレス自体の料金も考慮します。
| 課金対象 | 課金の考え方 | コスト最適化のヒント |
|---|---|---|
| NAT ゲートウェイ | ゲートウェイの稼働時間に応じた課金 | 不要なリージョンにゲートウェイを残さない |
| 処理データ量 | NAT を通る送受信データ量の従量 | API はプライベート経路に逃がし NAT 通過を減らす |
| 外部 IP アドレス | 割り当て・利用に応じた IP の料金 | 必要最小限の IP 数に抑える |
セキュリティ
- インバウンドを一切許さない設計が基本価値。外部から VM への接続開始を構造的に防ぐ
- VM に外部 IP を付けないことで、直接到達できる攻撃面を排除する
- NAT IP を固定すれば、相手側で送信元ベースの許可・監査がしやすくなる
- **ファイアウォール(VPC ファイアウォールルール)**で egress 自体も制御し、行き先を必要なものに絞る
- NAT ロギングで外向き接続の可視性を確保し、不審な egress を検知する
「外部 IP を消したのに外向き通信が必要」という理由だけで、手作りの NAT 用 VM(NAT インスタンス)を立てて全 egress を集約するのは避けたい構成です。その VM が単一障害点・帯域のボトルネック・運用負債になります。Cloud NAT はマネージドな分散実装でこれらを回避できるため、特別な理由がなければ自前 NAT VM ではなく Cloud NAT を選びます。
Well-Architected の観点
- セキュリティ: 外部 IP を排除しインバウンドを遮断、egress を NAT とファイアウォールで集約・制御する。最小権限ならぬ「最小到達面」を実現する
- 運用上の優秀性: 冗長化・スケール・パッチを Google に委ね、メトリクスとログで枯渇や異常を検知できる運用に寄せる。自前 NAT VM の保守から解放される
試験で問われるポイント
- 「外部 IP を持たない VM から外向き通信したい」→ Cloud NAT。インバウンドは提供しない(アウトバウンド専用)点を必ず押さえる。
- Cloud NAT はリージョン単位で、Cloud Routerが設定配布を担う(Cloud Router は BGP/ルート配布の制御プレーンで、NAT のデータ経路ではない)。
- 接続失敗の典型原因はポート枯渇。対策は「NAT IP を増やす」「VM あたり最小ポート数を見直す」「動的ポート割り当て」。
- 送信元 IP を固定・公開したい要件では、自動割り当てではなく手動割り当ての静的 IP を選ぶ。
- 相当する AWS サービスは NAT Gateway(こちらは AZ 単位のリソースで、可用性のため複数 AZ に配置する点が対照的)。
関連サービス・比較
| 観点 | Cloud NAT(GCP) | NAT Gateway(AWS) |
|---|---|---|
| 役割 | プライベート VM の外向き通信(送信元 NAT) | プライベートサブネットの外向き通信 |
| 方向 | アウトバウンド専用(インバウンド不可) | アウトバウンド専用(インバウンド不可) |
| 実装形態 | ソフト定義の分散 NAT(専用機器なし) | AZ 内のマネージド NAT リソース |
| スコープ | リージョン単位(サブネット選択) | AZ 単位(冗長化は複数 AZ 配置) |
| 制御プレーン | Cloud Router で設定を配布 | ルートテーブルでサブネットから誘導 |
| 送信元 IP 固定 | 手動割り当ての静的 IP | Elastic IP を関連付け |
| 枯渇要因 | NAT IP とポートの上限 | ポート数の上限 |
ハンズオン / CLI例
# NAT 用の静的外部 IP を予約(送信元 IP を固定したい場合)
gcloud compute addresses create nat-ip-1 --region=asia-northeast1
# Cloud Router を作成(NAT 設定の配布に使う)
gcloud compute routers create nat-router \
--network=my-vpc \
--region=asia-northeast1
# Cloud NAT ゲートウェイを作成(手動 IP・全サブネット範囲を対象)
gcloud compute routers nats create my-nat \
--router=nat-router \
--region=asia-northeast1 \
--nat-custom-subnet-ip-ranges=all \
--nat-external-ip-pool=nat-ip-1 \
--enable-logging
# 設定を確認
gcloud compute routers nats describe my-nat \
--router=nat-router \
--region=asia-northeast1
Google Cloud Service
Cloud NATを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ネットワーキング
比較で見る軸
クラウド: Google Cloud / カテゴリ: ネットワーキング / 難易度: basic
導入後に効く点
インバウンドは許可せず、アウトバウンドと戻りの応答のみを通す。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Google Cloud
- カテゴリ
- ネットワーキング
- 難易度
- basic
- 関連資格
- —
- 設計柱
- security / operational
判断チェックリスト
- 自社の用途が「ネットワーキング / security」に近いか確認する。
- 強みである「外部 IP を持たない VM に、外向き通信だけを安全に提供するマネージド NAT。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。