.png)
次の 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 rule
strongSwan によって設定される追加のエントリは通常次のようになります。
# 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 アドレス/ネットワークは通常のルート エントリによって既に選択されているため、ルーティング ルールでセレクターとして使用されることはほとんどありません。