前の記事では、 VPC・CIDR・サブネットの基本を学びました。
VPCの中にサブネットを作成すると、 EC2などのAWSリソースを配置するための ネットワークを用意できます。
しかし、サブネットを作っただけでは、 「通信をどこへ送るのか」というルールを 理解したことにはなりません。
インターネット宛ての通信はどこへ送る?
AWSは何を見て通信経路を判断する?
AWSでは、この通信経路を決めるために ルートテーブル(Route Table)を利用します。
ルートテーブルの Destination(送信先)とTarget(転送先)を理解し、 AWS上で通信経路がどのように決まるのかを 読み取れるようになることを目指します。
VPCのルートテーブルとは?
ルートテーブルとは、 ネットワーク通信を 「どの宛先へ、どの経路で転送するのか」 を定義したルールの一覧です。
ネットワーク機器のルーティングテーブルと 基本的な考え方は同じです。
たとえば、 EC2から別のネットワークへ通信するとき、 AWSはルートテーブルを確認して 「この宛先なら、この転送先へ送る」 と判断します。
DestinationとTargetを理解しよう
ルートテーブルを理解するときに、 まず覚えておきたいのが次の2つです。
「どこ宛ての通信なのか」を表します。
「どこへ転送するのか」を表します。
実際のルートテーブルは、 次のようなイメージです。
つまり、ルートテーブルを見るときは、 左から右へ読むと分かりやすくなります。
「local」ルートとは?
VPCを作成すると、 ルートテーブルには localというルートが存在します。
たとえばVPCのCIDRが 10.0.0.0/16の場合、 次のようなルートです。
これは、 「10.0.0.0/16のVPC内部へ向かう通信は、VPC内部でルーティングする」 という意味です。
Subnet AからSubnet Bへ通信する場合、 どちらも 10.0.0.0/16 の範囲に含まれています。
そのため、 localルートによってVPC内部で通信できます。
同じVPC内のサブネット間通信を理解するときに、 重要になるルートです。
ルートテーブルはサブネットに関連付ける
AWSでは、 サブネットとルートテーブルを関連付けて 使用します。
サブネット内のリソースから通信が発生すると、 そのサブネットに関連付けられた ルートテーブルを利用して通信経路が判断されます。
メインルートテーブルとは?
VPCには メインルートテーブル(Main Route Table) があります。
サブネットに特定のルートテーブルを 明示的に関連付けていない場合、 そのサブネットは メインルートテーブルを利用します。
一方で、 用途に応じて カスタムルートテーブルを作成し、 特定のサブネットへ明示的に関連付けることもできます。
明示的に関連付けていない場合は、 VPCのメインルートテーブルが利用されます。
0.0.0.0/0とは?
AWSのルートテーブルでは、 0.0.0.0/0 という宛先をよく見かけます。
すべてのIPv4アドレスを含む範囲
0.0.0.0/0は、 すべてのIPv4アドレスに一致するルート です。
そのため、 より具体的なルートに一致しなかった通信を 外部へ転送するための デフォルトルートとしてよく利用されます。
この場合、 VPC内部宛てではない通信は、 igw-xxxxxxxx へ転送される構成になっています。
この igwが、 次の記事で学ぶ インターネットゲートウェイ(Internet Gateway) です。
複数のルートに一致したらどうなる?
ここで、次のルートテーブルを考えてみましょう。
EC2から 10.0.2.10 へ通信するとします。
10.0.2.10は、 次の2つのルートに一致します。
この場合AWSでは、 より具体的な宛先を示しているルート が優先されます。
この仕組みを 最長プレフィックス一致(Longest Prefix Match) と呼びます。
実際の通信経路を考えてみよう
次のようなVPCがあるとします。
10.0.1.10
10.0.2.10
このサブネットに関連付けられている ルートテーブルが次の内容だったとします。
10.0.2.10へ通信する場合
10.0.2.10は10.0.0.0/16に含まれるため、 localが利用されます。
8.8.8.8へ通信する場合
8.8.8.8はVPC内部の 10.0.0.0/16には含まれないため、 0.0.0.0/0のルートが利用されます。
そして、そのルートに設定されているTargetへ 通信を転送します。
理解度チェック:どのルートが使われる?
次のルートテーブルを使って考えてみましょう。
この通信では、どのルートが利用されるでしょうか?
10.0.20.50がどのDestinationに含まれるか考えてください。
ルートテーブルはサブネットの役割にも関係する
ここまで学習すると、 ルートテーブルが単なる経路表ではなく、 サブネットの通信経路を決める重要な要素 だと分かります。
このように、 関連付けるルートテーブルによって サブネットから利用できる通信経路が変わります。
そして、 インターネットへ通信できるサブネットをどのように作るのか を理解するうえで登場するのが インターネットゲートウェイ(IGW)です。
インターネットへの出口はどこにある?
ここまで、 次のルートを何度か見てきました。
0.0.0.0/0によって インターネット向けの通信を判断できても、 実際にVPCとインターネットを接続する仕組み が必要です。
確認問題:VPCのルートテーブル
ルートテーブルのDestinationとTargetの意味として 正しいものはどれですか?
Destinationは通信の送信先を表し、 Targetはその通信をどこへ転送するのかを表します。
10.0.0.0/16 → local は何を意味しますか?
localルートは、 VPCのCIDR範囲内で通信するために利用されます。
複数のルートが宛先IPアドレスに一致した場合、 基本的にどのルートが優先されますか?
複数のルートに一致する場合、 最長プレフィックス一致によって、 最も具体的なルートが優先されます。
3問に挑戦してみましょう。
まとめ
ルートテーブルは 通信をどこへ転送するか決めるルール表
Destinationは送信先、 Targetは転送先を表す
localは VPC内部の通信に利用される
ルートテーブルは サブネットに関連付けて利用する
0.0.0.0/0は すべてのIPv4アドレスに一致する
複数ルートに一致した場合は 最長プレフィックス一致によって より具体的なルートが優先される
インターネットゲートウェイ(IGW)を理解する
ルートテーブルによって 「通信をどこへ送るのか」を判断できるようになりました。
次は、 VPCとインターネットを接続する仕組みを学びます。
インターネットゲートウェイの役割や、 ルートテーブルとの関係を確認していきましょう。
インターネットゲートウェイ(IGW)を理解する →
