ITの教科書検索

第3章 データが届くしくみ|3-3|コース全体 19本中11本目

入門読了 約9分更新日 2026-09-27

ルーティングとは ― ルータの道の選び方

ルーティングとは、ルータがパケットを次にどこへ渡すかを決めることです。ルーティングテーブルで宛先に一致する行が複数あれば、最も細かく一致する行(最長一致)を選びます。

目次
  1. 最も具体的に言い当てている行へ渡すだけ
  2. ルーティングテーブルの読み方
  3. 最長一致(ロンゲストマッチ)
  4. デフォルトルート
  5. スタティックとダイナミック
  6. TTLとループ防止
  7. 経路を自分の目で見る
  8. 練習問題

ルータは、ルーティングテーブルを見て「宛先を最も具体的に言い当てている行」へ転送する

ルータは、宛先までの経路をすべて知っているわけではありません。手元にある経路の一覧表を見て、次にパケットを渡す先を決めます。この一覧表をルーティングテーブルと呼びます。

ルータは表の中から、宛先IPアドレスを最も具体的に言い当てている行を1つ選びます。この選び方を最長一致と呼びます。そして、その行が示す先へパケットを渡します。これをルータごとに繰り返して、パケットは目的地に届きます。

ルーティングテーブルの読み方

ルーティングテーブルは、次の4つの項目でできた表です。あるルータのテーブルを例に、項目ごとに説明します。

宛先ネットワークの後ろには、/24のような数字が付いています。この数字をプレフィックス長と呼びます。サブネットマスクの長さと同じものです。

宛先ネットワークネクストホップ出力インタフェースメトリック
0.0.0.0/0198.51.100.1Gi0/01
10.0.0.0/8192.168.1.2Gi0/12
10.1.0.0/16192.168.2.6Gi0/21
10.1.2.0/24(直接接続)Gi0/30
192.168.1.0/24(直接接続)Gi0/10
192.168.2.0/24(直接接続)Gi0/20
198.51.100.0/24(直接接続)Gi0/00
  1. 1

    宛先ネットワーク

    この行が対象とする宛先の範囲を示します。10.1.2.0/24 なら、10.1.2.0〜10.1.2.255 が対象です。

  2. 2

    ネクストホップ

    次に渡す隣のルータのIPアドレスです。自分に直接つながっているネットワークには次のルータが不要なので、「直接接続」となります。

  3. 3

    出力インタフェース

    パケットをどのポートから送り出すかです。ネクストホップと対になっています。

  4. 4

    メトリック

    その経路のコストを表す値です。同じ宛先に複数の経路がある場合は、値が小さい方が優先されます。

たとえば、宛先が 203.0.113.50 だとします。この宛先は、0.0.0.0/0 以外のどの行にも当てはまらないので、最後の受け皿である 0.0.0.0/0 の行が使われます。パケットは Gi0/0 から、ネクストホップの 198.51.100.1 へ送り出されます。

VLANで分けたネットワークの間をこの表で中継する例は、VLAN間ルーティングの記事で説明しています。

複数の行が当てはまるときは「最長一致」

先ほどのテーブルで、宛先が 10.1.2.55 の場合を考えます。この宛先は、次の4つの行すべてに当てはまります。

宛先ネットワーク(行)10.1.2.55に一致する?
0.0.0.0/0一致する(プレフィックス長 0)
10.0.0.0/8一致する(プレフィックス長 8)
10.1.0.0/16一致する(プレフィックス長 16)
10.1.2.0/24一致する(プレフィックス長 24)← 最長なのでこれが選ばれる

このように複数の行が同時に当てはまるとき、ルータはプレフィックス長が最も長い行を選びます。プレフィックス長が最も長い行は、範囲が最も狭く、宛先を最も絞り込めている行です。この選び方が最長一致で、ロンゲストマッチとも呼びます。

この例では、10.1.2.0/24 の行が選ばれます。この行は直接接続なので、パケットは Gi0/3 からそのまま届けられます。

なぜ長い方を選ぶのかプレフィックス長が長いほど、その行は宛先を狭く正確に言い当てています。住所にたとえると、「東京都」より「東京都千代田区一丁目1番」の方が、具体的で正確な行き先です。

宛先が 10.5.9.20 の場合も考えます。当てはまるのは、プレフィックス長が8の10.0.0.0/8 と、0の0.0.0.0/0 の2行だけです。

10.1.0.0/16 と 10.1.2.0/24 は、宛先の先頭2オクテットが 10.5 で、10.1 と一致しないので対象外です。

ここでも最長一致により、プレフィックス長が長い 10.0.0.0/8 の行が選ばれます。パケットは、ネクストホップの 192.168.1.2 へ渡されます。

デフォルトルート(0.0.0.0/0)

0.0.0.0/0 は、プレフィックス長が0の特別な行で、すべてのIPアドレスに一致します。この行は、ほかのどの行にも当てはまらなかったときの、最後の受け皿として使われます。

最長一致の決まりにより、プレフィックス長が0の行は常に優先度が最も低くなります。/8 や /24 などの具体的な経路が1つでも一致すれば、そちらが必ず優先されます。家庭用ルータでは、インターネットへの出口がこのデフォルトルートに設定されています。

PCから見ると、このデフォルトルートの行き先がデフォルトゲートウェイです。PC自身のルーティングテーブルにも同じ 0.0.0.0/0 の行があり、そこにデフォルトゲートウェイのIPアドレスが入っています。

ルーティングテーブルは誰が作るのか:スタティックとダイナミック

ルーティングテーブルの作り方は、大きく2つあります。

スタティックルーティング(静的経路)

管理者が手作業で1行ずつ設定する方式です。経路が変わらない小規模なネットワークや、デフォルトルートの指定によく使われます。

設定は単純ですが、回線障害などで経路が使えなくなっても、自動では切り替わりません。AWSでVPCピアリングやTransit Gatewayを使ってVPCどうしをつなぐときも、相手のVPCへの経路はルートテーブルに書き足します。

ダイナミックルーティング(動的経路)

ルータどうしが経路情報を交換し、テーブルを自動的に作る方式です。交換するときの共通の手順をルーティングプロトコルと呼びます。回線が切れると、ルータは別のルータから受け取った情報をもとに、自動で経路を組み替えます。この方式ではルータが1台ずつ経路を決めます。一方、1か所のソフトウェアがまとめて経路を決める方式もあり、SDNと呼びます。

大規模なネットワークでは手作業では対応しきれないので、こちらを使います。代表的なプロトコルは次の3つです。

名前方式主な役割
RIP距離ベクトル型ホップ数だけで経路を判断する。小規模網向けの古いプロトコル
OSPFリンクステート型ネットワーク全体の地図を共有し、最短経路を計算する。組織内(AS内)で使う
BGPパスベクトル型組織と組織の間(AS間)で経路情報を交換する。インターネットの経路制御に使う

使う場所にも違いがあります。RIPとOSPFは、同じ組織のネットワークの中で使うIGPです。BGPは、組織と組織の間で使うEGPです。表のASは、1つの組織が管理するネットワークのまとまりを指します。

表の3つのプロトコルの仕組みは、それぞれRIP・OSPF・BGPの記事で詳しく説明しています。

同じ宛先に、スタティックルートとダイナミックルーティングの両方の経路があることもあります。どちらを使うかを決める信頼度の指標は、アドミニストレーティブディスタンスの記事で説明しています。

TTLとループ防止

ルーティングテーブルの設定を誤ると、パケットがルータ間をぐるぐる回り続けることがあります。これをルーティングループと呼びます。パケットが回り続けることを防ぐ仕組みが、TTL(Time To Live)です。

  1. 1

    送信元がTTLに初期値を入れる

    初期値はOSによって異なります。たとえば、Linuxは64、Windowsは128です。

  2. 2

    ルータを1台通過するたびに1減る

    減るのは、ルータを通るときだけです。ここでのルータは、第3層で転送する機器を指します。

  3. 3

    0になったら破棄

    TTLが0になったルータは、パケットを破棄し、ICMPの「Time Exceeded」を送信元へ返します。ICMPは、到達確認やエラー通知を運ぶプロトコルです。Time Exceeded以外のメッセージはICMPの記事にまとめています。

この仕組みがあるので、経路の設定ミスでループが起きても、パケットは有限回のホップで必ず消滅します。TTLが1ずつ減っていくことで、ネットワーク全体が同じパケットで埋め尽くされる事態を防いでいます。

TTLと宛先IPアドレスは、同じIPヘッダの中にある別々の欄です。ルータを1台通過するたびに変わるのは、TTLの欄と、計算し直されるヘッダチェックサムだけで、宛先IPアドレスの欄は変わりません。TTLがホップごとに減ることと宛先IPが変わらないことは、別の欄の話なので矛盾しません。

一方、区間ごとに書き換わるのは、Ethernetヘッダの宛先・送信元MACアドレスです。Ethernetヘッダは、IPヘッダの外側にあります。この違いは、MACアドレスとIPアドレスの記事でも説明しています。図にすると、次のようになります。

宛先MAC=区間ごとに書き換わる 宛先IP=変わらない(点線でつながっている)宛先MACAA:AA:AA:AA:AA:02宛先IP203.0.113.50宛先MACAA:AA:AA:AA:AA:04宛先IP203.0.113.50宛先MACAA:AA:AA:AA:AA:06宛先IP203.0.113.50PCルータAルータBサーバ
PCからサーバまで、ルータAとルータBの2台を経由する例です。宛先IPは3区間とも同じ値で、図では点線でつないでいます。一方、宛先MACは区間が変わるたびに別の値に書き換わります。

経路を自分の目で見る

自分のPCのルーティングテーブルと実際に通る経路は、コマンドで確認できます。

ip route自分のPCが持つルーティングテーブルを見る(Linux)
$ ip route
default via 192.168.10.1 dev eth0
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.25

# PCのルーティングテーブルは、2行だけのことが多いです。
# 1行は、直接つながっている自分のネットワークの行です。
# もう1行は、それ以外すべてを受け持つ default の行です。
# default の行が、デフォルトゲートウェイを表します。
# 上の表のように多くの行を持つのは、
# 複数のネットワークにつながっているルータの場合です。
# 先頭の default が 0.0.0.0/0(デフォルトルート)に対応します。
# Windowsは route print、macOSは netstat -rn で同じ内容が見られます。
traceroute / tracert宛先までに実際にどのルータを通っているかを見る
$ traceroute 8.8.8.8
 1  192.168.10.1       0.412 ms   ← 自宅ルータ(LAN側)
 2  198.51.100.1       1.203 ms   ← プロバイダとの接続点
 3  192.0.2.9          5.446 ms   ← プロバイダ
 4  192.0.2.14        12.882 ms   ← プロバイダの先
 5  8.8.8.8           14.001 ms   ← 目的地

# 表示は簡略化しています。実際の出力にはホスト名や、
# 1ホップにつき3回分の応答時間が並びます。
# traceroute は、TTLを1, 2, 3…と1ずつ増やしながら送ります。
# 途中の各ルータは、TTL超過を知らせる ICMP Time Exceeded で応答します。
# 最後の宛先は、TTL超過ではなく別の応答を返します。
# traceroute ではICMPポート到達不能、tracert ではICMP Echo Replyです。
# この応答で、到達が確定します。
# 1ホップ目が自宅ルータのLAN側アドレス(プライベートIP)なのは、
# 自宅ルータのLAN側インタフェースが最初に応答するためです。

ping・tracerouteのオプションの使い方は、ping・tracerouteの使い方と見方にまとめています。「* * *」の表示や、応答なしと到達不能の見分け方も説明しています。

練習問題(全5問)

Q1ルーティングテーブルの「ネクストホップ」が表しているものは?
Q2ルーティングテーブルに次の3行があるとき、宛先 10.1.2.55 のパケットはどの行で転送される? ① 10.0.0.0/8 ② 10.1.0.0/16 ③ 10.1.2.0/24
Q3宛先 10.5.9.20 に対して、ルーティングテーブルに 0.0.0.0/0(デフォルトルート)と 10.0.0.0/8 の両方が一致する場合、どちらが選ばれる?
Q4TTLが0になったパケットはどうなる?
Q5OSPFの説明として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

1台のスイッチを論理的に分けて、別々のネットワークにする方法もあります。分けたネットワークの間の通信には、ルーティングと同じ仕組みが使われます。

おすすめの本 PR

この記事の内容を扱っている本です。

目的別の本の選び方を見る

入門コースを読み進める

入門コース 全19本中11本目