Use non default route as non privileged user

Solution 1:

See Per-process routing. Assuming the user is foo, the IP address of eth0 is 10.1.1.1, and the router is 10.1.1.254 :

iptables -t mangle -A OUTPUT -m owner --uid-owner foo -j MARK --set-mark 42
iptables -t nat -A POSTROUTING -o eth0 -m mark --mark 42 -j SNAT --to-source 10.1.1.1
ip rule add fwmark 42 table 42
ip route add default via 10.1.1.254 dev eth0 table 42

You'll also need sysctl net.ipv4.conf.eth0.rp_filter=0.