パブリックサブネットとプライベートサブネットの違いを整理する
AWSのVPCにおけるパブリックサブネットとプライベートサブネットの違いを、ルートテーブルとInternet Gatewayへの経路を中心に整理する
今日やったこと
- パブリックサブネットとプライベートサブネットの違いを整理した
- サブネットの種類は、主にルートテーブルの経路によって決まることを確認した
- パブリックサブネットに配置しただけでは、EC2がインターネットと通信できるとは限らないことを確認した
- プライベートサブネットからインターネットへ接続する場合は、NAT Gatewayなどを利用することを確認した
学んだこと
サブネットとは
サブネットは、VPCのIPアドレス範囲を分割したネットワーク領域。
たとえば、VPCのCIDRが以下の場合、
10.0.0.0/16
次のようにサブネットへ分割できる。
10.0.1.0/24
10.0.2.0/24
それぞれのサブネットにはルートテーブルが関連付けられ、通信をどこへ転送するかが決まる。
パブリックサブネットとは
パブリックサブネットは、ルートテーブルにInternet Gatewayへの経路が設定されているサブネット。
送信先: 0.0.0.0/0
ターゲット: Internet Gateway
ルートテーブルのイメージは以下。
10.0.0.0/16 → local
0.0.0.0/0 → igw-xxxxxxxx
0.0.0.0/0 は、ほかのルートに一致しないすべてのIPv4通信を表す。
この通信をInternet Gatewayへ送ることで、サブネット内のリソースがインターネットと直接通信できる構成になる。
パブリックサブネットだけでは通信できない
EC2をパブリックサブネットへ配置しただけでは、必ずインターネットと通信できるわけではない。
IPv4で直接通信するには、主に以下が必要になる。
- VPCにInternet Gatewayがアタッチされている
- ルートテーブルにInternet Gatewayへの経路がある
- EC2にパブリックIPv4アドレスまたはElastic IPがある
- セキュリティグループやネットワークACLで通信が許可されている
つまり、パブリックサブネットとは「配置したリソースがすべて公開されるサブネット」ではない。
Internet Gatewayへの直接経路があるサブネットと考えると分かりやすい。
プライベートサブネットとは
プライベートサブネットは、Internet Gatewayへの直接経路を持たないサブネット。
10.0.0.0/16 → local
または、インターネット向け通信をNAT Gatewayへ送る構成にする。
10.0.0.0/16 → local
0.0.0.0/0 → nat-xxxxxxxx
プライベートサブネット内のEC2は、Internet Gatewayを経由してインターネットから直接接続される構成にはならない。
そのため、データベースやアプリケーションサーバーなど、外部へ直接公開したくないリソースの配置先として利用される。
NAT Gatewayを使った外向き通信
プライベートサブネット内のEC2でも、OSの更新や外部APIへのアクセスが必要になる場合がある。
その場合は、パブリックサブネットにNAT Gatewayを配置する。
プライベートサブネットのEC2
↓
NAT Gateway
↓
Internet Gateway
↓
インターネット
プライベートサブネットのルートテーブルには、NAT Gatewayへの経路を設定する。
0.0.0.0/0 → NAT Gateway
NAT Gatewayを使うと、プライベートサブネット内のリソースからインターネットへの通信を開始できる。
一方、インターネット側からプライベートサブネット内のEC2へ、NAT Gatewayを経由して新しい接続を開始することはできない。
よくある構成
Webアプリケーションでは、次のようにリソースを配置することがある。
インターネット
↓
Internet Gateway
↓
パブリックサブネット
└─ ALB
↓
プライベートサブネット
├─ EC2 / ECS
└─ RDS
インターネットからアクセスを受け付けるALBをパブリックサブネットに配置し、アプリケーションやデータベースはプライベートサブネットに配置する。
これにより、EC2やRDSをインターネットへ直接公開せずにサービスを提供できる。
違いを整理する
| 項目 | パブリックサブネット | プライベートサブネット |
|---|---|---|
| Internet Gatewayへの直接経路 | ある | ない |
| インターネットからの直接接続 | 構成次第で可能 | 基本的に不可 |
| 外向きのインターネット通信 | Internet Gatewayを利用 | NAT Gatewayなどを利用 |
| 主な配置例 | ALB、NAT Gateway、公開Webサーバー | アプリケーション、RDS、内部サーバー |
まとめ
パブリックサブネットとプライベートサブネットの違いは、主にルートテーブルで判断する。
パブリックサブネット:
Internet Gatewayへの直接経路がある
プライベートサブネット:
Internet Gatewayへの直接経路がない
パブリックIPアドレスがあるかどうかだけで、サブネットの種類が決まるわけではない。
SAAの問題では、まずルートテーブルを確認して、次にパブリックIP、Internet Gateway、NAT Gatewayなどの構成を確認すると判断しやすそう。
次にやること
- Internet GatewayとNAT Gatewayの違いを整理する
- ルートテーブルの役割を詳しく整理する
- ALBをパブリックサブネット、EC2をプライベートサブネットへ配置する理由を整理する
- VPCエンドポイントを使ってNAT Gatewayを経由せずにAWSサービスへ接続する方法を整理する