Comment faire du NAT sur deux WAN avec Linux

Dernière Mise à jour le

Vous avez une machine Linux avec deux sorties WAN et vous souhaitez faire du NAT selon la source.
Cet article donne brièvement les explications pour faire du NAT selon la source sur Linux

Comment faire du NAT sur deux WAN avec Linux

Voici le cas observé avec trois cartes :

  • eth0 en 192.168.1.0/24 : il s’agit de la carte ethernet reliée au routeur et à la connexion internet.
  • eth1 : il s’agit d’une carte ethernet sur laquelle on peut brancher un équipement réseau où on veut effectuer du NAT. Un serveur DHCP s’y trouve qui distribue des IPs en 192.168.2.0/24.
  • tap0 : carte virtuelle VPN, on veut faire sortir les paquets provenant des équipements réseaux connectés en eth1 par cette interface.

Comment faire du NAT sur deux WAN avec Linux

Nater et créer les règles

Dans un premier temps, il faut créer les règles de NAT sur iptables, voici la règle à ajouter :

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o tap0 -j MASQUERADE

sans oublier d’autoriser la transmission de paquets entre interfaces :

sysctl -w net.ipv4.ip_forward=1

Pour rendre cette modification permanente après le redémarrage, modifier le fichier /etc/sysctl.conf et ajoutez :

net.ipv4.ip_forward=1

Ensuite il faut créer les règles de route qui vont bien.
Dans un premier temps, on créé une nouvelle table :

echo "102 t1" >> /etc/iproute2/rt_tables

Les deux première règles recréés la route par défaut (carte eth0) pour la table main, elle n’est pas obligatoire, on peut la fixer depuis la configuration interfaces.
puis on attache l’interface tap0 à la table t1.

ip route del default table main
ip route add default via 192.168.1.254 dev eth0 table main
ip route add default via 10.8.0.1 dev tap0 table t1

ensuite il faut créer une règle qui demande que tout ce qui vient de 192.168.2.0/24 soit attaché à la table t1.

ip rule add from 192.168.2.0/24 table t1

On peut donc créer d’autres règles selon la destination pour attacher à l’interface souhaitée et ainsi sortir par l’interface WAN désiré.

Comment faire du NAT sur deux WAN avec Linux

Il suffit ensuite d’effectuer un test pour vérifier que les paquets sortent bien par l’IP souhaitée.
A partir de là, il ne reste plus qu’à rendre ces règles persistante.
Cela peut-être fait de différentes manières :

  • Ajouter les règles dans /etc/network/interfaces avec des lignes du type :
    • post-up ip route add default via 192.168.1.254 dev eth0 table main
  • Ajouter les règles dans /etc/rc.local
  • Dans le cas où comme ici, il s’agit d’une interface openvpn, vous pouvez ajouter un script lors de la connexion, dans le fichier de configuration du client, ajoutez :
    • script-security 2
    • up /etc/openvpn/votrescript.sh

Trouver la solution sur le forum d'aide

Vous êtes arrivé au terme de l'article Comment faire du NAT sur deux WAN avec Linux mais vous n'avez pas trouvé la solution à votre problème...
Suivez ces articles du forum pour trouver une réponse ou demandez à votre tour de l'aide sur le forum


Vous avez trouvé cet article utile et interressant, n'hésitez pas à le partager...
Une question informatique ?
Un virus à supprimer ? Votre PC est lent ?
Demander de l'aide sur le forum

Laisser un commentaire

0 Partages
Tweetez
Partagez
Enregistrer
Partagez