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
はip route
の2行目を成功させているようです。したがって、宛先IPが10.10.10.10であっても、送信元IPがtest-interface
であれば、パケットは10.8.23.0/28
経由で送信されます。
ソースIPがルールに一致する場合でも、10.10.10.10 via 10.10.10.1 eth1
がì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よりも優先されます。
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