(This has been discussed with Alexey, but sending to the list for
general consumption).
Here is how to reproduce this:
ifconfig eth1 192.1.1.2 netmask 255.255.255.0
ifconfig eth2 192.1.2.2 netmask 255.255.255.0
Set up policy based routing with the 'ip' tool to make packets with
source-address of each interface to use the gateway for that interface.
Set gateway for eth1 to be 192.1.1.1
Set gateway for eth2 to be 192.1.2.1
Now, use ping to try to send pkts from one interface to the other:
ping -I 192.1.1.2 192.1.2.2
You will see arps on eth1 for 192.1.2.2, whereas you should see packets
being sent to the default gateway for eth1.
If you modify the ping source to BINDTODEVICE eth1, then it will send
correctly. I am under the impression that you should not have to specifically
BINDTODEVICE in this case since the policy based routing should take care of
routing things correctly. Or, maybe, the real bug is in ping in that it did
not BINDTODEVICE?
Also, ping -I eth1 192.1.2.2 will fail to route externally. That may
just be a feature of ping: I'm unsure what the subtle difference is *supposed*
to be between using -I eth1 and -I 1.2.3.4
Thanks,
Ben
--
Ben Greear <greearb@xxxxxxxxxxxxxxx> <Ben_Greear AT excite.com>
President of Candela Technologies Inc http://www.candelatech.com
ScryMUD: http://scry.wanfear.comhttp://scry.wanfear.com/~greear