No real need to explain the problem too in depth. A Linux machine with multiple interfaces accepts a packet on one interface but sends the reply out of another. Not going to work in the bulk of situations.
Darian has already written a great how to guide on how to implement source based routing on a Linux host.
A link is all that is required: