AWSのネットワーク設計において、最も基本的かつ重要なコンポーネントの一つが**「ルートテーブル」**です。
単に「インターネットにつなぐための設定」として済ませてしまいがちですが、実はセキュリティアプライアンスの導入や、高度なトラフィック制御を行うためには、その仕様を深く理解しておく必要があります。
この記事では、AWS公式ドキュメントをベースに、ルートテーブルの基礎から、意外と知られていない応用機能までを徹底解説します。
1. ルートテーブルの基本概念
ルートテーブルは、サブネットまたはゲートウェイからのネットワークトラフィックの経路(ルール)を定義したセットです。
主要コンポーネント
-
送信先 (Destination): トラフィックの行き先となるCIDRブロック(例:
0.0.0.0/0,10.0.0.0/16)。 -
ターゲット (Target): そのトラフィックを送り込むAWSリソース(例:
igw-xxxxx(インターネットゲートウェイ),nat-xxxxx(NATゲートウェイ),eni-xxxxx(ネットワークインターフェイス))。
メインルートテーブルとカスタムルートテーブル
- メインルートテーブル: VPC作成時に自動的に作られるテーブル。明示的にルートテーブルを関連付けていないサブネットは、自動的にこのテーブルを使用します(暗黙の関連付け)。
- カスタムルートテーブル: ユーザーが独自に作成し、特定のサブネットに関連付けて使用するテーブル。通常はこちらを使用し、サブネットごとの役割(パブリック/プライベート)を明確にすることが推奨されます。
2. ルーティングの優先順位 (Longest Prefix Match)
ルートテーブルに複数のルールが存在し、送信先CIDRが重複している場合、AWSは**「最長プレフィックス一致 (Longest Prefix Match)」**の原則に従ってルートを選択します。
つまり、**「より具体的で狭い範囲を指定しているルート」**が優先されます。
例:
- ルートA:
10.0.0.0/16-> Target:Local - ルートB:
10.0.1.0/24-> Target:eni-12345678(Firewall)
この場合、10.0.1.5 への通信は、よりプレフィックス長が長い(具体的な)ルートB が採用され、Firewallへルーティングされます。
※ ただし、10.0.0.0/16 (Local) ルートよりも具体的なルートをサブネットルートテーブルに追加することは、ターゲットがGateway Load Balancer Endpointや特定のミドルボックス用ENIである場合など、特定の条件下でのみ可能です。
3. 高度な機能:ゲートウェイルートテーブル (Ingress Routing)
通常、ルートテーブルはサブネットに関連付けますが、インターネットゲートウェイ (IGW) や 仮想プライベートゲートウェイ (VGW) に関連付けることも可能です。これをゲートウェイルートテーブルと呼びます。
何ができるのか? (Ingress Routing)
インターネットからVPCに入ってくるトラフィックを、目的のサブネットに届く前に、セキュリティアプライアンス(Firewall等)やGateway Load Balancerのエンドポイントに強制的に迂回させることができます。
設定イメージ:
-
IGWに関連付けたルートテーブル:
- 送信先:
10.0.1.0/24(アプリ用サブネット) - ターゲット:
eni-firewall(FirewallのENI)
- 送信先:
-
トラフィックフロー:
- インターネット -> IGW -> (ルートテーブル参照) -> Firewall -> アプリ用サブネット
これにより、侵入検知システム (IDS/IPS) を透過的に挟むような構成が可能になります。
4. 高度な機能:ローカルルートのターゲット置換
デフォルトでは、ルートテーブルには 10.0.0.0/16 などのVPC CIDR範囲に対するターゲット Local が存在し、これは削除できません。通常、VPC内の通信はすべてこの Local ルートによって直接行われます。
しかし、特定の要件(VPC内の通信もすべて検査したい場合など)のために、このローカルルートのターゲットを置き換えることが可能です。
-
変更前:
10.0.0.0/16->Local -
変更後:
10.0.0.0/16->eni-firewall
これにより、VPC内部の通信(East-Westトラフィック)であっても、指定したアプライアンスを経由させることができます。後で Local に戻す(復元する)ことも可能です。
5. 操作と運用のポイント
メインルートテーブルの置換
メインルートテーブルを直接編集するのではなく、新しいカスタムルートテーブルを作成し、それを「メイン」に昇格(置換)させる運用が安全です。
- 手順: VPCコンソール → ルートテーブル一覧 → 新しいテーブルを選択 → アクション「メインルートテーブルの設定 (Set main route table)」。
サブネットへの関連付け
サブネット作成後は、忘れずに適切なカスタムルートテーブルに関連付けを行いましょう。
- 手順: ルートテーブルを選択 → 「サブネットの関連付け」タブ → 「サブネットの関連付けを編集」から対象サブネットを選択。
6. まとめ
ルートテーブルは、単なるパケットの通り道を決めるだけでなく、VPCのセキュリティ設計の中核を担う機能へと進化しています。
- 基本: パブリック/プライベートをカスタムルートテーブルで制御する。
- 応用: インバウンド通信を検査したい場合は ゲートウェイルートテーブル を検討する。
- 応用: VPC内通信を検査したい場合は ローカルルートの置換 を検討する。
これらを使いこなし、セキュアで柔軟なネットワークを構築しましょう。
参考リンク