大規模なルータを管理していると、利用者それぞれに応じて、 違ったやり方でサービスを提供しなければならないことがよくあります。 ルーティングポリシーデータベースで複数のルーティングテーブルセットを 用いると、これが可能となります。
この機能を利用したい場合は、カーネルのコンパイルの際に "IP: advanced router" と "IP: policy routing" の各機能を 有効にする必要があります。
カーネルはルーティングの判断をする際に、 どのテーブルにあたるべきかをまず決定します。 デフォルトでは 3 つのテーブルがあります。 古い 'route' ツールは、main テーブルと local テーブルを変更します。 デフォルトでは ip ツールも同様です。
デフォルトのルールは:
[ahu@home ahu]$ ip rule list 0: from all lookup local 32766: from all lookup main 32767: from all lookup default |
これはすべてのルールの優先度の一覧です。 すべてのルールがすべてのパケット ('from all') に適用されることがわかります。 以前にも 'main' テーブルは見ています (ip route ls で出力されたものです)。 しかし 'local' テーブルと 'default' テーブルは今回が初めてです。
凝ったことをするには、別のテーブルを指すルールを生成します。 これによってシステムワイドのルーティング規則を上書きできるのです。
複数のマッチルールがあるときにカーネルがどのように動作するかに関する 正確な仕組みについては、Alexey の ip-cref 文書を見てください。