AWSのVPCを勉強をしていたときに、ルートテーブルとACLの違いがわからず困惑してしまいました。ネットワークの知識もろくに無いままAWSを勉強していると、このような壁にしばしば当たりますよね。しかし、壁に当たったときこそ勉強するチャンスです。
今回は、AWSVPCのルートテーブルとACLの違いについて、初心者の方向けに分かりやすくお伝えしようと思います。どちらもVPCにおいて必ず必要なものなので、覚えておきたいです。
ルートテーブルとは
ルートテーブルは、「通信の経路(ルート)を表(テーブル)にまとめたもの」です。
ルートテーブルが何たるかを分かりやすく理解するために、まずはなぜルートテーブルが必要になるのかを考えます。VPC仮想ネットワークの作成からたどってみます。
VPC作成から読み解くルートテーブル
AWSのVPCを勉強していると、本でも動画でも必ず次の通りに要素が作成されていくと思います。
- VPCの作成
- パブリックサブネットとプライベートサブネットの作成
- インターネットゲートウェイの作成
- ルートテーブルの作成
- (以降省略)
この流れを追っていくと、ルートテーブルの役割が見えてきます。まずはじめにVPCの作成で、全ての土台となる仮想ネットワークが作成されます。

その後、ネットワークをサブネットに分割します。公開するネットワークであるパブリックサブネットと、非公開にするプライベートサブネットです。よくある分かりやすい例として、パブリックは公開だからWebサーバ、プライベートは非公開で直接アクセス不可のDB置き場、といったたとえ話があります。

さて、次にインターネットゲートウェイを設定します。今までは閉じた世界でしたが、めでたく外の世界とつながる門が完成したので、外部のインターネットに接続することができるはずです。

しかし、「外の世界に繋がる門が完成した」と言われても、サブネットの住民は誰も「門までどうやっていくのか」をわかっていない状態です。門への行き方(ルート)を知らないのです。
そこで登場するのが、ルートテーブルになります。ルートテーブルは、サブネットの住民がサブネットの外と通信する際の経路(ルート)を表形式でまとめてくれた(テーブル)ものです。
送信先 | ターゲット |
172.30.0.0/16 | local |
0.0.0.0/0 | IGW |
サブネットの住民は、ルートテーブルに従ってサブネットから出ることができます。(※0.0.0.0/0は全ての通信を指します)
AWSでは、サブネットごとにルートテーブルを作成してあげる必要がありますので、例えばプライベートサーバには、パブリックサーバやNATゲートウェイへのルーティングが示されたルートテーブルが必要になることでしょう。

以上がルートテーブルの説明になります。
ACL(アクセスコントロールリスト)とは
ACL(アクセスコントロールリスト)とは、「アクセスを制御するリスト」です。サブネットに関して、許可するアクセスと拒否するアクセスをリスト化した、セキュリティの設定になります。
例えば以下の表の場合、ポート80を通る全てのHTTP通信が拒否され、ポート443を通る全てのHTTPS通信が許可されています。どちらにも当てはまらない通信は許可されています。
タイプ | プロトコル | ポート | 送信元 | 許可/拒否 |
HTTP | TCP | 80 | 0.0.0.0/0 | DENY |
HTTPS | TCP | 443 | 0.0.0.0/0 | ALLOW |
全て | 全て | 全て | 0.0.0.0/0 | ALLOW |
この場合、サブネットにあるEC2に対してHTTPでアクセスした場合はエラーになりますが、HTTPS通信でアクセスすれば通ります。このように、どんな種類のアクセスを許可/拒否するか、というリストがACLになります。
ルートテーブルとACLの違い
ここまで読んでいただけたらおわかりのように、2つは似て非なるものです。
ルートテーブル | ACL |
通信の行き先を指定 | 通信の許可/拒否を指定 |
このような違いがあります。AWSで表だけ見ていると同じように見えてしまいますが、しっかり並べてみると意外とさがありますね。
まとめ
AWSVPCのルートテーブルとACLの違いについてご紹介しました。
- ルートテーブル: どこを通るか
- ACL: 通すか通さないか
といった違いがあります。最後までお読みいただきありがとうございました。