私は彼らのpackets
source
に基づいてaddress
をルーティングしようとしています、そして以下を追加しました:
# ip rule add from 10.10.10.0/16 dev eth0 table foobar
# ip route add default via 100.100.100.1 dev eth0 table foobar
ただし、ルーティングをテストすると、間違ったvia
アドレスが表示されます。
# ip route get 4.3.2.1 from 10.10.10.1
4.3.2.1 from 10.10.10.1 via 100.0.0.1 dev eth0
なぜこれが尊重されないのですか?
これは私の通常のroutes
です
# ip route list
default via 100.0.0.1 dev eth0
そして
# ip route show table foobar
default via 100.100.100.1 dev eth0
そして
# ip rule list
0: from all lookup local
32765: from 10.10.10.0/16 iif eth0 lookup foobar
32766: from all lookup main
32767: from all lookup default
あなたの問題は問題ではありません。ルールでは、送信元アドレスだけでなく、入力インターフェイスの照合も使用します。したがって、「問題」を解決するには2つの方法があります。
dev eth0
を使用しないでくださいiif eth0
コマンドにip route get...
を追加します。 iif
オプションを使用すると、ip route get
コマンドでローカル以外のアドレスを使用できるため、次のようなものを使用できます:ip route get 4.3.2.1 from 10.10.20.253 iif eth0