1.ルートテーブルとは
<前回までの記事>
・【AWS】仮想ネットワークを作成してみる(VPC編)
・【AWS】仮想ネットワークを作成してみる(サブネット編)
・【AWS】仮想ネットワークを作成してみる(インターネットゲートウェイ編)
・【AWS】仮想ネットワークを作成してみる(NATゲートウェイ編)
前回記事にて、VPC~サブネット~インターネットゲートウェイ~NATゲートウェイの作成まで行いました。
アパート建設に例えると、土地と建物が(中の部屋割りまで)完成し、出入り口まで作成。
そして、各部屋が連絡を取るためのルール(内部では部屋番号だけでOK、外部へはアパートの住所+部屋番号が必要、といった感じ)まで決定した状態です。
これが人間社会であれば、ここまで環境を整えれば部屋同士での連絡もでき、外とのやり取りもできますよね。
しかし、VPC上で実際に通信をさせるには、もうひと手間掛けてあげる必要があります。
例えば、サブネット同士で通信をするにはどのルートを通ればいいのか、外部リソースと通信するには、どのルートを経由したらよいのか。これらを全て指定してあげないと、VPC上では通信ができません。
人間みたいに自分で考えて何となく進むことができませんからね。経路についても全てルール付けが必要です。
その通信経路のルールを定めたものが、「ルートテーブル」です。
これを指定することで、初めてVPC内のリソースは経路を認識することができ、実際に通信を行うことができます。
2.ルートテーブルの作成内容

例えば、VPC内に[A]、[B]、[C]、[D]という4つのリソース、外部(インターネット上)に[X]というリソースがあるとしましょう。
この場合、
・VPC内の通信(例:[A]⇔[B]、[B]⇔[C]、[A]⇔[C])
・プライベートサブネット⇒インターネット間の通信(例:[B]⇒[X]、[C]⇒[X]、[D]⇒[X])
・パブリックサブネット⇒インターネット間の通信(例:[A]⇒[X])
これらの通信パターンを考慮する必要があります。
そして、上記のルートでの通信を考慮する場合、経由するターゲットとして、以下が挙げられます。

ルートテーブルは全てのサブネットに配置する必要があります。
今回は2つのアベイラビリティゾーンにパブリック/プライベートサブネットをそれぞれ配置しているので、合計4か所に配置します。
因みに、一つのルートテーブルは複数のサブネットで共有することができるため、今回は以下の構成とします。

パブリックサブネットは、外部との通信の際はインターネットゲートウェイをターゲットにするため、Public1、2は共通で構いません。
しかし、プライベートサブネットはNATゲートウェイがターゲットとなるため、ルートテーブルも別々に用意します。
3.ルートテーブルの作成手順
① ルートテーブル作成画面への移動

まずは、ルートテーブルの作成画面に移動しましょう。
VPCダッシュボード画面より、「ルートテーブル」を選択し、クリックしてください。

前画面で「ルートテーブル」をクリックすると、ルートテーブルの一覧画面に移動します。
デフォルトで2つのルートテーブルが存在していますが、こちらは今回は使用しませんので、無視しましょう。
まずは、パブリックサブネット用のルートテーブルから作成していきます。
② ルートテーブルの作成

ルートテーブルの作成画面に移動しました。まずは、以下の通りに入力しましょう。
・名前:test-root-table-public
・VPC:test-vpc
名前は既に決めてあったテーブル名を、VPCについては、現在使用している「test-vpc」を選択します。
これらの入力が終わったら、「ルートテーブルの作成」をクリックします。

特に問題なければ、ルートテーブル「test-root-table-public」が作成されます。
この時、VPC内のリソース同士のルーティングを設定する「ターゲット:local」の設定が同時に作成されます。
ただ、これだけだと、外部(インターネット側)との通信ができません。
VPCの出入り口である「インターネットゲートウェイ」をターゲットにした新たなルートを追加する必要があります。
そのまま「ルートを編集」をクリックしましょう。

「ルートを編集」画面に移動します。
そのまま「ルートを追加」をクリックしましょう。

ターゲットがlocalの場合のルート(10.0.0.0/16)はルートテーブル作成と同時に設定されていましたので、外部向けの設定をここで追加します。
ここでは、[10.0.0.0/16]以外の通信(※外部に向けた通信)について、送信先を[0.0.0.0/0]、ターゲットを「インターネットゲートウェイ(test-internet-gw)」に定めます。(※全てプルダウンから選択可能です)
入力が終わったら、「変更を保存」をクリックし、保存してください。

これで、新しいルートが追加できました。
このルートテーブルは、localとインターネットゲートウェイをターゲットに設定できたことになります。
次は、このルートテーブルを利用するサブネットを、ルートテーブル側に結び付けてあげる必要があります。
③ ルートテーブルへのサブネットの関連付け

先ほどのルートテーブル作成後の状態から、「サブネットの関連付け」タブを選択してください。
この時点ではサブネットの関連付けはまだ1件もありません。新たな関連付けを行うために「サブネットの関連付けを編集」をクリックしてください。

関連付けの編集画面に移動しますので、まずは今回追加する予定の二つのパブリックサブネットを選択しましょう。
選択後は「関連付けを保存」をクリックしてください。

「サブネットの関連付けが正常に更新されました」のメッセージが表示され、選択した二つのパブリックサブネットが関連付けされていることが確認できます。
これで、ルートテーブルの作成&サブネットの関連付けは、ひと通り完了です。
続けて、プライベートサブネット⇔インターネット間の通信のためのルートテーブルも同じように作成していきましょう。
まとめ

全てのルートテーブルを作成すると、一覧画面が上記のようになります。
これで、今回予定していた全てのルートテーブルを用意できました。
VPC内のリソース同士、VPC(パブリックサブネット/プライベートサブネット)とインターネット間の通信がこれで可能となります。
なお、今回の構成はシンプルなものであり、VPC内部、VPC⇔インターネット間での通信に関するルートを指定しましたが、実際にシステム構築する際は、他のVPCとの接続であったり、VPNで接続されたネットワーク上のサーバーと通信したりなど、様々なケースが考えられます。
ただ、基本的な考え方は一緒なので、今回の手順を参考にルートテーブルを構築してみて下さい。
(今回はここまで)
お読みいただき、有難うございました!


コメント