私は 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