Usando iproute2 puoi fare qualcosa del genere:
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
Ora avrai due tabelle di routing con due gateway.
Questo fenomeno è chiamato unicast rpf (reverse path forwarding) come filtro di percorso inverso standard in Linux. Puoi disabilitarlo senza conseguenze negative importanti (a meno che tu non sia un ISP.. e un router).
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
Quindi il tuo esempio dovrebbe funzionare come desideri.