ルーティングテーブルは、最も具体的なものから最も具体的なものの順に使用されます。
ただし、Linuxでは、予想より少し複雑です。まず、複数のルーティングテーブルがあり、どのルーティングテーブルを使用するかは、いくつかのルールに依存します。
完全な画像を取得するには:
$ ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
$ ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.1.27
local 192.168.1.27 dev eth0 proto kernel scope host src 192.168.1.27
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.27
$ ip route show table main
default via 192.168.1.254 dev eth0
192.168.0.0/23 dev eth0 proto kernel scope link src 192.168.1.27
$ ip route show table default
$
このlocal
テーブルは、ローカルおよびブロードキャストアドレス用の高優先度制御ルートを含む特別なルーティングテーブルです。
このmain
テーブルは、すべての非ポリシールートを含む通常のルーティングテーブルです。これは、単に実行するip route show
(またはip ro
略して)場合に表示されるテーブルでもあります。古いroute
コマンドはmain
テーブルのみを表示し、その出力形式は多少古くなっているため、古いコマンドは使用しないことをお勧めします。
テーブルdefault
は空で、以前のデフォルトルールがパケットを選択しなかった場合、後処理用に予約されています。
独自のテーブルを追加し、特定のケースでそれらを使用するルールを追加できます。1つの例は、2つのインターネット接続があるが、1つのホストまたはサブネットが常に1つの特定のインターネット接続経由でルーティングされる必要がある場合です。
Linuxでのポリシールーティングの本では、これらすべてを詳細に説明しています。