この記事は、 「ネットワーク中級編|構築・検証・障害切り分けを身につける」 の第12回です。
前回学んだルーティングテーブルを使い、複数の経路が宛先に一致したときに、 ルーターがどの経路を選ぶのかを確認します。
最長一致とは?ルーティングの経路選択を具体例でわかりやすく解説
1つの宛先IPアドレスに対して、デフォルトルート、集約経路、個別経路など、 複数の経路が同時に一致することがあります。 この記事では、ルーターが最も具体的な経路を選ぶ「最長一致」の仕組みを、 プレフィックス長、ルーティングテーブル、確認コマンドを使って理解します。
ルーティングテーブルに経路が存在していても、 「どの経路が実際に使われるのか」を判断できなければ、通信経路は読み解けません。
特に重要なのが、 管理距離が小さい経路より、プレフィックス長が長い経路が使われることがある という点です。ここを混同すると、障害調査や設計レビューで判断を誤ります。
この記事を読み終えるとできること
- 最長一致の意味を自分の言葉で説明できる
/8、/16、/24、/32の具体性を比較できる- ルーティングテーブルから宛先IPの転送先を判断できる
- 最長一致と管理距離・メトリックの役割を区別できる
- より詳細な経路が原因となる通信障害を切り分けられる
- Cisco IOSの確認コマンドで使用経路を確認できる
結論:最も長く一致する経路を選ぶ
最長一致とは、宛先IPアドレスに一致する経路が複数あるとき、 プレフィックス長が最も長い経路を選ぶ仕組みです。
英語では Longest Prefix Match と呼ばれます。 「最長」という言葉は、距離やホップ数ではなく、 ネットワーク部として一致するビット数が最も多いことを表します。
たとえば、宛先が 10.1.1.70 のとき、次の経路がすべて一致するとします。
一致する経路が複数ある場合
この場合、最も長い /26 が選択されます。
/24 や /16 も宛先には一致していますが、
/26 の方が宛先範囲を細かく指定しているためです。
最長一致とは何か
ルーターはパケットを受信すると、宛先IPアドレスを確認し、 ルーティング情報を使って次の転送先を決めます。
しかし、ルーティングテーブルには、同じ宛先に重なる経路が登録されることがあります。
- すべての宛先に一致するデフォルトルート
- 組織全体をまとめた集約経路
- 部署や拠点単位の個別ネットワーク
- 特定の端末だけを示すホストルート
これらが同時に一致した場合、ルーターは適当に1つを選ぶわけではありません。 より詳細な宛先範囲を示す経路を選択します。
日常的な例に置き換える
「東京都」より「東京都新宿区」、「東京都新宿区」より 「東京都新宿区西新宿」の方が場所を細かく指定しています。 最長一致は、より詳しい住所を優先する考え方に近いものです。
最長一致が必要な理由
大まかな経路を用意しつつ、一部の通信だけ別経路へ送るためです。
通常通信
多数のネットワークを、集約経路やデフォルトルートでまとめて転送します。
例外通信
特定のネットワークや端末だけ、より詳細な経路で別の出口へ送れます。
経路の集約
経路数を減らしながら、必要な部分だけ詳細経路を残せます。
プレフィックス長が長いほど具体的
IPv4アドレスは32ビットです。
/24 のような数字は、そのうち何ビットをネットワーク部として扱うかを表します。
| 経路 | サブネットマスク | 宛先範囲 | 具体性 |
|---|---|---|---|
0.0.0.0/0 |
0.0.0.0 |
すべてのIPv4アドレス | 最も大まか |
10.0.0.0/8 |
255.0.0.0 |
10.0.0.0~10.255.255.255 |
大まか |
10.1.1.0/24 |
255.255.255.0 |
10.1.1.0~10.1.1.255 |
詳細 |
10.1.1.70/32 |
255.255.255.255 |
10.1.1.70だけ |
最も詳細 |
数字が大きいほど優先される、と覚えるだけでも基本問題は解けます。
ただし、その経路が宛先IPアドレスに実際に一致していることが前提です。
一致しない /32 が、一致する /24 より優先されることはありません。
ビットで見ると何が一致しているのか
宛先 10.1.1.70 と、経路 10.1.1.64/26 を比較します。
最後のオクテットだけを2進数にすると、次のようになります。
/26 は、先頭3オクテットの24ビットに加え、
最後のオクテットの先頭2ビットも一致する必要があります。
そのため、/24 よりも宛先を細かく絞り込めます。
具体例で経路選択を確認する
宛先IPアドレスを 10.1.1.70 とし、
ルーターが次の経路を持っているとします。
| 候補経路 | 一致するか | 理由 |
|---|---|---|
0.0.0.0/0 |
一致する | デフォルトルートはすべての宛先に一致 |
10.0.0.0/8 |
一致する | 先頭8ビットが10で一致 |
10.1.0.0/16 |
一致する | 先頭16ビットが10.1で一致 |
10.1.1.0/24 |
一致する | 10.1.1.0~10.1.1.255に含まれる |
10.1.1.64/26 |
一致する・採用 | 10.1.1.64~10.1.1.127に含まれ、最も長い |
10.1.1.128/25 |
一致しない | 10.1.1.128~10.1.1.255の範囲外 |
経路選択の手順
- パケットの宛先IPアドレスを確認する
- 宛先に一致する経路をすべて候補にする
- 候補のプレフィックス長を比較する
- 最も長いプレフィックスを持つ経路を選ぶ
- その経路のネクストホップまたは出力インターフェースへ転送する
プレフィックス長だけを先に見ない
まず、対象の宛先IPアドレスが経路の範囲に含まれているかを確認します。 長いプレフィックスでも、宛先に一致しなければ候補になりません。
ルーティングテーブルから最長一致を判断する
次のルーティングテーブルを持つルーターが、
宛先 10.1.1.70 のパケットを受信したとします。
| 種別 | 宛先ネットワーク | 管理距離/メトリック | ネクストホップ |
|---|---|---|---|
| S* | 0.0.0.0/0 | [1/0] | 203.0.113.1 |
| S | 10.0.0.0/8 | [1/0] | 192.0.2.2 |
| S | 10.1.0.0/16 | [1/0] | 192.0.2.6 |
| O | 10.1.1.0/24 | [110/20] | 192.0.2.10 |
| O | 10.1.1.64/26 | [110/30] | 192.0.2.14 |
選択されるのは 10.1.1.64/26 です。
デフォルトルートやスタティックルートも一致していますが、
/26 が最も長く一致しています。
「スタティックルートの管理距離は1だから、OSPFより必ず優先される」は誤りです。
10.1.0.0/16 のスタティックルートより、
10.1.1.64/26 のOSPF経路の方が宛先を細かく指定しているため、
宛先 10.1.1.70 にはOSPF経路が使われます。
宛先が変わると選ばれる経路も変わる
| 宛先IP | 選択経路 | 理由 |
|---|---|---|
10.1.1.70 |
10.1.1.64/26 |
/26の範囲内 |
10.1.1.200 |
10.1.1.0/24 |
/26の範囲外だが/24には含まれる |
10.1.50.10 |
10.1.0.0/16 |
/24と/26には一致しない |
10.200.1.10 |
10.0.0.0/8 |
/8だけが10番台として一致 |
198.51.100.20 |
0.0.0.0/0 |
個別経路がなくデフォルトルートを使用 |
管理距離・メトリックとの関係
最長一致、管理距離、メトリックは、すべて経路選択に関係しますが、役割が異なります。
| 比較項目 | 何を決めるか | 比較する場面 |
|---|---|---|
| プレフィックス長 | パケットの宛先に対して、どの経路が最も具体的か | 転送時に、異なる長さの一致経路から選ぶ |
| 管理距離(AD) | 同じ宛先プレフィックスを、異なる学習元から受けたときの信頼度 | 同じプレフィックスの経路をRIBへ登録するとき |
| メトリック | 同じルーティングプロトコル内で、どの経路が最適か | 同じプレフィックスを同じプロトコルで複数学習したとき |
経路が使われるまでの考え方
例1:プレフィックス長が違う
| 経路 | 学習元 | AD |
|---|---|---|
10.1.0.0/16 |
スタティック | 1 |
10.1.1.0/24 |
OSPF | 110 |
宛先が 10.1.1.70 なら、/24 を使用します。
プレフィックスが異なるため、AD値を直接比較して決める場面ではありません。
例2:プレフィックス長が同じ
| 経路 | 学習元 | AD | 結果 |
|---|---|---|---|
10.1.1.0/24 |
スタティック | 1 | 通常はこちらをRIBへ登録 |
10.1.1.0/24 |
OSPF | 110 | バックアップ候補 |
今度は同じ 10.1.1.0/24 なので、管理距離を比較します。
通常はADが小さいスタティックルートがRIBに登録されます。
実務での整理方法
「違うプレフィックスなら最長一致」「同じプレフィックスの学習元が複数ならAD」 と整理すると、混乱しにくくなります。
ホストルート・デフォルトルート・集約経路
ホストルート:/32
/32 は1つのIPv4アドレスだけを示します。
そのIPアドレスに一致する限り、最も詳細な経路です。
192.0.2.0/24
192.0.2.0~192.0.2.255をまとめて転送します。
192.0.2.50/32
192.0.2.50だけを別のネクストホップへ転送できます。
宛先が 192.0.2.50 なら /32 を使い、
宛先が 192.0.2.51 なら /24 を使います。
デフォルトルート:/0
0.0.0.0/0 は、どのIPv4アドレスにも一致します。
ただしプレフィックス長が0なので、
他に一致する具体的な経路がないときだけ使われます。
デフォルトルートは「最優先の経路」ではなく、 最後に残る最も大まかな経路です。
集約経路
複数の細かいネットワークを、1本の大きな経路にまとめることを経路集約と呼びます。
| 詳細経路 | 集約後 |
|---|---|
10.10.0.0/2410.10.1.0/2410.10.2.0/2410.10.3.0/24
|
10.10.0.0/22 |
集約経路 10.10.0.0/22 があっても、
一部について 10.10.2.0/24 が登録されていれば、
10.10.2.x 宛の通信は /24 を使用します。
集約経路のブラックホールに注意
集約範囲には含まれるものの、実際には存在しない詳細ネットワーク宛の通信が、 集約先へ送られて破棄される場合があります。 集約設計では、詳細経路の有無と破棄用経路の意図を確認します。
確認コマンド
最長一致を頭の中だけで判断せず、実機のコマンドでも確認します。 以下はCisco IOS系の代表例です。
show ip route
ルーティングテーブル全体を確認します。
show ip route <宛先IP>
指定した宛先IPアドレスに対して、どのルーティングエントリーが一致するかを確認します。
出力の Routing entry for 10.1.1.64/26 から、
宛先 10.1.1.70 に対して /26 が使用されると分かります。
show ip cef <宛先IP> detail
実際の高速転送に使われるCEF情報を確認します。 RIBだけでなく、FIBへ正しく反映されているかを確認したいときに有効です。
traceroute
実際の通信が想定した経路を通っているかを確認します。 ただし、途中機器の応答制限や非対称経路によって、すべてのホップが表示されるとは限りません。
機種・OSによる違い
コマンド名や出力形式は、機器ベンダーやソフトウェアバージョンによって異なります。 実務では、対象機器の公式コマンドリファレンスも確認してください。
障害切り分けでの使い方
「ルーティングテーブルに宛先経路があるから問題ない」と判断するのは危険です。 より詳細な経路が別方向を指していると、想定外の経路へ転送されます。
ケース1:一部の端末だけ通信できない
| 経路 | ネクストホップ |
|---|---|
172.16.0.0/16 |
192.0.2.1 |
172.16.20.50/32 |
192.0.2.99 |
172.16.20.0/24内の多くの端末は正常でも、
172.16.20.50だけは/32へ最長一致し、別のネクストホップへ送られます。
このようなときは、端末側やACLだけでなく、 ホストルートが残っていないかを確認します。
ケース2:バックアップ回線へ切り替わらない
デフォルトルートをバックアップ回線へ向けても、 宛先に一致するより詳細な経路がメイン回線側へ残っていれば、 その通信はデフォルトルートを使いません。
フローティングスタティックルートを設計するときは、 デフォルトルートだけでなく、より詳細な個別経路が残る条件も確認します。
ケース3:VPN接続後に特定サイトだけ到達できない
VPNクライアントへ配布された詳細経路が、ローカルネットワークと重複している場合、 特定宛先だけVPN側へ送られることがあります。
たとえば、端末がローカルで 192.168.1.0/24 を使っていても、
VPNから 192.168.1.100/32 を受け取ると、
192.168.1.100 宛だけVPN側へ送られる可能性があります。
切り分けの確認順序
- 通信できない宛先IPアドレスを特定する
- 宛先に一致する経路を、長いプレフィックスから確認する
- 選択経路のネクストホップと出力インターフェースを確認する
- より詳細な不要経路や古いホストルートがないか確認する
- ネクストホップ到達性、ARP、インターフェース状態を確認する
- 戻り経路にも同様の確認を行う
通信は往復で成立する
送信側で正しい経路が選ばれていても、戻り側でより詳細な別経路が選ばれると、 非対称経路や通信断が発生することがあります。
最長一致に関するよくある勘違い
管理距離は、同じ宛先プレフィックスを異なる方法で学習したときの比較に使います。 プレフィックス長が異なる経路では、パケット転送時に最長一致が働きます。
デフォルトルートは /0 であり、最も大まかな経路です。
より詳細な一致経路がない場合にだけ使われます。
その経路が宛先IPアドレスに一致していることが前提です。 宛先に一致しない経路は、どれだけ長くても候補になりません。
ネクストホップへの到達性、戻り経路、ARP、ACL、ファイアウォール、 宛先ホストの状態なども通信成立に影響します。
これが最長一致の基本です。 最後に、選ばれた経路のネクストホップや出力インターフェースを確認します。
通常のIPルーティングを前提とした説明です
Policy-Based Routing(PBR)、VRF、SD-WANポリシーなどが設定されている環境では、 通常のルーティングテーブルだけでは転送先を説明できない場合があります。 機器固有の転送ポリシーも合わせて確認してください。
理解度チェック
記事の内容を確認するため、次の6問に答えてください。 解答を開く前に、選択理由も考えてみましょう。
問題1.最長一致の説明として最も適切なものはどれですか。
- ホップ数が最も多い経路を選ぶ
- 管理距離が最も大きい経路を選ぶ
- 宛先に一致する経路のうち、プレフィックス長が最も長い経路を選ぶ
- ルーティングテーブルの最上段にある経路を選ぶ
解答を見る
最長一致は、宛先IPアドレスに一致する候補の中から、 ネットワーク部として一致するビット数が最も多い経路を選ぶ仕組みです。
問題2.宛先 10.1.1.70 に対して、次のうち最長一致する経路はどれですか。
0.0.0.0/010.0.0.0/810.1.1.0/2410.1.1.64/26
解答を見る
10.1.1.70 は 10.1.1.64~10.1.1.127 に含まれ、
一致する候補の中で /26 が最も長いためです。
問題3.宛先 10.1.1.200 に対して、次の経路がある場合、どれを使いますか。
10.0.0.0/810.1.1.0/2410.1.1.64/26
解答を見る
10.1.1.0/24
10.1.1.200 は 10.1.1.64/26 の範囲外です。
一致する経路の中では /24 が最長です。
問題4.スタティックの 10.1.0.0/16 とOSPFの 10.1.1.0/24 がある場合、宛先 10.1.1.10 にはどちらを使いますか。
解答を見る
10.1.1.0/24
管理距離はスタティックの方が小さくても、プレフィックスが異なります。
宛先に対してより詳細な /24 が最長一致します。
問題5.デフォルトルート 0.0.0.0/0 が使われるのはどのようなときですか。
解答を見る
デフォルトルートはすべての宛先に一致しますが、プレフィックス長は0です。 そのため、個別経路が存在すれば個別経路が優先されます。
問題6.特定の1台だけが別経路へ送られている場合、最初に疑うべき経路はどれですか。
/0/8/24/32
解答を見る
/32
/32 は1つのIPアドレスだけに一致するホストルートです。
不要なホストルートが残ると、特定端末だけ想定外の方向へ転送されます。
実践演習:選択される経路を判断しよう
ルーターR1に次の経路が登録されています。 各宛先に対して選択される経路とネクストホップを答えてください。
| 宛先ネットワーク | ネクストホップ | 備考 |
|---|---|---|
| 0.0.0.0/0 | 203.0.113.1 | インターネット側 |
| 172.16.0.0/12 | 192.0.2.1 | 社内集約経路 |
| 172.16.32.0/20 | 192.0.2.5 | 西日本拠点 |
| 172.16.40.0/24 | 192.0.2.9 | 名古屋拠点 |
| 172.16.40.100/32 | 192.0.2.13 | 検証サーバー |
課題1.宛先 172.16.40.50
ネクストホップ:_____________
選択理由:________________
課題1の解答を見る
選択経路:172.16.40.0/24
ネクストホップ:192.0.2.9
/12、/20、/24が一致し、
その中で/24が最長です。/32は172.16.40.100だけに一致するため候補外です。
課題2.宛先 172.16.40.100
ネクストホップ:_____________
選択理由:________________
課題2の解答を見る
選択経路:172.16.40.100/32
ネクストホップ:192.0.2.13
すべての社内経路にも一致しますが、/32が最も詳細です。
課題3.宛先 172.16.35.20
ネクストホップ:_____________
選択理由:________________
課題3の解答を見る
選択経路:172.16.32.0/20
ネクストホップ:192.0.2.5
172.16.35.20は172.16.32.0~172.16.47.255に含まれます。
/24と/32には一致しません。
課題4.宛先 172.20.10.10
ネクストホップ:_____________
選択理由:________________
課題4の解答を見る
選択経路:172.16.0.0/12
ネクストホップ:192.0.2.1
172.16.0.0/12は172.16.0.0~172.31.255.255を含みます。
より詳細な候補には一致しません。
課題5.宛先 198.51.100.50
ネクストホップ:_____________
選択理由:________________
課題5の解答を見る
選択経路:0.0.0.0/0
ネクストホップ:203.0.113.1
社内向けの経路には一致しないため、最後にデフォルトルートが使用されます。
課題6.障害原因を考える
172.16.40.0/24内で、172.16.40.100だけ通信できません。
ほかの端末は正常です。ルーティングの観点から最初に確認すべきことを書いてください。
課題6の解答例を見る
172.16.40.100/32のホストルートが存在し、
ほかの端末とは異なるネクストホップ192.0.2.13へ送られていることを確認します。
この経路が意図したものか、ネクストホップへ到達できるか、 戻り経路が存在するかも合わせて確認します。
自分の言葉で説明する課題
技術を理解したら、相手に説明できる形へ言い換えます。 次の2つに取り組んでください。
課題1.後輩へ30秒で説明する
「最長一致とは何ですか?」と質問されたときの説明文を作ってください。
説明例を見る
最長一致とは、パケットの宛先IPアドレスに一致する経路が複数あるとき、
プレフィックス長が最も長い、つまり宛先を最も細かく指定している経路を選ぶ仕組みです。
たとえば/16と/24の両方に一致するなら、/24を使います。
課題2.障害報告として説明する
特定サーバーだけ想定外の回線へ転送されていた場合、 調査結果を上司へ報告する文章を作ってください。
原因:____________________________________
対応:____________________________________
報告例を見る
調査結果:
対象サーバー宛の通信は、拠点全体の/24経路ではなく、
当該サーバーだけに一致する/32経路を使用していました。
原因: 過去の検証で追加したホストルートが残っており、最長一致によって想定外のネクストホップが選択されていました。
対応:
設定意図を確認したうえで不要な/32経路を削除し、
正常な/24経路へ切り替わることと往復疎通を確認します。
英語ドキュメントで使われる表現
| 英語表現 | 意味 |
|---|---|
longest prefix match |
最長一致 |
more specific route |
より詳細な経路 |
less specific route |
より大まかな経路 |
host route |
ホストルート。IPv4では通常/32 |
default route |
デフォルトルート。IPv4では0.0.0.0/0 |
まとめ
- 最長一致は、宛先IPアドレスに一致する経路のうち、プレフィックス長が最も長い経路を選ぶ仕組み
- プレフィックス長が長いほど、宛先範囲を細かく指定している
/32は1つのIPv4アドレスに一致する最も詳細なホストルート/0はすべてに一致するが、ほかに詳細経路がないときだけ使われる- プレフィックス長が異なる経路を、管理距離だけで比較してはいけない
- 同じプレフィックスを複数の方法で学習した場合は、管理距離やメトリックが経路登録に関係する
- 一部の宛先だけ通信できない場合は、不要な
/32やより詳細な経路を確認する - 実機では
show ip route <宛先IP>やshow ip cefで使用経路を確認する
ルーティングテーブルを読むときは、経路の有無だけでなく、 対象の宛先に対してどの経路が最長一致するかまで確認しましょう。

コメント