Linux のルーティング状態は、IP 宛先に対してどの次ホップ、インターフェース、送信元を利用できるか決めます。従来の route -n 表示を見かけることもありますが、ip route のほうが現代のカーネルのルーティング概念を直接表します。
ルーティング · レッスン 2
ルーティングテーブル
Linux のルートを読み、宛先に対して選択されるルートを調べる方法を学びます。
IPv4 ルートを読む
出力例は次のようになります。
$ ip -4 route show
default via 192.168.224.2 dev eth0 proto dhcp src 192.168.224.10 metric 100
192.168.224.0/24 dev eth0 proto kernel scope link src 192.168.224.10 metric 100
接続済みの /24 ルートは、一致する宛先を eth0 から直接送ります。デフォルトルートは次ホップゲートウェイ 192.168.224.2 を使います。proto はルートが導入された方法、src は一致する通信で推奨される送信元を示し、metric は条件が同等のルートの順位付けに役立ちます。
via 192.168.224.2 は何を示しますか?
接続済みルートとデフォルトルート
scope link で via の次ホップを持たないルートは、プレフィックスをそのインターフェースから直接到達可能として扱います。デフォルトルートはすべてのアドレスに一致しますが、利用可能なより具体的なルートがあれば選ばれません。
接続済みの scope link 宛先には、通常どのように到達しますか?
プレフィックス長とメトリック
ルート選択はポリシールールを考慮し、利用可能な最長のプレフィックスを選びます。メトリックは適切に比較可能なルート群の中で順位を付けます。数値が低いデフォルトルートでも、一致する /24 より優先されるわけではありません。
192.168.224.50 に、通常より具体的に一致するルートはどれですか?
ポリシールールと複数テーブル
Linux は、送信元、mark、インターフェースなどのセレクターに基づく ip rule ポリシーに従い、複数のルーティングテーブルを参照できます。そのため main テーブルだけを見ても、実際の経路を把握できない場合があります。
$ ip rule show
$ ip route show table all
ネットワーク名前空間と VRF も別々の状態を持てます。影響を受けているプロセスと同じコンテキストで調べてください。
ip route show だけではアプリケーションの経路を説明できない場合があるのはなぜですか?
有効なルートを問い合わせる
宛先と、必要に応じて送信元を指定し、カーネルに評価させます。
$ ip route get 203.0.113.10
$ ip route get 203.0.113.10 from 192.168.224.10
結果は、その時点のローカル検索を予測します。プローブを送信するわけではなく、近隣、下流、ファイアウォール、アプリケーションへの到達性は証明しません。
ip route get が行わないことはどれですか?
レッスン完了
ルーティングテーブル を完了しました
これで、Linux のルーティングエントリを読み、有効なローカル判断を問い合わせられます。
接続済みルートとゲートウェイ経由のルートを区別する。
プレフィックス、インターフェース、プロトコル、送信元、メトリックを読む。
関連するメトリックの比較前に最長プレフィックス一致を適用する。
ポリシーテーブル、名前空間、VRF を考慮する。
ip route getを到達性テストではなく、検索として扱う。