# Below is my routing setup. It works fine as long as my gateway
# is my default gateway from my main routing table.
# If I try to use my other gateway the NAT does not correctly map back to the originating IP.
# ex. 192.168.0.99 requests a page from google.com. Router rewrites the packet for with nated source.
# packet comes back from the server. Packet is never nated back to 192.168.0.99
#
# for the setup below this works
# iptables -t mangle -A PREROUTING -s 192.168.0.99 -j MARK --set-mark 1
# and the following doesn't
# iptables -t mangle -A PREROUTING -s 192.168.0.99 -j MARK --set-mark 2
#
# the only thing I need to change to get the other to work is change the default gateway in the main routing table
# What else needs to be done so it will work correctly?
#Table 1 routing
ip route add 10.10.10.128/26 dev eth0 src 10.10.10.145 table T1
ip route add 192.168.0.0/24 dev eth0 table T1
ip route add default via 10.10.10.131 table T1
ip route add 127.0.0.0/8 dev lo table T1
#Table 2 Routing
ip route add 10.10.0.5 dev ppp0 table T2
ip route add default via 10.10.0.5 dev ppp0 table T2
ip route add 192.168.0.0/24 dev eth0 table T2
ip route add 127.0.0.0/8 dev lo table T2
#Default Routing
ip route add 10.10.10.128/26 dev eth0 src 10.10.10.145
ip route add 10.10.0.5 dev ppp0 src 10.10.0.66
ip route add 192.168.0.0/24 dev eth0
ip route add 127.0.0.0/8 dev lo
ip route add default via 10.10.10.131
ip rule add from 10.10.10.145 table T1
ip rule add from 10.10.0.66 table T2
ip rule add fwmark 1 table T1
ip rule add fwmark 2 table T2
#Begin iptables nat setup
iptables --flush
iptables --delete-chain
iptables -t nat --flush
iptables -t nat --delete-chain
iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT
#port forwarding
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 22 -j DNAT --to 192.168.0.33:22
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 23 -j DNAT --to 192.168.0.35:22
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 873 -j DNAT --to 192.168.0.33:873
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 1040 -j DNAT --to 192.168.0.33:1040
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 5500 -j DNAT --to 192.168.0.15:5500
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 5900 -j DNAT --to 192.168.0.15:5900
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 80 -j DNAT --to 192.168.0.33:80
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 443 -j DNAT --to 192.168.0.33:443
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 873 -j DNAT --to 192.168.0.33:443
#Copyable VNC
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 5902 -j DNAT --to 192.168.0.99:5902
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 5901 -j DNAT --to 192.168.0.98:5900
#Copyable VNC listening route
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 5501 -j DNAT --to 192.168.0.98:5500
iptables -t nat -A PREROUTING -p tcp -d 10.10.0.66 --dport 5502 -j DNAT --to 192.168.0.99:5500
echo 1 > /proc/sys/net/ipv4/ip_forward