#0017（2024/01/17）インターネットゲートウェイとNATゲートウェイの違い

# インターネットゲートウェイとNATゲートウェイの違い

AWSのネットワーク設計において、**インターネットゲートウェイ（Internet Gateway）** と **NATゲートウェイ（NAT Gateway）** は重要な役割を果たします。それぞれの機能とユースケースを理解することで、セキュアかつ効率的なネットワーク設計が可能になります。

---

## **1. インターネットゲートウェイ（Internet Gateway）**

### **概要**
インターネットゲートウェイは、VPC内のリソースが**インターネットと通信するための出入口**です。

### **特徴**
- **双方向通信**:
  - インターネットからVPC内のパブリックIPアドレスを持つリソースへの通信を可能にします。
  - VPC内のリソースがインターネットにアクセス可能。
- **パブリックIPの必要性**:
  - VPC内のリソースに**パブリックIP**または**Elastic IP（EIP）**が割り当てられている場合に機能します。
- **ルートテーブルの設定**:
  - VPC内のサブネットからインターネットゲートウェイへのルートを設定する必要があります。
- **無料で利用可能**:
  - インターネットゲートウェイ自体に料金は発生しません。

### **ユースケース**
1. **パブリックサブネットの構成**:
   - WebサーバーやAPIサーバーなど、外部から直接アクセス可能なリソースをホスト。
2. **インターネットアクセスの提供**:
   - VPC内のリソースが外部APIやサービスに接続する場合。


### パブリックIPとElastic IP（EIP）の違い

| **項目**              | **パブリックIP**                                   | **Elastic IP（EIP）**                         |
|-----------------------|---------------------------------------------------|----------------------------------------------|
| **割り当て方法**       | EC2インスタンスの起動時に自動的に割り当てられる。     | ユーザーが明示的に作成・割り当てを行う必要がある。 |
| **IPアドレスの固定性** | インスタンスの停止・再起動で変更される可能性がある。  | インスタンスが停止・再起動しても変更されない。 |
| **料金**              | 無料                                              | アタッチしていない場合、時間単位の料金が発生。 |
| **主な用途**           | 一時的なパブリックアクセスが必要な場合に利用。        | 固定IPが必要な場合や、ドメインと紐付けたい場合に利用。 |

---

## **2. NATゲートウェイ（NAT Gateway）**

### **概要**
NATゲートウェイは、プライベートサブネット内のリソースが**インターネットにアクセスできるようにするためのゲートウェイ**です。

### **特徴**
- **一方向通信**:
  - プライベートサブネット内のリソースがインターネットにリクエストを送信可能。
  - 外部からプライベートリソースへの直接アクセスは不可。
- **Elastic IP（EIP）の割り当て**:
  - NATゲートウェイにはEIPが必要で、これを使用して外部と通信します。
- **ルートテーブルの設定**:
  - プライベートサブネットからNATゲートウェイへのルートを設定する必要があります。
- **有料**:
  - 時間単位の料金とデータ転送量に基づいて課金されます。

### **ユースケース**
1. **プライベートサブネットのインターネットアクセス**:
   - セキュリティのため、外部からアクセスできない内部リソースがインターネットに接続する場合（例: ソフトウェアアップデートやAPIアクセス）。
2. **内部サーバーの保護**:
   - データベースサーバーやアプリケーションサーバーなど、直接インターネットに公開したくないリソースの通信を管理。

---

## **3. インターネットゲートウェイとNATゲートウェイの比較表**

| **項目**                     | **インターネットゲートウェイ**                           | **NATゲートウェイ**                              |
|------------------------------|-------------------------------------------------------|------------------------------------------------|
| **通信方向**                 | 双方向（インターネット ↔ VPCリソース）                  | 一方向（プライベートサブネット → インターネット） |
| **対象サブネット**           | パブリックサブネット                                  | プライベートサブネット                           |
| **パブリックIPの必要性**      | 必要（パブリックIPまたはElastic IP）                   | NATゲートウェイにElastic IPが必要               |
| **外部からのアクセス**       | 可能（適切に設定された場合）                           | 不可能                                          |
| **料金**                     | 無料                                                  | 有料（時間単位 + データ転送量）                 |
| **主な用途**                 | Webサーバー、APIサーバー、外部通信可能なリソース        | プライベートサブネット内のリソースの外部通信     |

---

## **4. ユースケースの具体例**

### **インターネットゲートウェイの使用例**
- WebアプリケーションをホストするEC2インスタンスを**パブリックサブネット**に配置し、外部からのアクセスを許可する。
  - EC2インスタンスにパブリックIPを割り当て、セキュリティグループでHTTP/HTTPS通信を許可。

### **NATゲートウェイの使用例**
- プライベートサブネット内に配置したEC2インスタンス（例: データベースやバックエンドサーバー）が、インターネットに接続してソフトウェアアップデートや外部APIへのリクエストを送信する。

---

## **5. まとめ**

| **選択ポイント**                       | **インターネットゲートウェイ**                  | **NATゲートウェイ**                       |
|---------------------------------------|----------------------------------------------|-----------------------------------------|
| **外部アクセスが必要**                  | はい（外部からのアクセスを許可したい場合）     | いいえ（外部からのアクセスは不要）       |
| **内部リソースのセキュリティが重要**    | いいえ（直接アクセスが許容される場合）         | はい（外部からのアクセスを防ぎたい場合） |
| **コストを考慮**                       | 無料で利用可能                                 | 有料（時間単位 + データ転送量）          |