ソース・ルーティング
ソース・ルーティングとは、ネットワーク通信において、データの送信者が送信先のみでなく中継地点をも指定する経路制御方式のことである。
概要
[編集]「IP通信における、中継地点となる通過ルータのIPアドレスを、送信者がIPパケット中に指定する経路制御方式」と解説されることもある[1]が、以下に示すように、IP通信以外においても、送信者が経路を指定するもの全般がソース・ルーティングと呼ばれている。
- IP通信におけるソース・ルーティング
- 本項では、主にIP通信について説明する。
- IEEE 802.5(トークンリング)におけるMAC層でのソース・ルーティングである、ソース・ルーティング・ブリッジ方式[2]
- イーサーネットの高速化に伴い、トークンリング自体、ソース・ルーティングまで踏み込んで説明されることが少なくなっている。
- メール配信におけるソース・ルーティング
- センダー・リライティング・スキームに詳述。当該機能はメール配信関連の最古のRFCであるRFC822から存在するが、RFC1123で既に非推奨とされている。
通常、通信規模が大きくなると、個々の通信機器が通信相手への経路情報を把握することは困難となる。そのため、個々の通信機器は近隣の中継機器の情報のみを把握しておき、経路制御を中継機器に任せる方式(routed protocol)が大規模ネットワークでの主流となっている。しかし、メール配信におけるソース・ルーティングのように、歴史的にあるいは特定のネットワーク状況下では、このような仕組みを用いることもある。また、ネットワーク障害調査によく用いられるpingやtraceroute(Windowsではtracert)には、IP通信のソース・ルーティングをオプション指定可能となっているバージョンが存在する。通信経路を限定してネットワーク障害調査を行うことは、障害の原因切り分けを行う上で重要な方法の1つであり、このような場面ではソース・ルーティングは有用である。
IPv4におけるソース・ルーティング
[編集]IP通信における中継地点とは、通信経路上の中継ルータを意味する。IPv4では、中継ルータを全て指定する「ストリクト・ソース・ルーティング(英:Strict=厳密な)」(SSRRと略される)と、必須となる中継ルータをいくつか指定して指定ルータ間の経路は各ルータに任せる「ルーズ・ソース・ルーティング(英:Loose=粗い)」(LSRRと略される)との、2種類のソース・ルーティングが設けられている[3]。
IPヘッダ上にはオプション「SSRR」「LSRR」が設けられており、これを指定しつつ、中継ルータのIPアドレス(最大9件)を指定することで、ソース・ルーティングを実現することができる。「SSRR」や「LSRR」が指定されていない場合、中継ルータは送信先アドレスをルータ自身が持つ経路情報に突き合わせることで次の中継ルータを決定する。「SSRR」や「LSRR」が指定されている場合、中継ルータはルータ自身が持つ経路情報を使用せず、パケット中に示された中継ルータを次の中継ルータとして使用する(但し「LSRR」であれば、次の中継ルータ決定後、その中継ルータへのパケット配信を行う際には、ルータが持つ経路情報を使用することになる)。
セキュリティ上の観点から、インターネットではLSRR付のパケットはブロックされるように設定されることが多い。というのも、IPスプーフィングの可能性を高める要素となるためである[4]。 例えば、Yamahaルータでは、“「source-routeオプション付きIPパケット」をフィルタリングする”機能(コマンド)が実装されており、慣習的に設定されることが多い(設定例にも入っている)。[5]
IPv6におけるソース・ルーティング
[編集]IPv6(RFC2460)には、ルーティングヘッダと呼ばれる拡張ヘッダが設けられており、ルーティングヘッダType0を使用することでIPv4におけるLSRRと同等のソース・ルーティングを実現することが可能である。
但し、セキュリティ上の観点から、インターネットではルーティングヘッダType0を持つIPv6パケットはブロックされるように設定されることが多い。ファイアウォールのルール回避の可能性を高める要素となることや、指定可能な中継ルータ数が無制限(但しMTUによって制限)[6]であるためにネットワーク帯域消費などの攻撃に使用可能であることなどによるものである。また、IPv6登場初期の製品には、巧妙に仕組んだType0パケットを用いることでサービス妨害攻撃が成立する製品が多数存在した[7][8]。