グローバルIPとプライベートIP：範囲の違いとAWSでの活用

## はじめに

ネットワーク設計において、グローバルIP（パブリックIP）とプライベートIPの違いを理解することは非常に重要です。特にAWSなどのクラウド環境では、この概念が実際のインフラ構築の基盤となります。本記事では、グローバルIPとプライベートIPの範囲の違いとその関係性をAWSの実例を用いて解説します。クラウドインフラを学ぶ方や、AWSでのネットワーク設計を行う方にとって参考になる内容となっています。

## IPアドレスの基本：グローバルとプライベートの違い

IPアドレス（IPv4）は32ビットの数値で、「192.168.1.1」のように4つの数字（オクテット）をドット（.）で区切って表記します。これらのIPアドレスは大きく2種類に分類されます。

### グローバルIP（パブリックIP）

グローバルIPアドレスは、インターネット上で一意に識別されるアドレスです。つまり、世界中で重複することなく使用されるアドレスです。

**特徴：**
- インターネット上で直接ルーティング可能
- IANA（Internet Assigned Numbers Authority）や各地域のインターネットレジストリによって管理
- 有限で貴重なリソース（IPv4の場合、約43億個）
- 取得には通常コストが発生（ISPからの割り当てやクラウドプロバイダでの使用料）

**使用例：**
- Webサーバー
- メールサーバー
- VPNゲートウェイ
- クラウドサービスの公開エンドポイント

### プライベートIP

プライベートIPアドレスは、組織内のプライベートネットワークでのみ使用されるアドレスです。インターネット上では直接ルーティングされません。

**特徴：**
- インターネット上では直接ルーティングされない
- 組織内で自由に使用可能
- インターネットと通信するにはNAT（Network Address Translation）が必要
- 無料で使用可能

**使用例：**
- 社内LANのPC
- 家庭内のスマートフォンやIoTデバイス
- クラウド環境内の内部サーバー

## プライベートIPアドレスの範囲

RFC1918で定義されたプライベートIPアドレスの範囲は3つあります。これらは世界中の組織が内部ネットワークで自由に使用できます。

### 1. クラスA相当のプライベート範囲

**CIDR表記：** 10.0.0.0/8
**アドレス範囲：** 10.0.0.0 ～ 10.255.255.255
**アドレス数：** 16,777,216個（約1677万個）

**特徴：**
- 非常に大規模なネットワークに適している
- 多数のサブネットに分割可能
- 大企業や大規模クラウド環境で使用されることが多い

### 2. クラスB相当のプライベート範囲

**CIDR表記：** 172.16.0.0/12
**アドレス範囲：** 172.16.0.0 ～ 172.31.255.255
**アドレス数：** 1,048,576個（約104万個）

**特徴：**
- 中規模ネットワークに適している
- AWSのVPCのデフォルト範囲として使用されることが多い
- 第2オクテットが16から31の範囲であることに注意

### 3. クラスC相当のプライベート範囲

**CIDR表記：** 192.168.0.0/16
**アドレス範囲：** 192.168.0.0 ～ 192.168.255.255
**アドレス数：** 65,536個（約6.5万個）

**特徴：**
- 小規模ネットワークに適している
- 家庭用ルーターでデフォルトとして使用されることが多い
- 家庭や小規模オフィスのネットワークで一般的

## グローバルIPの範囲

グローバルIPアドレスは、プライベートIPアドレス以外のほぼすべての範囲が該当します。ただし、以下のような特殊用途のアドレス範囲は除外されます：

- ループバックアドレス: 127.0.0.0/8
- リンクローカルアドレス: 169.254.0.0/16
- マルチキャストアドレス: 224.0.0.0/4
- 実験用アドレス: 240.0.0.0/4

これらを除くと、グローバルIPアドレスの主な範囲は以下のようになります：

- 1.0.0.0/8 ～ 9.255.255.255/8
- 11.0.0.0/8 ～ 126.255.255.255/8
- 128.0.0.0/8 ～ 169.253.255.255/8
- 169.255.0.0/16 ～ 172.15.255.255/8
- 172.32.0.0/8 ～ 192.167.255.255/8
- 192.169.0.0/8 ～ 223.255.255.255/8

## グローバルIPとプライベートIPの見分け方

IPアドレスを見て、それがグローバルIPなのかプライベートIPなのかを判断する簡単な方法は以下の通りです：

1. 「10.」で始まるIPアドレス → プライベートIP
2. 「172.16.」～「172.31.」で始まるIPアドレス → プライベートIP
3. 「192.168.」で始まるIPアドレス → プライベートIP
4. 上記以外（特殊用途のアドレスを除く）→ グローバルIP

例えば：
- 10.10.10.10 → プライベートIP
- 172.20.30.40 → プライベートIP
- 192.168.1.100 → プライベートIP
- 8.8.8.8 → グローバルIP（Google Public DNS）
- 203.0.113.10 → グローバルIP

## AWSにおけるグローバルIPとプライベートIPの関係

AWSのVPC（Virtual Private Cloud）環境では、グローバルIPとプライベートIPの関係が明確に設計されています。

### VPCの基本構造

AWSでVPCを作成する際、まずCIDR表記でIPアドレス範囲を指定します。これがVPC内のプライベートIPアドレス空間となります。

例：「10.0.0.0/16」のVPCでは、10.0.0.0から10.0.255.255までの約65,536個のプライベートIPアドレスが使用可能です。

### インターネットへの接続方法

AWSで内部リソースがインターネットに接続する方法は主に2つあります：

1. **インターネットゲートウェイ（IGW）とパブリックIPの併用**
   - EC2インスタンスはプライベートIPを持ち、さらにパブリックIP（Elastic IP）も割り当てられる
   - インターネットゲートウェイが内部のプライベートIPと外部のパブリックIPの変換を行う

2. **NAT Gateway/NAT Instanceの使用**
   - プライベートサブネット内のリソースはプライベートIPのみを持つ
   - NAT GatewayがこれらのリソースからのアウトバウンドトラフィックをパブリックIPに変換

### 実際のAWS環境での使用例

典型的なマルチティアアプリケーションのAWS構成を見てみましょう：

**VPC: 10.0.0.0/16**

| サブネット種類 | CIDR | アベイラビリティゾーン | リソース例 |
|:---|:---:|:---:|:---|
| パブリックサブネット1 | 10.0.1.0/24 | ap-northeast-1a | ロードバランサー、NAT Gateway |
| パブリックサブネット2 | 10.0.2.0/24 | ap-northeast-1c | ロードバランサー、NAT Gateway |
| プライベートサブネット1 | 10.0.10.0/24 | ap-northeast-1a | アプリケーションサーバー、データベース |
| プライベートサブネット2 | 10.0.11.0/24 | ap-northeast-1c | アプリケーションサーバー、データベース |

この構成では：

1. **ユーザーアクセスのフロー**:
   - インターネットユーザー → Application Load Balancer（ALB）のパブリックIP
   - ALB → アプリケーションサーバー（プライベートIPのみ）
   - アプリケーションサーバー → データベース（プライベートIPのみ）

2. **内部リソースからのインターネットアクセス**:
   - アプリケーションサーバー → NAT Gateway → インターネット
   - NAT Gatewayはパブリックサブネットに配置され、Elastic IP（パブリックIP）を持つ

このように、AWS環境では外部に公開する必要があるリソース（ロードバランサーやNAT Gateway）以外は、すべてプライベートIPのみで構成されるのが一般的です。

## 実際のシナリオ：新規Webサービスのデプロイ

具体的な例として、新規WebサービスをAWSにデプロイする場合のIPアドレス設計を考えてみましょう。

### 1. VPCのCIDR範囲を決定

まず、VPC全体のCIDR範囲を決定します。将来の拡張性を考慮して「10.0.0.0/16」を選択します。

### 2. サブネットの設計

次に、必要なサブネットを設計します：

- パブリックサブネット: 10.0.0.0/24, 10.0.1.0/24
- プライベートサブネット: 10.0.10.0/24, 10.0.11.0/24

### 3. IPアドレスの割り当て

各リソースへのIPアドレスの割り当てを計画します：

- Application Load Balancer: パブリックIPを持つ（AWSが自動的に割り当て）
- NAT Gateway: Elastic IP（パブリックIP）を割り当て
- Webサーバー: プライベートIPのみ（10.0.10.0/24内）
- データベース: プライベートIPのみ（10.0.10.0/24内）

### 4. 通信フロー

このシナリオでの通信フローは以下のようになります：

1. ユーザー → ALB（パブリックIP）→ Webサーバー（プライベートIP）
2. Webサーバー → データベース（プライベートIP）
3. Webサーバー → NAT Gateway（内部はプライベートIP、外部はパブリックIP）→ インターネット

## グローバルIPとプライベートIPの連携

AWSにおけるグローバルIPとプライベートIPの関係を「窓と部屋」の比喩で考えると理解しやすいでしょう：

- **VPC全体**が「建物」にあたり、プライベートIPアドレス空間です。
- **インターネットゲートウェイ**や**NAT Gateway**が「窓」の役割を果たし、外部との通信を可能にします。
- **パブリックIP（Elastic IPなど）**は「住所」のようなもので、外部からアクセスするための識別子です。

この構造により、内部リソースは必要最小限のパブリックIPだけを使用し、大部分のリソースはプライベートIPのみで安全に通信できるようになります。

## まとめ

グローバルIPとプライベートIPの違いと範囲について理解することは、クラウドネットワーク設計の基礎となります：

1. **プライベートIPアドレスの範囲**:
   - 10.0.0.0/8（約1677万アドレス）
   - 172.16.0.0/12（約104万アドレス）
   - 192.168.0.0/16（約6.5万アドレス）

2. **グローバルIPアドレス**:
   - プライベートIPの範囲とその他特殊用途のアドレスを除く全てのIPアドレス
   - インターネット上で一意に識別される

3. **AWS環境での活用**:
   - VPC内はすべてプライベートIPアドレス空間
   - 外部公開が必要なリソースのみパブリックIPを持つ
   - インターネットゲートウェイやNAT Gatewayがプライベート↔パブリックの変換を担当

このように、適切なIPアドレス設計は、セキュアで効率的なクラウドネットワークの構築に不可欠です。AWSでは大部分のリソースをプライベートIPのみで稼働させ、必要な箇所でのみグローバルIPとの連携を行うことで、セキュリティを高めながら必要な機能を実現しています。

## おわりに

グローバルIPとプライベートIPの関係は「外と内」の関係に例えることができ、クラウド環境においてはこの区分けが明確に設計されています。

AWSのような大規模クラウドプロバイダーでは、限られたグローバルIPアドレスを効率的に使用するため、内部リソースはほぼすべてプライベートIPアドレスのみを持ち、必要な箇所でのみNATやゲートウェイを介してグローバルIPと連携するアーキテクチャが一般的です。

IPアドレスとCIDR表記の基本を理解することで、より安全で拡張性の高いクラウドインフラの設計が可能になります。今後のクラウドインフラ設計の参考にしていただければ幸いです。

---

株式会社シンシアでは、実務未経験のエンジニアの方や学生エンジニアインターンを採用し一緒に働いています。
※ シンシアにおける働き方の様子はこちら
https://www.wantedly.com/companies/xincere-inc/stories
弊社には年間100人程度の実務未経験の方に応募いただき、技術面接を実施しております。
この記事が少しでも学びになったという方は、ぜひ wantedly のストーリーもご覧いただけるととても嬉しいです！