Après un peu plus de recherche, j'ai trouvé ce fil :https://forum.linode.com/viewtopic.php?p=50114&sid=b440414422596bb7dbc96cf7c9ee511f#p50114
J'ai maintenant modifié mon script OpenVPN "route-up" comme suit, et ça marche enfin ! J'ai supprimé toutes les autres règles désordonnées (iptable PREROUTING, MASQUERADE, etc.).
Voici mon dernier script "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
Où x.x.x.x est l'adresse IP publique de mon serveur, y.y.y.y/y est le sous-réseau de l'adresse IP publique de mon serveur, ethX est l'interface Ethernet publique de mon serveur et z.z.z.z est la passerelle par défaut.
J'espère que cela pourra aider quelqu'un d'autre.
Après avoir moi-même traversé la même épreuve, j'ai trouvé au moins un problème avec le script de routage.
iptables -t mangle -A PREROUTING ...
devrait être :
iptables -t mangle -A OUTPUT ...
Découvrez pourquoi ici :http://www.iptables.info/en/structure-of-iptables.html
Je n'ai pas eu à activer le transfert IP.