今日やったこと

  • パブリックサブネットとプライベートサブネットの違いを整理した
  • サブネットの種類は、主にルートテーブルの経路によって決まることを確認した
  • パブリックサブネットに配置しただけでは、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サービスへ接続する方法を整理する