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:
Configuring Multiple Default Routes Linux