Nullルート
宛先に一致したパケットを、どこにも転送せずに破棄するための経路。集約した経路の範囲のうち、使っていないアドレス宛てのパケットが、ルータ間を行ったり来たりするルーティングループを防ぐために設定する。
イマシルちゃんの解説
会社のアドレスの範囲のうち、まだ使っていない住所あての荷物が届いたとするね。
社内のルータは「そんな住所はないから、外に返そう」(デフォルトルート)、
外のルータは「その範囲は会社あてだから、会社に戻そう」って、
2台の間で荷物がずっと行ったり来たりしちゃうんだ。
そこで、「使っていない住所あては、ここで捨てる」っていう道を作っておくのがNullルートなんだよ!
より深い解説
定義
Nullルートは、出口のインタフェースを、パケットを破棄するための仮想的なインタフェース(Null0、Nullインタフェース)にした経路である。ブラックホールルートとも呼ばれる。
ルーティングループが起きる仕組み
組織の境界にあるルータBと、ISPのルータAが、次のように設定されている場合を考える。
| ルータ | 経路 |
|---|---|
| ISPのルータA | 組織に割り当てたプレフィックス(例:2001:db8:yyyy::/48)宛ては、ルータBへ |
| 組織のルータB | 組織の中で使っている /64 の経路(OSPFv3で学習)と、デフォルトルート(::/0)はルータAへ |
組織に割り当てた範囲のうち、使っていないアドレス宛てのパケットがインターネットから届くと、
- ルータAは、/48 の経路に従って、ルータBに送る
- ルータBは、該当する /64 の経路がないため、デフォルトルートに従って、ルータAに送り返す
- 1と2を繰り返す
パケットは、IPv6のホップリミット(IPv4のTTL)が0になるまで2台の間を行き来し、最後に破棄される。その間、回線の帯域とルータの処理能力をむだに使う。
Nullルートによる対策
ルータBに、組織に割り当てられた範囲全体(/48)の経路を、出口をNullにして設定する。
| 宛先 | ルータBの経路の選択 |
|---|---|
| 使っている /64 宛て | /64 の経路(OSPFv3)がより長いので、そちらが選ばれ、正しく転送される |
| 使っていない /64 宛て | /48 のNullルートが、デフォルトルート(/0)より長いので選ばれ、破棄される |
このように、Nullルートはロンゲストマッチの規則と組み合わせて働く。
そのほかの使い方
| 使い方 | 内容 |
|---|---|
| 経路集約の広告 | BGPで集約した経路を広告するとき、ルータの中に集約経路のNullルートを置いておく。集約範囲の中の一部の経路が消えても、ループを防げる |
| DDoS攻撃への対策 | 攻撃を受けているアドレス宛ての通信を、上流のルータで捨てる(RTBH:リモートトリガーブラックホール) |
| 不要な宛先の遮断 | 特定の宛先への通信を、経路の段階で捨てる |
午後での問われ方
「Nullルートを設定しない場合、未使用のアドレス宛てのパケットを、ルータはどのように処理するか」に対しては、ホップリミットが0になるまで相互に転送し合い、廃棄する、という流れを答える。また、Nullルートとデフォルトルートの両方に一致するパケットでNullルートが選ばれる理由は、ロンゲストマッチである。