この記事は、 「ネットワーク上級編|要件定義・設計・クラウド・自動化へ進む」 の第35回です。
第4章では、仮想ネットワーク、サブネット、ルートテーブル、 ロードバランサー、NAT Gatewayなど、 クラウド環境を設計するために必要なネットワーク要素を学びます。
NAT Gatewayとは?プライベートサブネットから外部通信する仕組みを図解
クラウド上のサーバーをインターネットへ直接公開したくない一方で、 OSアップデートや外部APIへのアクセスは必要になることがあります。 NAT Gatewayは、このような 「外部から直接接続させたくないが、内部から外へは通信させたい」 という要件を実現するために使われる重要なネットワーク機能です。
クラウドネットワークでは、 すべての仮想サーバーへパブリックIPアドレスを割り当てる必要はありません。
Webサーバーやアプリケーションサーバー、データベースなどを プライベートIPアドレスだけで動作させながら、 必要な外向き通信だけを成立させる設計がよく使われます。
その設計で重要になるのが、今回学ぶNAT Gatewayです。
この記事を読み終えるとできること
- NAT Gatewayの役割を説明できる
- プライベートサブネットから外部通信する流れを説明できる
- NAT GatewayとInternet Gatewayの違いを説明できる
- ルートテーブルとNAT Gatewayの関係を理解できる
- NAT Gatewayを使う代表的な場面を判断できる
- NAT Gateway設計時の注意点を洗い出せる
NAT Gatewayとは何か
NAT Gatewayとは、プライベートIPアドレスを持つクラウド上のリソースが、 自身へ直接パブリックIPアドレスを持たなくても、 外部ネットワークへ通信できるようにするNATサービスです。
NATはNetwork Address Translationの略で、 通信時にIPアドレスを変換する仕組みです。
たとえば、アプリケーションサーバーのIPアドレスが
10.0.2.10だったとします。
このアドレスはプライベートIPアドレスなので、 そのままインターネット上の通信相手との通信に使うものではありません。
NAT Gatewayを経由すると、 外部へ出ていく通信の送信元アドレスが、 外部通信に利用できるアドレスへ変換されます。
NAT Gatewayの中心的な役割は「外向き通信」です。
プライベート側のサーバーから外部へ通信を開始し、 その通信に対する応答を元のサーバーへ返せるようにします。
なぜNAT Gatewayが必要なのか
クラウド上のサーバーには、 インターネットから直接接続される必要がないものが数多くあります。
- アプリケーションサーバー
- バッチサーバー
- 監視サーバー
- 管理用サーバー
- コンテナや仮想マシン
これらへ個別にパブリックIPアドレスを持たせず、 プライベートネットワーク内へ配置することで、 インターネットから直接到達させない構成にできます。
しかし、外部との通信が一切不要とは限りません。
OSアップデート
パッケージやセキュリティアップデートを取得するため、 外部の配布サーバーへアクセスする場合があります。
外部API
決済、地図、通知、認証などの SaaSや外部APIへHTTPSでアクセスする場合があります。
ライブラリ取得
アプリケーションのデプロイ時に、 外部リポジトリからパッケージを取得する場合があります。
外部サービス連携
ログ転送、監視、バックアップなどで 外部サービスと通信する場合があります。
「インターネットから接続される必要はない」と 「インターネットへ通信する必要がない」は別です。
まず全体構成を図で理解する
代表的な構成を簡略化すると、次のようになります。
PRIVATE SUBNET → NAT GATEWAY → INTERNET
Private Subnet
この構成で重要なのは、 アプリケーションサーバー自身をインターネットへ直接公開しているわけではない という点です。
サーバーから開始した通信がNAT Gatewayで変換され、 外部へ送信されます。
NAT Gatewayを通る通信の流れ
アプリケーションサーバーが外部APIへHTTPS通信すると仮定します。
-
サーバーが外部APIへ通信を開始する
プライベートサブネット内のサーバー
10.0.2.10が外部APIへHTTPS通信を開始します。 - ルートテーブルを確認する 宛先が自ネットワーク内ではないため、 デフォルトルートなどに従ってNAT Gateway側へ転送します。
- NAT Gatewayが送信元を変換する サーバーのプライベートIPアドレスを、 外向き通信で利用するアドレスへ変換します。
- インターネットへ送信する 変換された通信が外部ネットワークへ送られ、 目的のAPIサーバーへ到達します。
- 外部APIから応答が返る APIサーバーから、開始された通信に対する応答が返ります。
- NAT Gatewayが変換を戻す NAT Gatewayは対応する通信を確認し、 元のプライベートIPアドレスへ戻してサーバーへ転送します。
アドレス変換のイメージ
10.0.2.10
送信元アドレス
NAT Gatewayを設置しただけで通信できるとは限りません。
ルーティング、外部接続経路、ファイアウォール、 セキュリティルール、DNSなど、 通信経路全体が正しく設定されている必要があります。
NAT GatewayとInternet Gatewayの違い
NAT Gatewayを学ぶときに混同しやすいのが、 Internet Gatewayなどのインターネット接続機能です。
| 項目 | NAT Gateway | Internet Gateway等 |
|---|---|---|
| 主な役割 | アドレス変換を行い、プライベート側から外向き通信を成立させる | クラウドネットワークとインターネットの接続口になる |
| 利用する代表例 | プライベートサブネットのサーバー | パブリック側のインターネット接続 |
| アドレス変換 | 行う | 役割や実装はクラウドサービスにより異なる |
| 外部から新規接続 | 通常の外向きNAT用途では目的としない | 公開構成では受信経路の一部になることがある |
NAT Gatewayとインターネット接続口は役割が違います。
「NAT Gatewayがあるからインターネットへ出られる」とだけ覚えるのではなく、 通信経路全体を理解することが重要です。
ロードバランサーとも役割が違う
前の記事で学んだロードバランサーは、 主に利用者から届いた通信を複数のサーバーへ分散するために使用します。
| 機能 | 通信のイメージ |
|---|---|
| ロードバランサー | 利用者 → ロードバランサー → サーバー |
| NAT Gateway | サーバー → NAT Gateway → 外部サービス |
NAT Gatewayとルートテーブルの関係
NAT Gatewayを設計するときは、 第33回で学んだルートテーブルが重要になります。
代表的なクラウド構成では、 プライベートサブネットからインターネット方向へ向かう通信の 次ホップとしてNAT Gatewayを指定します。
Destination Target
10.0.0.0/16 local
0.0.0.0/0 NAT Gateway
この例では、 同じ仮想ネットワーク内の通信は内部へ転送し、 それ以外のIPv4通信をNAT Gateway側へ送ります。
ルーティング判断
障害調査では、 「NAT Gatewayが正常か」だけでなく、 「対象サブネットのルートがどこを向いているか」 を必ず確認します。
NAT Gatewayを使う代表的な場面
OS・パッケージ更新
プライベートサブネットのサーバーから OS更新サイトやパッケージリポジトリへアクセスします。
外部APIへのアクセス
決済サービス、メール配信、 SaaSなどの外部APIを呼び出します。
送信元IPを集約する
外部サービス側で送信元IPアドレスによる 許可リストを設定したい場合に利用できます。
サーバーへ直接パブリックIPを付けない
各サーバーへ個別の公開IPを持たせず、 外向き通信を集約する設計にできます。
例:外部ベンダーAPIとの連携
顧客のシステムから外部ベンダーのAPIへアクセスするとします。
ベンダー側から、 「接続元IPアドレスを事前登録してください」 と指定されることがあります。
この場合、複数のアプリケーションサーバーからの外向き通信を NAT Gatewayへ集約することで、 外部へ見える送信元アドレスを管理しやすくなります。
NAT Gatewayを設計するときの確認ポイント
1.どのサブネットから外部通信が必要か
すべてのプライベートサブネットへ 無条件にインターネットアクセスを許可する必要はありません。
- アプリケーションサーバーは必要か
- データベースサーバーは必要か
- 管理サーバーは必要か
- 開発環境と本番環境で違いはあるか
2.外向き通信先を確認する
「インターネットアクセスが必要」で終わらせず、 可能であれば通信先を具体化します。
- OS更新サイト
- 外部API
- SaaS
- ソフトウェアリポジトリ
- 監視サービス
3.送信元IPアドレスの固定が必要か
接続先がIPアドレスによる許可リストを利用する場合、 外部から見える送信元IPを固定する必要があります。
4.可用性をどうするか
NAT Gatewayが利用できなくなると、 その経路へ依存している外向き通信が停止する可能性があります。
複数の可用性ゾーンを利用する構成では、 クラウドサービスの仕様を確認したうえで、 障害範囲と経路を設計します。
5.通信量とコストを確認する
マネージドNATサービスでは、 利用時間や処理したデータ量などに応じた料金が発生する場合があります。
大量のデータを常時NAT Gateway経由で送る構成では、 ネットワーク料金も設計判断の一部になります。
6.NATに依存しなくてよい通信を分離する
クラウド内部のストレージや各種マネージドサービスへ接続する場合、 プライベートエンドポイントなどの仕組みを利用できることがあります。
その場合、すべての通信をNAT Gatewayから インターネットへ出す必要がない可能性があります。
7.監視項目を決める
- 通信量
- 接続数
- エラー
- ポート利用状況
- パケットドロップ
- 外向き通信失敗
NATでは多数の通信をアドレスやポートで識別します。 大量の同時接続が発生するシステムでは、 SNATポートなどのリソース不足も設計・監視対象になります。
クラウドによってNAT Gatewayの実装は違う
「NAT Gateway」という考え方は似ていますが、 実際の設定方法やルーティング方式は クラウドサービスごとに同じではありません。
| クラウド | 代表的な特徴 |
|---|---|
| AWS | NAT Gatewayを利用してプライベートサブネットから外部へ通信する構成が可能。 代表的な構成ではプライベートサブネットのルートをNAT Gatewayへ向ける。 |
| Microsoft Azure | NAT Gatewayをサブネットへ関連付け、 サブネットの送信接続として利用する。 AWSと同じ設定手順になるわけではない。 |
| Google Cloud | Cloud NATを利用し、 外部IPv4アドレスを持たないリソースから 外向き通信を行う構成を作成できる。 |
設計では「NAT Gatewayとはこう設定する」と丸暗記せず、 各クラウドのルーティング・サブネット・NATの仕様を公式資料で確認します。
NAT Gatewayでよくある設計ミス・障害
1.ルートがNAT Gatewayを向いていない
NAT Gateway自体が正常でも、 プライベートサブネットからの外向きルートが NAT Gatewayへ向いていなければ通信は流れません。
2.NAT Gatewayの先に外部経路がない
NAT Gatewayまでパケットが届いても、 その先のインターネット接続経路が成立していなければ通信できません。
3.ファイアウォールや通信制御で拒否されている
NATはアドレス変換を行う仕組みであり、 ファイアウォールそのものと同じ役割ではありません。
セキュリティルール、ネットワークACL、 ファイアウォールなども別途確認します。
4.DNS障害をNAT障害と判断する
「Webサイトへ接続できない」場合、 NATではなくDNS名前解決に失敗している可能性もあります。
IPアドレス宛の通信と名前解決を分けて確認します。
5.NAT Gatewayが外部からの接続も受け付けると思う
一般的な外向きNAT Gatewayは、 インターネットからプライベートサーバーへ 新しい接続を公開するための仕組みではありません。
外部からWebサービスへ接続させたい場合は、 ロードバランサーや公開エンドポイントなど、 別の受信設計を検討します。
6.NAT Gatewayを置けば安全になると思う
NAT Gatewayは重要なネットワーク要素ですが、 NATだけでセキュリティ要件を満たせるわけではありません。
- 不要な外向き通信を許可していないか
- ファイアウォールで通信先を制御する必要がないか
- ログを取得できているか
- 侵害されたサーバーから外部への通信を検知できるか
7.コストを考えず全通信を通す
通信量が多いシステムでは、 NATサービスやデータ転送にかかる料金が 無視できない場合があります。
NAT Gatewayを顧客・上司へどう説明するか
技術に詳しくない相手へは、 「NAT」や「SNAT」という用語から説明するより、 何を実現するための仕組みかから説明します。
説明例:
「アプリケーションサーバーをインターネットへ直接公開せずに、 OSアップデートや外部サービスへのアクセスだけ行えるようにします。 サーバーから外へ出る通信はNAT Gatewayへ集約し、 外部向けのアドレスへ変換して通信させます。」
設計レビューでは要件と結びつける
あまり良くない説明:
「プライベートサブネットなのでNAT Gatewayを置きました。」
より良い説明:
「アプリケーションサーバーはインターネットから直接接続される必要がないため、 パブリックIPを付与せずプライベートサブネットへ配置します。 一方でOS更新と外部API接続が必要なため、 外向き通信はNAT Gateway経由としています。」
上級編では、 構成要素の名前ではなく、要件から設計理由を説明する ことが重要です。
NAT Gatewayで使われる英語表現
| 英語 | 意味 |
|---|---|
| NAT Gateway | NATゲートウェイ |
| Network Address Translation | ネットワークアドレス変換 |
| Outbound traffic | 外向き通信・送信トラフィック |
| Inbound traffic | 内向き通信・受信トラフィック |
| Private subnet | プライベートサブネット |
| Public IP address | パブリックIPアドレス |
| Source NAT / SNAT | 送信元アドレス変換 |
| Route table | ルートテーブル |
| Default route | デフォルトルート |
| Egress traffic | 外部へ出ていく通信 |
公式ドキュメントを読むときに使える表現
Instances in the private subnet require outbound internet access.
プライベートサブネット内のインスタンスには、
インターネットへの外向きアクセスが必要です。
Route outbound traffic through the NAT gateway.
外向きトラフィックをNAT Gateway経由でルーティングします。
The server does not require a public IP address.
そのサーバーにはパブリックIPアドレスは必要ありません。
Verify the route table associated with the subnet.
サブネットに関連付けられているルートテーブルを確認してください。
理解度チェック
NAT Gatewayの役割と、 ルーティング・受信通信との違いを理解できているか確認します。
問題1.NAT Gatewayの代表的な役割として最も適切なものはどれですか。
- 複数のWebサーバーへアクセスを負荷分散する
- プライベート側のリソースから外部への通信をアドレス変換する
- ドメイン名をIPアドレスへ変換する
- VPN通信を暗号化する
解答を見る
NAT Gatewayは、プライベート側から開始する外向き通信で アドレス変換を行うために利用されます。
問題2.プライベートサブネット内のサーバーから インターネットへ通信させたい場合、確認すべき項目として最も適切なものはどれですか。
- NAT Gatewayだけ作成されているか
- ロードバランサーの台数だけ確認する
- NAT Gateway、ルートテーブル、外部接続経路、通信制御を確認する
- DNSサーバーだけ確認する
解答を見る
通信は複数のネットワーク要素を通るため、 経路全体を確認する必要があります。
問題3.NAT Gatewayを利用しているプライベートサーバーへ、 インターネット側から自由に新規接続できるでしょうか。
解答を見る
NAT Gatewayは、プライベート側から開始された通信と その応答を扱うために利用します。 外部公開には別の受信設計が必要です。
問題4.次のルートテーブルで、インターネット宛通信の次ホップはどこですか。
10.0.0.0/16 local
0.0.0.0/0 NAT Gateway 解答を見る
自ネットワーク内に該当しないIPv4通信は、 デフォルトルートに従ってNAT Gatewayへ送られます。
問題5.NAT Gatewayを採用するときに確認すべき設計項目を3つ挙げてください。
解答例を見る
- どのサブネットから外向き通信が必要か
- 送信元IPを固定する必要があるか
- 可用性・障害範囲
- 通信量とコスト
- 同時接続数やSNATポート
- 監視・ログ
- プライベートエンドポイント等へ分離できる通信がないか
実践演習:プライベートサブネットの外向き通信を設計する
あなたは、クラウド上に新しいWebシステムを構築することになりました。
演習用構成
Private Subnet
アプリケーションサーバーには次の要件があります。
- インターネットからサーバーへ直接接続させない
- パブリックIPアドレスを直接割り当てない
- 毎日OSアップデートを確認する
- 外部の決済APIへHTTPS通信する
- 決済会社には接続元IPを事前登録する必要がある
課題1.必要なネットワーク機能を追加する
この要件を満たすため、 アプリケーションサーバーから外部への経路に 何を追加するべきでしょうか。
解答を見る
NAT Gatewayを利用する構成が候補になります。
サーバー自身を直接公開せず、 外向き通信をNAT Gatewayへ集約します。
課題2.ルートテーブルを考える
AWS型の代表的な構成を想定し、 プライベートサブネットのデフォルトルートを記載してください。
Target:__________
解答を見る
Destination:0.0.0.0/0
Target:NAT Gateway
課題3.接続元IPを固定したい理由を説明する
決済会社から 「アクセス元のグローバルIPアドレスを教えてください」 と依頼されました。
なぜ送信元IPを固定・管理する必要があるのか説明してください。
解答例を見る
決済会社側が送信元IPアドレスによる許可リストを設定するためです。 複数のアプリケーションサーバーからの外向き通信を NAT Gatewayへ集約し、 外部から見える送信元アドレスを管理できるようにします。
課題4.障害を切り分ける
アプリケーションサーバーから外部APIへ 接続できなくなりました。
確認する項目を5つ以上挙げてください。
2.____________________
3.____________________
4.____________________
5.____________________
解答例を見る
- アプリケーションサーバーのIP設定
- 対象サブネットのルートテーブル
- NAT Gatewayの状態・設定
- NAT Gatewayから外部への経路
- セキュリティグループやファイアウォール等の通信制御
- ネットワークACL
- DNS名前解決
- 外部API側の障害
- 接続元IPの許可リスト
- 接続数・SNATポートなどのリソース状況
自分の言葉で説明する課題
後輩エンジニアから 「プライベートサブネットならインターネットにつながらないはずなのに、 なぜNAT Gatewayを使うと外へ通信できるんですか?」 と質問されました。
1分程度で説明してください。
説明例を見る
NAT Gatewayは、プライベートIPしか持たないサーバーから 外部へ通信するときに、 送信元アドレスを外部通信に利用できるアドレスへ変換する仕組みです。
サーバーから開始した通信をNAT Gatewayへ送り、 変換してインターネットへ出します。 外部から返ってきた応答はNAT Gatewayが元のサーバーへ戻します。
そのため、サーバー自身へ直接公開用のパブリックIPを持たせなくても、 OSアップデートや外部APIへのアクセスなどの 外向き通信を行えます。
まとめ
- NAT Gatewayは、プライベート側のリソースから 外部へ通信するために利用するNATサービス
- プライベートIPアドレスを持つサーバーの 外向き通信時に送信元アドレスを変換する
- サーバー自身へ直接パブリックIPを持たせずに 外部通信を行える構成を作れる
- OS更新、外部API、SaaS接続などが代表的な利用例
- NAT GatewayとInternet Gateway、ロードバランサーは役割が異なる
- NAT Gatewayだけでなくルートテーブルと 外部接続経路まで含めて通信を設計する
- NAT Gatewayはファイアウォールの代わりではない
- 可用性、固定送信元IP、通信量、コスト、 SNATポート、監視も設計時に確認する
- AWS、Azure、Google Cloudでは NATサービスの設定方法や実装が異なる
上級編で重要なのは、 「NAT Gatewayを置けば通信できる」と覚えることではありません。 サーバーから外部までの経路を追い、 どこでルーティングし、どこでアドレス変換し、 どこで通信を制御しているのかを説明できることです。

コメント