David BERCOT a écrit :
iptables -t nat -A OUTPUT -d ip_monserveur1 -p tcp --dport 80 \ -j DNAT --to ip_monserveur2:81Alors ok, c'est exactement ce que je voulais. Maintenant, ça ne travaille que sur les adresses IP ? En fait, dans mon cas, le serveur1 peut changer d'adresse IP et là, je suis cuit ;-) Donc, en fait, est-ce qu'iptables sait utiliser aussi des noms de machine et pas seulement des adresses IP ?
La partie userland d'iptables (la commande iptables servant à manipuler les règles) est capable de faire une résolution de nom pour convertir un nom de domaine passé comme paramètre source ou destination en adresse IP. Mais la partie noyau d'iptables, celle qui exécute les règles, ne travaille que sur les adresses IP. Plus généralement, le noyau lui-même ignore tout des résolutions DNS. Dans le cas d'iptables, ça se comprend aisément : un paquet se présente, pour appliquer la règle je dois faire une résolution DNS, donc j'envoie un paquet de requête DNS, auquel j'applique les règles iptables, donc je fais une résolution DNS... Ce serait une boucle sans fin.
Il sera donc nécessaire de réécrire la règle iptables à chaque changement d'adresse de monserveur1.
Cette règle est-elle enregistrée définitivement ou est-ce que, si je redémarre la machine, elle n'est plus opérationnelle ?
De manière générale sous Linux, toute la configuration dynamique est volatile et se réinitialise aux valeurs par défaut après chaque redémarrage ; cela concerne les règles iptables, les paramètres sysctl, la configuration des interfaces réseau, etc. Seul ce qui est enregistré dans un fichier a une chance de survivre à un redémarrage. Il va donc falloir trouver ou créer un script de démarrage ou un fichier de configuration contenant la règle iptables.