IPFire Source NAT : modifier l'adresse IP de sortie

De wikiGite

Quand le firewall fait du NAT entre plusieurs adresses IP publiques (aliases) et plusieurs serveurs interne, le transfert de port suffit pour rediriger les paquets entrants vers le bon serveur à l'intérieur, sur le réseau local.

Mais quand un de ces serveurs est, par exemple, un serveur de mails, les mails sortant sont marqués comme venant le l'interface par défaut du firewall (IP principale), qui n'est pas forcément l'alias IP qu'on a assignée au serveur mail. Du coup, ça ne facilite pas la gestion des reverse DNS et des enregistrements SPF (ni des éventuels blacklistings !).

Pour forcer une réécriture des paquets venant d'un serveur mail interne (ex.: 192.168.1.10), vers une IP alias précise du firewall en sortie (ex.: 123.45.67.8) , ajouter dans /etc/sysconfig/rc.local du pare-feu :

iptables -t nat -D POSTROUTING -p all -s 192.168.1.10 -j SNAT --to-source 123.45.67.8
iptables -t nat -I POSTROUTING 1 -p all -s 192.168.1.10 -j SNAT --to-source 123.45.67.8

Note : la première ligne avec "-D" supprime la règle au cas où elle existe déjà, ce qui évite les doublons.

Pour que ce soit pris en compte tout de suite, lancer cette instruction directement sur la ligne de commande.

Automatisation

Le problème ici est que les règles firewall sont vidées et reconstruites à chaque modification dans le WebGUI. On va donc forcer la relecture du rc.local.

Copier un des fichiers de /etc/init.d/networking/red.up (le script de destination aura ainsi les bons droits sans se fatiguer :) )

cp /etc/init.d/networking/red.up/30-ddns /etc/init.d/networking/red.up/99-SNATRules

Editer 99-SNATRules pour qu'il ressemble à ça :

#!/bin/bash
/etc/sysconfig/rc.local
exit 0