Po trochu dalším hledání jsem našel toto vlákno:https://forum.linode.com/viewtopic.php?p=50114&sid=b440414422596bb7dbc96cf7c9ee511f#p50114
Nyní jsem upravil svůj skript OpenVPN „route-up“ následovně a konečně to funguje! Odstranil jsem všechna ostatní chaotická pravidla (iptable PREROUTING, MASQUERADE atd.).
Zde je můj závěrečný skript "route-up":
ip route flush table 100
ip route flush cache
ip rule add from x.x.x.x table 100
ip route add table 100 to y.y.y.y/y dev ethX
ip route add table 100 default via z.z.z.z
Kde x.x.x.x je veřejná IP mého serveru, y.y.y.y/y je podsíť veřejné IP adresy mého serveru, ethX je veřejné ethernetové rozhraní mého serveru a z.z.z.z je výchozí brána.
Doufám, že to pomůže někomu dalšímu.
Poté, co jsem sám prošel stejnou zkouškou, našel jsem alespoň jeden problém se skriptem route-up.
iptables -t mangle -A PREROUTING ...
by mělo být:
iptables -t mangle -A OUTPUT ...
Přečtěte si o tom proč zde:http://www.iptables.info/en/structure-of-iptables.html
Nemusel jsem zapínat předávání IP.