Nun...
Nach Tausenden von Stunden Debuggen, Ausprobieren verschiedener Setups und 72 Stunden intensiven Testens in der Produktion konnte ich die richtige Lösung/Setup finden, das Problem lag in den iptables-Regeln (Mangle-Abschnitt), die Pakete wurden anscheinend direkt markiert, als sie eintrafen aber als sie herauskamen, gab es keine für dnat'ted Pakete, jedenfalls hier ist meine endgültige funktionierende Lösung für mein Problem:
/etc/sysconfig/iptables :
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Basic Rules
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT
# SSH
-A INPUT -i eth0 -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth2 -m tcp -p tcp --dport 22 -j ACCEPT
# OpenVPN
-A INPUT -i eth0 -m udp -p udp --dport 1194 -j ACCEPT
-A INPUT -i eth2 -m udp -p udp --dport 1194 -j ACCEPT
# Allow everything from LAN
-A INPUT -i eth1 -j ACCEPT
# Allow everything from the VPN
-A INPUT -i tun0 -j ACCEPT
# Default Drop on everything else
-A INPUT -j DROP
# Allow forwarding from LAN and VPN
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
# Allow all outbound traffic
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# DNAT to Developer Box (SSH Server)
-A PREROUTING -i eth0 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 10.0.0.200:2222
-A PREROUTING -i eth2 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 10.0.0.200:2222
# SNAT
-A POSTROUTING -o eth0 -j SNAT --to-source 10.0.1.1
-A POSTROUTING -o eth2 -j SNAT --to-source 10.0.2.1
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# CONNMARK Source Based Routing
-A PREROUTING -i eth0 -m state --state NEW,RELATED,ESTABLISHED -d 10.0.1.1 -j CONNMARK --set-mark 0x2
-A PREROUTING -i eth2 -m state --state NEW,RELATED,ESTABLISHED -d 10.0.2.1 -j CONNMARK --set-mark 0x3
-A PREROUTING -i eth1 -m connmark --mark 0x2 -j CONNMARK --restore-mark
-A PREROUTING -i eth1 -m connmark --mark 0x3 -j CONNMARK --restore-mark
-A OUTPUT -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
COMMIT
Offensichtlich wurden die Lösungen zuzüglich des gesamten vorherigen Setups in Bezug auf iproute und gwping (für Link-Lastausgleich und Failover) dank der Quellen [1] und [2] ermöglicht, die mich beide auf einen anderen Teil verwiesen (Luca Gibelli für den PREROUTING-Teil und Karl Bowden für den OUTPUT-Teil) der Lösung, außerdem lebe ich hier einige weitere Quellen für andere Websites, die mich in die richtige Richtung zum Suchen wiesen. Ich hoffe, dies hilft einem anderen Systemadministrator in der Zukunft.
Mit freundlichen Grüßen
Quellen:
[1]www.nervous.it/2010/09/dnat-and-ip-source-routing-woes/
[2]blog.khax.net/2009/12/01/multi-gateway-balancing-with-iptables/
[3]home.regit.org/netfilter-en/links-load-balancing/
[4]mailman.ds9a.nl/pipermail/lartc/2006q2/018964.html
[5]web.archive.org/web/20120320115329/http://versa.net.au/index.php?option=com_content&task=view&id=21&Itemid=34
Aktualisierung 10.10.2013
OpenVPN benötigt eine zusätzliche Konfigurationsdirektive, um mit einem multiplen WAN-Setup zu arbeiten (wie das vorherige), also fügen Sie einfach die Multihome-Option in Ihrer server.conf hinzu (OpenVPN>=2.1, für niedrigere Versionen ändern Sie einfach die lokale Direktive so, dass sie nur in a bestimmte IP) und Sie können loslegen.