前の記事では、 パブリックサブネットとプライベートサブネット の違いについて学びました。
パブリックサブネットには インターネットゲートウェイ(IGW)へのルートがあり、 プライベートサブネットには IGWへの直接のルートがありません。
しかし、ここで1つ疑問が出てきます。
インターネットへアクセスしたい場合はどうする?
たとえば、EC2からOSのアップデートを行ったり、 外部のパッケージをダウンロードしたりする場合、 インターネットへの通信が必要になることがあります。
そこで利用できるのが、 NAT Gatewayです。
この記事はAWS中級講座のレッスン5です。 プライベートサブネットから インターネットへ通信するための NAT Gatewayの仕組みを学びます。
AWS中級講座を見る →NAT Gatewayの役割を理解し、 Private EC2 → NAT Gateway → IGW → Internet という通信経路と、 それぞれのルートテーブルの関係を 説明できるようになることを目指します。
NAT Gatewayとは?
NAT Gatewayは、 ネットワークアドレス変換(NAT)を行う AWSのマネージドサービスです。
代表的な用途は、 プライベートサブネットにあるリソースから IPv4インターネットへ外向きに通信させること です。
プライベートサブネットのEC2は、 IGWへ直接通信するのではありません。
まずNAT Gatewayへ通信を送り、 そこからIGWを経由して インターネットへアクセスします。
なぜNAT Gatewayが必要なのか?
プライベートサブネットは、 IGWへの直接のルートを持たないように設計します。
そのため、 EC2からIGWへ直接通信させることはできません。
とはいえ、 プライベートサブネットのEC2でも インターネットへの通信が必要になるケースがあります。
OSの更新パッケージを取得する
ソフトウェアをダウンロードする
外部APIへアクセスする
このような場合、 EC2自体をパブリックサブネットへ移動させるのではなく、 NAT Gatewayを経由させる ことで外向き通信を実現できます。
インターネット側からPrivate EC2へ直接接続するためのものではない
NAT Gatewayを利用すると、 プライベートサブネットのEC2から インターネットへ通信できます。
しかし、 これはインターネット側から プライベートEC2への 未要求の新規接続を開始できるようにする仕組みではありません。
外向き通信
未要求の新規接続
EC2側から開始した通信に対する 戻りの通信はNAT Gatewayを経由して返ってきます。
プライベート側から開始した通信と その応答を成立させるために利用します。
NAT Gatewayはどこに配置する?
ここはNAT Gatewayを理解するうえで 非常に重要です。
インターネットへ接続する構成では、 パブリックNAT Gatewayを パブリックサブネットに配置します。
0.0.0.0/0
↓
IGW
0.0.0.0/0
↓
NAT Gateway
プライベートサブネットにあるEC2からの通信は、 パブリックサブネットにある NAT Gatewayへ送られます。
そしてNAT Gatewayから IGWを経由してインターネットへ通信します。
インターネット接続用のパブリックNAT Gatewayは、 IGWへ到達できる パブリックサブネットへ配置します。
パブリックNAT GatewayにはElastic IPを関連付ける
パブリックNAT Gatewayを作成する際には、 Elastic IPアドレス(EIP) を関連付けます。
インターネットとの通信では、 NAT Gatewayに関連付けられた Elastic IPを利用して通信できます。
そのため、 プライベートEC2自身に パブリックIPv4アドレスを付与する必要はありません。
NAT Gatewayを出口として利用する
プライベートサブネットのルートテーブル
では、 プライベートサブネットから NAT Gatewayへ通信を送るには どうすればよいのでしょうか。
ここでも重要になるのが、 ルートテーブルです。
ポイントは、 プライベートサブネットでは 0.0.0.0/0のターゲットをIGWではなく NAT Gatewayにすることです。
NAT Gateway側にもIGWへの経路が必要
プライベートサブネットから NAT Gatewayへ通信を送るだけでは、 まだインターネットへ到達できません。
NAT Gatewayが配置されている パブリックサブネット側には、 IGWへのルートが必要です。
この2つのルーティングを組み合わせることで、 プライベートEC2から インターネットへ通信できます。
NAT Gatewayを使った通信経路を整理しよう
ここまでの内容を 1つの構成として整理します。
Route
0.0.0.0/0 → IGW
Route
0.0.0.0/0 → NAT
Private EC2が インターネット向け通信を開始
ルートテーブルによって NAT Gatewayへ転送
NAT Gatewayから IGWへ通信
IGWを経由して インターネットへ到達
IGWとNAT Gatewayの違い
IGWとNAT Gatewayは、 どちらもインターネット通信に関係するため 混同しやすいポイントです。
Private EC2からインターネットへ通信する構成では、 NAT GatewayとIGWを組み合わせて利用します。
理解度チェック:正しいルートを選んでみよう
次の構成を考えてみましょう。
Private EC2から IPv4インターネットへ通信させたい場合、 プライベートサブネットの 0.0.0.0/0のターゲットは どこに設定すればよいでしょうか。
Private EC2からの通信経路を思い出してみましょう。
実際の構成ではAZごとにNAT Gatewayを配置することも重要
ここまでは仕組みを理解しやすくするため、 NAT Gatewayを1つだけ配置した構成で説明しました。
しかし、 本番環境などで可用性を重視する場合は、 複数AZを利用し、AZごとにNAT Gatewayを配置する 構成が一般的です。
NAT Gateway A
EC2 A
NAT Gateway B
EC2 B
各プライベートサブネットから 同じAZにあるNAT Gatewayを利用することで、 1つのNAT GatewayやAZへの依存を避けやすくなります。
NAT Gatewayは料金も発生するため、 可用性・通信経路・コストを考えて設計します。
通信経路ができても「誰でも通信できる」わけではない
ここまでで、 VPCの通信経路についてかなり理解できるようになりました。
しかし、 ネットワークでは 「通信経路が存在すること」と 「その通信が許可されていること」 は別です。
AWSでは、 通信を制御する代表的な仕組みとして Security Groupと Network ACL(NACL) があります。
確認問題:NAT Gateway
NAT Gatewayの代表的な役割はどれですか?
NAT Gatewayは、 プライベートサブネットのリソースから IPv4インターネットなどへ 外向き通信を行う際に利用できます。
インターネット接続用のパブリックNAT Gatewayは どこに配置しますか?
パブリックNAT Gatewayは、 IGWへ到達できる パブリックサブネットへ配置します。
Private EC2からInternetまでの 代表的な通信経路として正しいものはどれですか?
プライベートEC2からの通信は NAT Gatewayへ送られ、 その後IGWを経由して インターネットへ到達します。
3問に挑戦してみましょう。
まとめ
NAT Gatewayは ネットワークアドレス変換を行う AWSのマネージドサービス
代表的にはPrivate側のリソースから 外向きIPv4通信 を行うために利用する
インターネット接続用のパブリックNAT Gatewayは パブリックサブネットへ配置する
Private側の代表的なルートは 0.0.0.0/0 → NAT Gateway
代表的な通信経路は Private EC2 → NAT Gateway → IGW → Internet
NAT Gatewayは インターネット側からPrivate EC2への 未要求の新規接続を可能にするものではない
Security GroupとNACLの違いを理解する
ここまでで、 VPC・サブネット・ルートテーブル・IGW・NAT Gatewayを使った 通信経路を理解できるようになりました。
次は、 「その通信を許可するのか、拒否するのか」 というセキュリティについて学びます。
AWSのVPCで重要となる Security GroupとNetwork ACL(NACL) の違いを整理していきましょう。
Security GroupとNACLの違いを理解する →
