【入門編】 ルートテーブルにおける最長一致ルーティング(Longest Prefix Match)のAWS実装 – クラウドインフラと仮想化ネットワーク実践ガイド

AWSのルートテーブルは「一番詳しい地図」を優先する!最長一致ルーティングの秘密

こんにちは!クラウドインフラの現場で日々パケットと格闘しているSREです。

AWSのVPCを触り始めたばかりの頃、「ルートテーブルって何だか難しそう…」「0.0.0.0/0とか10.0.0.0/16とか、数字が並んでいてよくわからない」と頭を抱えたことはありませんか?

実は、AWSのネットワークの心臓部であるルートテーブルは、ある非常にシンプルなルールで動いています。今日は、そのルールである「最長一致ルーティング(Longest Prefix Match)」について、郵便配達の仕組みに例えて、直感的にマスターしていきましょう!

—

ルートテーブルは「郵便局の仕分け棚」

皆さんがネットで荷物を送るとき、住所を書きますよね。配達員さんはその住所を見て、「まずはこの県へ、次は市へ、最後はこの番地へ」と仕分けをしていきます。

AWSのルートテーブルも全く同じです。パケットという名の「荷物」が宛先IPアドレスという「住所」を持ってやってくると、ルートテーブルという「仕分け棚」を見て、どこへ飛ばすべきか決めるのです。

ここで、よくあるルートテーブルの例を見てみましょう。

  • ルートA: 10.0.0.0/16 → local(VPC内の通信)
  • ルートB: 0.0.0.0/0 → igw-xxxxxxxx(インターネットへの通信)

もし、宛先が 10.0.1.5 というパケットがやってきたら、どちらのルートが選ばれるでしょうか?

—

最長一致ルーティング:住所は「細かいほど正義」

ここで登場するのが、今回の主役「最長一致ルーティング」です。

これは簡単に言うと「一番具体的な(細かい)行き先が書いてあるルートを優先する」というルールです。

  • 0.0.0.0/0 は「世界中のすべて」を指す大雑把な住所です。
  • 10.0.0.0/16 は「10.0.x.x という特定のエリア」を指す、少し詳しい住所です。

郵便配達員さんの気持ちになって考えてみてください。「日本全体(0.0.0.0/0)」という広大な地図と、「東京都渋谷区(10.0.0.0/16)」という詳細な地図を持っていたら、どちらを信じますか? もちろん、より詳細な「東京都渋谷区」ですよね!

AWSのルーターも同じです。宛先が 10.0.1.5 であれば、より範囲が狭く具体的な 10.0.0.0/16 のルートが優先されます。これが「最長一致(=一番長いビットまで一致するもの)」の正体です。

—

実践!AWS CLIでルートを確認する

では、実際に今のVPCがどのようなルートを持っているか、AWS CLIで確認してみましょう。以下のコマンドを叩くと、現在のルートテーブルが覗けます。

# ルートテーブルIDを指定して、現在の設定一覧を取得するコマンド
aws ec2 describe-route-tables --route-table-id rtb-0123456789abcdef0

出力結果の中に、以下のような Routes 情報が見えるはずです。

"Routes": [
    {
        "DestinationCidrBlock": "10.0.0.0/16", // VPC内への通信
        "GatewayId": "local"
    },
    {
        "DestinationCidrBlock": "0.0.0.0/0", // インターネットへの通信
        "GatewayId": "igw-0a1b2c3d4e5f6g7h8"
    }
]

もし、特定の社内ネットワーク(10.0.5.0/24)だけ別の専用線を通したい!なんていう時は、このようにルートを追加します。

# 特定のサブネット宛の通信だけ、別のゲートウェイ(仮想プライベートゲートウェイ)へ飛ばす設定
aws ec2 create-route \
    --route-table-id rtb-0123456789abcdef0 \
    --destination-cidr-block 10.0.5.0/24 \
    --gateway-id vgw-99999999

こうすると、10.0.5.0/24 宛のパケットは、10.0.0.0/16 よりも範囲が狭く(=より具体的で)長いため、優先的に vgw へ向かうようになります。

—

初学者がハマりやすい「罠」

最後に、現場でよくある失敗談を一つ。

「インターネットに繋がらない!」という相談を受けると、ルートテーブルの設定が競合していることがよくあります。特に、0.0.0.0/0 を複数設定しようとしたり、逆に範囲が広すぎるルートを作ってしまったりすると、意図しない場所へパケットが吸い込まれてしまうことがあります。

「迷ったら、一番絞り込まれたルールが勝つ」

この原則さえ覚えておけば、AWSのネットワーク構築で大きく道に迷うことはありません。

まとめ

1. ルートテーブルは地図: パケットの宛先を見て、次にどこへ進むか決める場所。
2. 最長一致の原則: 大雑把なルートより、詳細なルートが優先される。
3. 迷ったら詳細を確認: AWS CLIでどのルートが適用されているかいつでも確認できる。

ネットワークは目に見えないものですが、こうして「郵便配達」に例えてみると、少し身近に感じられませんか?ぜひ皆さんのVPCでも、route-table を確認して、パケットがどこへ向かっているのか想像してみてくださいね!

それでは、良いクラウド・ライフを!

コメント

タイトルとURLをコピーしました