AWSの公式サイトのルートテーブルの説明がわかりづらい!
ルートテーブルってどうやって見たらいいの?
AWSのルートテーブルについて、上記のような悩みを持っていませんか?
本記事では、AWSのルートテーブルに関してイラストを利用して、初心者の方にもわかりやすく説明しました!
私も未経験からAWSエンジニアになったときに苦労した経験があるので、つまづきやすいポイントがわかります!
以下の記事では、AWSを無料で勉強する方法をまとめているので、あわせて参考にしてください。
上記の記事でも紹介していますが、侍テラコヤ
ルートテーブルとは?
まずは、ルートテーブルの概要と料金や種類について説明します。
ルートテーブルの概要
ルートテーブルとは、VPC内(サブネット内)の通信を振り分けるルールの一覧ことです。
VPCについて詳しくない方は、以下で詳しく解説していますので合わせて参照してください!
VPC内を流れる通信は、宛先のIPアドレスをルートテーブルと照らし合わせてどこに通信を流すかを決めます。
例えば、「郵便物を宛名に応じて振り分けるルール」のようなイメージです。
実際の通信では、「宛名」は「宛先のIPアドレス」に相当します。
例えば、IPアドレス10.0.0.1宛の通信はEC2に送ります、などです。
このように、ルートテーブルによってVPC内の通信は管理されています。
ルートテーブルのサブネットへの関連付け
ルートテーブルはサブネットに関連付けて利用します。
例えば、サブネットAにルートテーブルaを関連付けると、サブネットAにはルートテーブルaのルートが適用されます。
1つのサブネットには、1つのルートテーブルしか関連付けることができません。
つまり、1つのルートテーブルで、関連付けたいサブネットのすべてのルートを定義する必要があります。
ただし、異なるサブネットで同じルートテーブルを関連付けることは可能です。
例えば、サブネットAとサブネットBに同じルートテーブルaを関連付けると、2つのサブネットは同じルートテーブルを用いることになります。
ルートテーブルの料金
ルートテーブルの利用料は無料です!
ただし、1つのVPCにつきルートテーブルは200個までといった制限があるので注意しましょう。
もし、200個を超えるルートテーブルを使用したい場合は、上限緩和申請をすることが可能です。
他にも、「1つのルートテーブルに対するルール数」などの制限があり、AWSではこれらの制限を「クォータ」と呼んでいます。
ルートテーブルのクォータに関しては以下の公式ページを参照ください。
ルートテーブルの種類
ルートテーブルにはいくつか種類があります。
本記事では、最低限知っておくべき「メインルートテーブル」「カスタムルートテーブル」について説明します。
メインルートテーブル
メインルートテーブルとは、VPC作成時に自動的に作成されるルートテーブルです。
メインルートテーブルは、ルートテーブルが関連付けられていないサブネットに自動的に適用されます。
メインルートテーブルは、「localに対するルール(詳細は後述)」のみが追加されたルートテーブルです。
ちなみに、メインルートテーブルは、VPCのコンソールの [ルートテーブル] ページで、[メイン] 列が [はい] になっているものです。
カスタムルートテーブル
メインルートテーブルとは別に、明示的にサブネットに関連付ける必要ががあるルートテーブルをカスタムルートテーブルといいます。
カスタムルートテーブルは自分で内容をカスタマイズして利用します(名前のまんまですね)。
ちなみに、VPC作成時に同時にパブリックサブネットを作成する場合は、自動的にインターネットゲートウェイへのルートが追加されたカスタムルートテーブルが作成され、サブネットに関連づけられます(プライベートサブネットの場合はNATゲートウェイへのルートが自動追加)。
ユーザーは、自動的に作成されたカスタムルートテーブルに、新たにルートを追加したり、既存のルートを削除したりすることで、所望の環境を作成します。
カスタムルートテーブルを利用する例は以下のような場合があります。
- 後から作成したサブネットに関連付けるためのルートテーブルを作成する
- 後からプライベートサブネットにNATゲートウェイを設置するときに、同時にルートテーブルにNATゲートウェイへのルートを追加する
- プライベートサブネットにしていたサブネットをパブリックに変更するために、ルートテーブルにインターネットゲートウェイへのルートを追加する
ちなみに、「カスタムルートテーブルを作らなくても、メインルートテーブルを編集すればいいのでは?」と思われる方もいらっしゃるかもしれません。
しかし、AWSとしては、メインルートテーブルは初期のままにしておき、ルートテーブルを書き換えたい時は別途カスタムルートテーブルを作成して、サブネットに関連付けることを推奨しています。
これは、メインルートテーブルはルートテーブルが関連付けられていないサブネットに自動的に適用されるため、編集したルートテーブルが、想定していないサブネットに関連付けられることを防ぐためです。
ルートテーブルの見方
ルートテーブルの概要について説明したところで、実際のルートテーブルの見方について説明します。
以下の図のように、ルートテーブルには主に「送信先」と「ターゲット」という項目があります。
これらは、それぞれ「何を」「どこに」振り分けるかを指定します。
送信先
ルートテーブルの「送信先」は、通信の宛先IPアドレス(どこのIPアドレスに対する通信か?)を指定します。
ルートテーブルの送信先には、以下のようあなルールがあります。
- 送信先はCIDRでIPアドレスの範囲を指定(10.0.0.0/16や172.0.1.0/24など)。
- 送信先が0.0.0.0/0のルートは、全ての通信に適用
- 複数のルートがある場合は、より具体的な送信先のルートが優先
3つ目に関しては、例えば0.0.0.0/0と10.0.0.0/16のルートがあるとき、宛先IPアドレスが10.0.0.123の通信は、より具体的な10.0.0.0/16のルートが適用されるということです。
ターゲット
ターゲットは、その送信先の通信をどこに渡すのか?を指定します。
ターゲットには、以下のようなものが指定されます。
- local
- インターネットゲートウェイやNATゲートウェイ
ターゲットが「local」のルートは、サブネット内で宛先を探します。
最初の画像の例だと、送信先が10.0.0.0/16の通信はlocalがターゲットとなっているので、10.0.0.1などへ向かう通信は、このサブネット内で完結します。
例えば、このサブネット内に10.0.0.1のIPアドレスを持つEC2があれば、そのEC2へ送信されますし、10.0.0.1のIPアドレスを持つものがなければ、通信は失敗します。
ルートテーブルの利用例
パブリックサブネット
パブリックサブネットでは、localルートに加えてインターネットゲートウェイへのルートを定義します。
送信先 | ターゲット |
---|---|
0.0.0.0/0 | インターネットゲートウェイ |
サブネットのCIDR | local |
基本的にはすべての通信をインターネットゲートウェイへ送信しますが、宛先がサブネット内のIPアドレスのみlocalをターゲットとします。
プライベートサブネット
プライベートサブネットでは、localルートに加えてNATゲートウェイへのルートを定義します。
ただし、NATゲートウェイを使用しない(インターネットと通信しない)場合はlocalルートのみでOKです。
送信先 | ターゲット |
---|---|
0.0.0.0/0 | NATゲートウェイ ※インターネットと通信する必要がある場合のみ |
サブネットのCIDR | local |
まとめ:ルートテーブルを有効活用しよう!
以上、AWSのルートテーブルに関して説明しました。
公式サイトではわかりづらい点があるので、できるだけイラストを用いて解説してみましたので少しはイメージできたのではないでしょうか?
ルートテーブルは、基本的に今回紹介したパブリックサブネットとプライベートサブネットの例を知っていれば問題ありません。
ただし、ルートテーブルの知識があれば、サブネット内の通信に関してエラーが発生した場合の原因究明の役に立つことでしょう。
なお、ルートテーブルに関しては侍テラコヤ
\無料プランを無期限で試す/
メールアドレスだけで10秒で登録!
コメント