IPルールはIPルートに勝ってはいけません

IPルールはIPルートに勝ってはいけません

私は CentOS を実行しており、ルーティングにip routeと を使用しています。ip rule

私は現在ip rule

from 10.8.23.0/28 table 1234

そしてip route

default via 10.8.23.254 eth1
10.10.10.10 via 10.10.10.1 eth1
10.0.0.0/14 dev test-interface table 1234

ip ruleの 2 行目が成功したようですip route。そのため、宛先 IP が 10.10.10.10 であっても、test-interface送信元 IP が であればパケットは 経由で送信されます10.8.23.0/28

10.10.10.10 via 10.10.10.1 eth1ソース IP がルールに一致した場合でも、`p ルール` が確実に無視されるようにするにはどうすればよいですか? 意味が通じるといいのですが :)

テストのip route get 10.10.10.10結果:

10.10.10.10 via 10.10.10.1 dev eth1  src 10.8.23.1

しかし、ip route get 10.10.10.10 src 10.0.0.13私はこう思う:

10.10.10.10 via 10.10.10.254 dev test-interface  src 10.8.23.1

したがって、src IP宛先 IP よりも優先されます。

答え1

簡単に言えば、ip ruleこれはデフォルトのものだけでなく、より多くの IP ルーティング テーブルを作成/保持する方法です。

問題を解決するには、ip rule特定のルート ケースを処理するための別のエントリを追加する必要があります。たとえば、次のコマンドを使用できます。

$ sudo ip rule add to 10.10.10.10/32 lookup 123 priority 10

10ここでは、 が最初の になるほど小さいと想定していますip rule。 これは の出力に依存しますip rule ls。 優先度に従ってすべてのルールが表示されます (値が小さいほど優先度が高くなり、最初に表示されます)。

でソース チェックと宛先チェックを組み合わせる必要がある場合はip rule、以下を使用できます。

$ sudo ip rule add from 10.8.23.0/28 to 10.10.10.10/32 lookup 123 priority 10

テーブルには123次のような正しいルートが含まれている必要があります。

$ sudo ip route add 10.10.10.10/32 via 10.10.10.1 table 123

関連情報