The setup:
I have multiple, static-key OpenVPN client/server configurations, labeled "client1", "client2", and "client3" with server/client IPs 10.10.1.1/10.10.1.2, 10.10.2.1/10.10.2.2, and 10.10.3.1/10.10.3.2, respectively, hosted on one Linux server and one Linux client (with three openvpn processes each, each with a different tunX interface). I have three users on my Linux client machine, user "client1", "client2" and "client3". I have my server setup to do NAT so that incoming traffic from client1 on 10.10.1.2 goes out to the Internet (via -j SNAT in iptables) from one IP, client2 on 10.10.2.2 out another IP, etc.
The problem:
What I don't have is a way for the client Linux machine to properly route traffic from each user to the proper OpenVPN server IP over it's OpenVPN tunnel. Essentially, I am wanting all Internet-destined traffic from client1 to go out one internet-facing IP on the OpenVPN server, traffic from client2 to go out another, and so on and so forth for as many users as I'd like to add. But this must all be done from ONE machine hosting all the different client users. I am aware of an iptables functionality involving marking packets by user ID and then setting up IP routing based on these marks, but I don't know how to actually achieve it.
Are there any iptables/netfilter/etc gurus out there that can help me in this matter?