En utilisant iproute2, vous pouvez faire quelque chose comme ceci :
echo "1 admin" >> /etc/iproute2/rt_tables
echo "2 users" >> /etc/iproute2/rt_tables
ip rule add from 192.168.122.40/32 dev eth0 table admin
ip rule add from 192.168.123.41/32 dev eth1 table users
ip route add default via 192.168.122.1 dev eth0 table admin
ip route add default via 192.168.123.1 dev eth1 table users
Vous aurez maintenant deux tables de routage avec deux passerelles.
Ce phénomène est appelé unicast rpf (reverse path forwarding) en tant que filtre de chemin standard mais inversé sous Linux. Vous pouvez le désactiver sans conséquences négatives importantes (sauf si vous êtes un FAI... et un routeur).
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
Ensuite, votre exemple devrait fonctionner comme vous le souhaitez.