NAT・IGWが頭に入らないインフラ初心者へ

# はじめに
「NATゲートウェイ、インターネットゲートウェイが頭に入らないインフラ初心者」とは私のことです。
いつまで経ってもNATとIGWを混同してしまうので、Copilotに詳しく聞いてみました。

以下、copilotの引用
---

AWSのVPC（仮想プライベートクラウド）環境では、外部（インターネット）との通信を安全かつ効率的に管理するために、**Internet Gateway**と**NAT Gateway**という2種類のゲートウェイが用意されています。それぞれの役割や必要性、そしてそれらが生まれた背景を、以下に初心者向けに分かりやすく説明します。

## Internet Gateway（IGW）の役割

**Internet Gateway**は、VPCとインターネットを直接つなぐ出入口のような役割を果たします。  
- **主な目的**：  
  - VPC内のパブリックサブネットに配置されたリソース（例：Webサーバーなど）が、インターネットからのリクエストを受け付けたり、逆にインターネットへデータを送信できるようにする。  
  - 双方向の通信を実現する。

- **仕組み**：  
  - IGWはVPCにアタッチされ、ルートテーブルに設定することで、外部との通信経路が確立されます。  
  - パブリックIPアドレスやElastic IPを持つインスタンスが、このゲートウェイを介して通信を行います。

- **歴史的な背景**：  
  - ネットワークの基本原理として、内側のネットワークと外部ネットワーク（インターネット）を接続するための「デフォルトゲートウェイ」や「ルーター」が長年利用されてきました。  
  - AWSはこうした従来の考え方をクラウド環境に落とし込み、ユーザーが簡単にインターネット接続できるようにInternet Gatewayを提供しています。



---

## NAT Gatewayの役割

**NAT Gateway**は、主にVPC内の**プライベートサブネット**に配置されたリソースがインターネットへ接続できるようにするために用いられます。  
- **主な目的**：  
  - プライベートサブネットのインスタンスは、セキュリティ上の理由から直接パブリックIPを持たず、外部からの直接アクセスを防ぎます。しかし、これらのインスタンスもパッチ適用、ソフトウェアのアップデート、外部APIの呼び出しなど、外向けには通信が必要な場合があります。  
  - NAT Gatewayは、内部のプライベートIPアドレスを外部に見せる際に１つ（または少数）のパブリックIPに変換（＝Network Address Translation）し、アウトバウンドの通信を可能にします。

- **仕組み**：  
  - NAT Gateway自体はパブリックサブネットに配置され、そこに割り当てられたElastic IPを介して、プライベートサブネット内のインスタンスの出力トラフィックを変換します。  
  - 外部からは、直接NAT Gateway経由で接続が開始されることはないため、セキュリティも確保されます。

- **歴史的な背景**：  
  - NAT（Network Address Translation）技術は、IPv4アドレスが限られているという現実から、1990年代初期に登場しました。内部ネットワークの多数の端末が、1つまたは少数のグローバルIPアドレスを共有して通信できる仕組みとして確立されました。  
  - AWSでは、かつて自前で設定する「NATインスタンス」を使っていましたが、運用の手間やスケーラビリティ、可用性の観点から、より管理が容易なサービスとして**NAT Gateway**が導入されました。



---

## なぜ両者が必要なのか？

AWSのVPC設計では、セキュリティや運用効率のために、リソースを**パブリックサブネット**（外部との双方向通信が必要なもの）と**プライベートサブネット**（外部からの直接アクセスを避けたいもの）に分けることが推奨されます。この分離により、以下のようなメリットがあります。

- **Internet Gateway**  
  - **利用対象**：パブリックサブネット  
  - **役割**：外部と直接通信できるリソースが、インターネットへアクセスするための入口・出口を提供する。

- **NAT Gateway**  
  - **利用対象**：プライベートサブネット  
  - **役割**：内部リソースが外部に対してアウトバウンド通信を行うときのみ、必要な変換処理を行う。これにより、内部のIPアドレス情報が隠蔽され、直接外部から攻撃されるリスクが低減される。

このように、パブリックサブネットとプライベートサブネットでそれぞれ異なる通信要件があるため、両者を用途に合わせて使い分けることが、セキュリティと運用の両面から合理的なアプローチとなっています。

---

## 歴史的・技術的背景のまとめ

- **Internet Gateway**の考え方は、長年のネットワーキングの中で「ルーター」や「デフォルトゲートウェイ」として実装され、クラウド環境においても同様の役割を担うように発展しました。
- **NAT Gateway**は、IPv4アドレス枯渇問題への対応策として生まれたNAT技術をベースに、内部リソースのアドレスを隠しながらも必要なアウトバウンド通信を実現するために導入されました。従来はNATインスタンスを自分で構築していたのですが、運用の手間や信頼性の向上を目的として、AWSではマネージドサービスとして提供されています。

このような背景により、AWSではよりシンプルでスケーラブルなネットワーク設計を実現するために、**Internet Gateway**と**NAT Gateway**という2種類のゲートウェイが用意され、役割ごとに使い分けられているのです。

---

## まとめ

- **Internet Gateway**：  
  - VPCにアタッチされ、パブリックサブネットのリソースがインターネットと双方向に通信できるようにする。  
- **NAT Gateway**：  
  - プライベートサブネット内のリソースが、外向けの通信を行う際に内部のプライベートIPをパブリックIPに変換して通信できるようにする（外部からの直接アクセスは遮断）。

この設計により、セキュリティを高めつつ必要な通信を実現できるため、AWSのネットワーク構築において非常に重要な要素となっています。

これらの背景や技術がどのように実際のシステム設計に影響しているのか、また具体的な構築方法（例えばTerraformのコード例など）についても、さらに深堀りして学ぶと、より実践的な知識が得られるでしょう。

【参考】
- [AWSのインターネットGWとNAT-GWの違いについて](https://milestone-of-se.nesuke.com/sv-advanced/aws/internet-nat-gateway/)  
- [NATゲートウェイの基本解説 - Qiita](https://qiita.com/web/items/dba77357ae0445bb4917)  
- [AWSでプライベートサブネットからインターネットへ：NAT Gateway構築入門](https://zenn.dev/youyoutaka/articles/1c70c1005a6265)