ソースルーティングとは、ネットワーク通信においてパケットの送信元が目的地までの経路を直接指定する仕組みを指します。
通常のインターネット通信では、パケットを受け取った各ルーターが自身の判断で次の転送先を決定する「ホップバイホップルーティング」が一般的です。
しかし、ソースルーティングを用いると、送信者がパケットのヘッダ内に経由すべき中継ポイントをあらかじめリストアップして送り出すことができます。
この技術はかつてネットワークのデバッグや特定の経路を強制的に選ばせるために利用されていましたが、現代ではセキュリティ上の理由からその利用が厳しく制限されています。
本記事では、ソースルーティングの具体的な仕組みや、なぜ現代のネットワークにおいてリスクと見なされているのかを詳しく解説します。
ソースルーティングの基本概念
ソースルーティングは、パケットの送信元(ソース)がネットワーク上の経路を制御するためのオプション機能です。
通常、ルーターは「目的地への最短経路」を計算してデータを転送しますが、ソースルーティングでは送信者が意図的に特定のサーバーやルーターを経由させることが可能になります。
この仕組みは、IPプロトコルのオプション機能として定義されており、IPv4では「IPオプション」フィールドに経路情報を格納します。
送信者が経路を決定できるため、ネットワーク管理者が特定の回線の品質を調査したり、トラブルシューティングを行ったりする際に役立つ性質を持っています。
しかし、ネットワークの自由な制御を許すことは、悪意のある攻撃者にとっても好都合な仕組みとなり得ます。
通常のルーティングとの比較
ソースルーティングを理解するためには、一般的なルーティング方式との違いを整理することが重要です。
以下の表は、一般的なルーティング(ホップバイホップ方式)とソースルーティングの主な違いをまとめたものです。
| 比較項目 | ホップバイホップルーティング | ソースルーティング |
|---|---|---|
| 経路決定の主体 | 各ネットワーク機器(ルーター) | パケットの送信元ホスト |
| パケットヘッダの役割 | 宛先IPアドレスのみを保持 | 経由する中継点のリストを保持 |
| 柔軟性 | ルーターの最適化設定に依存 | 送信者が自由に経路を指定可能 |
| セキュリティリスク | 比較的低い | 非常に高い(悪用のリスクがある) |
| 現在の利用状況 | インターネットの標準的な方式 | 多くの環境で無効化されている |
ソースルーティングの2つの主要な方式
ソースルーティングには、経路指定の厳密さの違いによって大きく分けて2つのタイプが存在します。
これらはIPv4において「LSRR」と「SSRR」という名称で区別されています。
緩やかなソースルーティング(Loose Source Record Route: LSRR)
緩やかなソースルーティング(LSRR)は、パケットが必ず通過しなければならない中継地点(ルーターやゲートウェイ)をいくつか指定する方式です。
指定された中継点の間であれば、どのルーターを経由してパケットを運ぶかはネットワーク側の判断に委ねられます。
例えば、「地点Aと地点Bを必ず通ること」という条件さえ満たせば、その途中でどのような経路を辿っても構わないというルールです。
ネットワーク診断ツールなどで、特定のゲートウェイを通過しているかを確認する際などに利用されることがありました。
厳密なソースルーティング(Strict Source Record Route: SSRR)
厳密なソースルーティング(SSRR)は、目的地に到達するまでに経由するすべてのルーターを送信者が一文字一句指定する方式です。
パケットは指定されたリストにある順番通りにルーターを辿らなければならず、リストにないルーターへ転送されることは許されません。
もしリストにないホップが発生した場合、そのパケットは破棄され、送信元にエラー通知が送られます。
ネットワークの完全な物理パスを検証するために考案されましたが、柔軟性が極めて低く、実用的な場面は限られています。
ソースルーティングが抱える重大なセキュリティリスク
ソースルーティングは、その柔軟性の代償として、深刻なセキュリティ脆弱性をネットワークにもたらす可能性があります。
現在、多くのネットワーク機器ベンダーやプロバイダーがデフォルトでソースルーティングを無効化しているのは、以下のリスクを防ぐためです。
IPスプーフィング(なりすまし)の助長
ソースルーティングが悪用されると、IPスプーフィング(送信元IPアドレスの偽装)の成功率が格段に高まってしまいます。
通常、IPアドレスを偽装したパケットを送信しても、応答パケットは偽装されたアドレスが実際に存在する場所へ戻ってしまうため、攻撃者が通信を成立させることは困難です。
しかし、ソースルーティングを利用して「戻り値の経路」まで指定されてしまうと、偽装されたパケットへの返信を攻撃者のもとへ誘導できてしまいます。
これにより、信頼されたネットワーク内部の端末になりすまして、外部から不正にアクセスを行うことが容易になります。
ファイアウォールの回避
ソースルーティングを使用することで、組織の境界に設置されたセキュリティ対策をバイパスされる危険性があります。
攻撃者は、セキュリティチェックが厳しいゲートウェイを避け、セキュリティ設定が甘い別の中継ポイントを経由するように経路を指定します。
一旦ネットワークの内部にパケットが侵入してしまえば、内側の信頼関係を利用してさらに攻撃を拡大させることが可能です。
ファイアウォールなどのフィルタリングルールは、通常のルーティングを前提に設計されていることが多く、ソースルーティングによる特殊な経路指定を想定していない場合があります。
踏み台攻撃への利用
特定の中継地点を強制的に経由させる性質を利用して、無関係なルーターやサーバーを攻撃の中継点(踏み台)にされるリスクもあります。
攻撃の痕跡を隠蔽するために複数の地点を経由させることで、通信経路の追跡を困難にさせます。
また、特定の中継ポイントに大量のソースルーティングパケットを送りつけることで、その機器の処理負荷を高めるDoS攻撃の一種としても利用されかねません。
IPv6におけるソースルーティングの現状
次世代プロトコルであるIPv6においても、当初は「ルーティングヘッダ Type 0 (RH0)」という形でソースルーティングの機能が定義されていました。
しかし、IPv4で懸念されていたセキュリティ問題に加え、IPv6の仕様上、さらに深刻なトラフィック増幅攻撃が可能であることが発覚しました。
これを受けて、2007年にはIETF(インターネット技術タスクフォース)によってIPv6におけるRH0の使用は公式に廃止(非推奨化)されました。
現代のIPv6通信においては、セキュリティを担保するために標準的なルーティングのみが使用されるようになっています。
現代のネットワーク技術との関係:セグメントルーティング
古くからあるソースルーティングはセキュリティ上の理由で敬遠されていますが、その「経路を自由に指定する」という思想は、形を変えて現代に受け継がれています。
それが、SDN(ソフトウェア定義ネットワーク)の文脈で注目されているセグメントルーティング(Segment Routing)です。
セグメントルーティングは、従来のソースルーティングの利便性を活かしつつ、セキュリティや管理性を大幅に向上させた技術です。
パケットのラベルスタックなどを用いて経路をプログラム的に指定し、ネットワーク全体の負荷分散や品質保証(QoS)を実現します。
これは通信事業者や大規模データセンター内部の閉じられた安全なネットワークで利用されるものであり、無防備なインターネット上を流れる従来のソースルーティングとは性質が異なります。
このように、古典的な技術が抱えていた欠点を克服し、新しいアーキテクチャとして再定義される動きが続いています。
ソースルーティングへの対策
ネットワークエンジニアやシステム管理者は、自身の管理下にあるネットワークがソースルーティングの脆弱性にさらされていないかを確認する必要があります。
具体的な対策としては、ルーターやファイアウォールなどのネットワーク機器の構成設定において、ソースルーティングが指定されたパケットを明示的に破棄(ドロップ)するように設定することです。
多くのエンタープライズ向けルーターでは、以下のような設定コマンド(例:Cisco IOS)を用いて無効化することが推奨されています。
! IPv4のソースルーティングを無効化する設定
no ip source-route
また、ネットワークの境界に設置されたデバイスで、外部からのパケットにIPオプション(ソースルーティング情報)が含まれていないかをチェックするフィルタリングを導入することも効果的です。
現在稼働している主要なOSやネットワーク機器の多くは、デフォルトでこの機能が無効になっていますが、古い機器を使い続けている場合や、特殊な設定変更を行った場合には注意が必要です。
まとめ
ソースルーティングは、送信元がデータの通り道を決定できる非常に強力な機能ですが、その自由度の高さゆえに多くのセキュリティリスクを孕んでいます。
IPスプーフィングやファイアウォールの回避といった攻撃手法に悪用されるリスクがあるため、現在のインターネット環境では原則として使用すべきではありません。
一方で、その基本的な考え方は「セグメントルーティング」といった次世代の高度なネットワーク制御技術へと進化を遂げています。
IT用語としてのソースルーティングを正しく理解することは、ネットワークの歴史と、セキュリティ対策の重要性を学ぶ上で非常に有益です。
安全なネットワーク環境を維持するために、適切な設定管理と最新の技術動向の把握に努めましょう。
