カーネルを備えたLinuxマシンがあります.2.0-23-genericそして、RPDBに「220」という名前のルーティングテーブルを指す優先度220のルールがあります。
T42:~# ip rule show
0: from all lookup local
220: from all lookup 220
220: from all lookup 220
32766: from all lookup main
32767: from all lookup default
T42:~# ip route show table 220
T42:~#
このルールがどこから来たのかを確認することは可能ですか?空のルーティングテーブルのポイントは何ですか?最後になりましたが、同じ優先度を持つ複数のルールがどのように存在するのでしょうか。
このルールがどこから来たのかを確認することは可能ですか?
「このルールのソースをどこで検索できるか」という意味ではありません。問題を調査する方法はいくつかあります。最も明白なのは、システム上のすべての起動スクリプトをgrep
にして、どのスクリプトがip rule
まったく、それからそれらを読み始めます。または、システムをシングルユーザーモードで起動し、コマンドラインからstrace
を使用してサービスを1つずつ起動することもできます。または、bash
をinitとしてシステムを起動することもできます(カーネルコマンドライン:init=/bin/bash
)、そしてあなたは本当の/sbin/init
とstrace
。これらは起動アクティビティを追跡するためのかなり高度な方法です。実行するスクリプトを知ることは簡単ではないかもしれません...
特定のルールが管理者であるかハッカーが手動で入力したものであり、システムに存在するスクリプトではない場合、特定のルールがどこから来たのかを知る方法はありません。
空のルーティングテーブルのポイントは何ですか?
何もない-誰かがそのテーブルに入力し始めるまで。これはデーモンである可能性があり、最初に独自のテーブルのルールを入力し、次に独自のルーティングテーブルの内容を動的に変更します。
同じ優先度の複数のルールを作成するにはどうすればよいですか?
priority PREFERENCE ---このルールの優先度。各ルールには、明示的に設定された一意の優先度値が必要です。優先度は符号なし32ビット数であるため、4294967296の可能なルールがあります。
警告!
歴史的な理由から、ip rule addは優先度の値を必要とせず、優先度の値を一意でないものにすることができます。ユーザーが優先度の値を指定しなかった場合、カーネルによって割り当てられました。ユーザーが既存の優先度の値でルールの作成を要求した場合、カーネルは要求を拒否せず、のすべての古いルールの前に新しいルールを追加しました。同じ優先度。これは現在の設計の誤りであり、それ以上のものではありません。これを読むまでに修正されるはずなので、この機能に頼らないでください。ルールを作成するときは、常に明示的な優先順位を使用する必要があります。
それはおそらくstrongSwanのルーティングテーブルです:
Linuxでは、strongSwanはデフォルトでルーティングテーブル220にルートをインストールするため、カーネルがポリシーベースのルーティングをサポートする必要があります。
ソース: https://wiki.strongswan.org/projects/strongswan/wiki/IntroductionTostrongSwan