Linux が短いプレフィックスを選択するのはなぜですか? (strongSwan、表 220)

Linux が短いプレフィックスを選択するのはなぜですか? (strongSwan、表 220)

次の 2 つのルートがあります。

# ip ro show table 0|grep 10.250
10.250.0.0/16 via 10.80.1.1 dev ens5 table 220 proto static src 10.80.1.76 
10.250.1.4 via 10.80.1.45 dev ens5 

最初のものは strongSwan によって管理されるテーブル 220 からのものであり、もう 1 つはテスト用に手動で作成したものです。

明示的な/32ルートが常に勝つと予想していますが、

# ip ro get 10.250.1.4
10.250.1.4 via 10.80.1.1 dev ens5 table 220 src 10.80.1.76 uid 0 
    cache 

Linux では依然として が優先されます/16

なぜそうなるのでしょうか?

答え1

これはstrongSwanがポリシールーティングを使用しているためです。これを説明するのに欠けている部分は、ip rulestrongSwan によって設定される追加のエントリは通常次のようになります。

# ip rule
0:  from all lookup local
220:    from all lookup 220
32766:  from all lookup main
32767:  from all lookup default

ルーティングルールさまざまなルーティングを参照するために、優先順(上に表示されている順序)でトラバースされます。テーブルルートが見つかるまで(またはルートが見つからない場合(デフォルトルートがどこにもなかったり、「ネガティブ」ルートが存在する場合)、次のようなエラーがNetwork is unreachable返されます)。ルーティングルールの優先順位220は、標準ルーティングルールの優先順位32766の前に実行されるため、ルーティングテーブル220が最初にチェックされます。ルーティングテーブル220では、10.250.0.0/16が10.250.1.4に一致するため、ルートが見つかりました。ルートの評価はここで停止し、後のテーブルで何が選択されたとしても、主要この宛先のルーティング テーブルには到達できません。

の結果がip route get ...他のルーティングテーブルを示している場合地元主要(またはテーブルデフォルト通常の場合のように空のままになっていない場合、このテーブルを参照するルーティング ルールが存在する必要があり、 を使用して表示できることを意味しますip rule

他の多くのポリシーベースルーティング場合によっては、「ワイルドカード」ではなく追加のセレクターが存在しますfrom all。通常は、送信元 IP アドレス/ネットワークまたは着信インターフェイスが使用されます。これも通常のルーティング結果を変更するためです。ポート、UID など、他の可能性もあります。宛先 IP アドレス/ネットワークは通常のルート エントリによって既に選択されているため、ルーティング ルールでセレクターとして使用されることはほとんどありません。

関連情報