- 公開日
- 最終更新日
【VPC】NAT Gatewayで失敗したお話
この記事を共有する
目次
はじめに
本記事では、2つのVPC間でNAT Gateway通信できないことについて、
なぜできないのかという仕組みの解説と、実際にあった失敗談をご紹介します。
背景・課題
想定していた要件
- コストは可能な限り抑えたい
- NAT Gatewayを共用できないか検討
設計時に考えたこと
本番と検証環境でのNAT Gatewayを共有すればコストが抑えられる?
コストを考慮し設計を進めた結果、通信は成立しませんでした。
前提条件・構成
今回の検証環境は以下の通りです。
システム構成
- リージョン: ap-northeast-1(東京)
- VPC①: 本番環境VPC(10.10.0.0/16)
- VPC②: 検証環境VPC(10.20.0.0/16)
- 本番VPC内にNAT Gatewayを1台配置
- 各VPCはインターネットゲートウェイ(IGW)を保持
想定ルート設計(誤り)
本番VPC内NAT Gateway → 検証VPC → 検証VPC内EC2(プライベートIP)
コスト削減のため、NAT Gatewayを1台で本番と検証で共用する設計を試みました。
NAT Gatewayの基本動作
Amazon VPCのNAT Gatewayは、以下の用途に特化したマネージドサービスです。
- プライベートサブネットからインターネットへ出るための出口
- 送信元プライベートIPをElastic IPへ変換
- 宛先はインターネットゲートウェイ(IGW)経由
つまり、NAT Gatewayは
「インターネット向け通信専用の出口」
であり、別VPCのプライベートIP宛通信は想定されていません。
実際にあった失敗事例
構成
- 本番VPC: 10.10.0.0/16
- 検証VPC: 10.20.0.0/16
- NAT Gateway: 本番VPC内に1台
目的
本番VPC内NAT Gateway → 検証VPC内の特定EC2へ通信させたい。
結果
- パケットはNAT Gatewayまで到達
- 宛先がプライベートIPのためIGW経由ルートが成立せず破棄
- 戻り経路も確立できず通信失敗
疎通確認(ping / curl / telnet)はすべて失敗しました。
NAT Gatewayの料金(東京リージョン例)
| 項目 | 単価 | 備考 |
|---|---|---|
| 時間単位料金 | 約0.065 USD/時間 | リージョンにより変動 |
| 月額(概算) | 約46〜50 USD | 24時間×30日計算 |
| データ処理料金 | 約0.059 USD/GB | 送信データ量に依存 |
本番・検証それぞれに配置すると、固定費は倍になります。
しかし、
仕様を満たさない設計での共用は、そもそも成立しません。
なぜNAT GatewayではVPC間通信できないのか
1. IGW前提の設計
NAT Gatewayはインターネットゲートウェイ経由の通信のみ想定しています。
2. プライベートIP宛はルーティング対象外
宛先が10.x.x.xなどのプライベートアドレスの場合、
IGW経由の通信にならないため破棄されます。
3. 戻り経路が成立しない
NAT変換されたIPはElastic IPとなるため、VPC間で正しいルーティングができません。
公式ドキュメント情報
AWS公式ドキュメントでは明確に記載されています。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/nat-gateway-basics.html
“You cannot route traffic to a NAT gateway through a VPC peering connection.”
つまり、NAT Gatewayは
- インターネット向けアウトバウンド専用
- VPC間通信の中継には利用不可
- Peering経由ルーティング不可
という設計仕様です。
設計前に確認すれば回避できた内容でした…
正しいVPC間通信方法
VPC間通信を行う場合、以下の方法が適切です。
- VPC Peering : 1対1接続でシンプル、低遅延。
- Transit Gateway : 複数VPCを集約接続可能。
- Site-to-Site VPN : 暗号化通信が必要な場合。
- PrivateLink : 特定サービスのみ公開する場合に有効。
教訓
NAT GatewayはVPC間通信のためのサービスではない。
コスト削減のみ優先して設計を進めると、正しく動作しない設計となる恐れがあることを学びました。
まとめ
本記事では、NAT Gatewayで失敗したお話をさせていただきました。
今回の失敗を学びとして、次に活かしていきたいと思います!
この記事は私が書きました
橋本 歩
記事一覧AWSと犬が好きです。