5 votes

Permament iptables port forwarding ?

Je dois définir une règle pour rendre mon serveur web (qui fonctionne sur le port 7000) accessible sur le port 80 :

ptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000

Cela fonctionne parfaitement jusqu'à présent.

Mais si je redémarre le serveur, la règle disparaît. Que faut-il faire pour que cette règle soit permanente ?

Elias

8voto

TH310 Points 46

Quelle distribution GNU/Linux utilisez-vous ?

Pour Debian/Ubuntu, la solution simple est d'ajouter l'appel à iptables à un hook de post-up dans /etc/network/interfaces comme ça :

# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000

3voto

Sirex Points 5377

Sur les systèmes basés sur Red Hat/Fedora :

service iptables save

Et assurez-vous que le iptables est configuré pour démarrer au démarrage : chkconfig iptables on

2voto

pacey Points 3783

En gros, vous ajoutez les commandes iptables au script de démarrage du réseau afin qu'il soit exécuté lorsque votre connexion réseau est lancée.

Les fichiers à modifier diffèrent d'une distro à l'autre.

Si vous utilisez Ubuntu (et peut-être est-ce vrai pour Debian et d'autres aussi), vous pouvez utiliser les commandes suivantes iptables-save y iptables-restore pour sauvegarder la configuration lors des redémarrages.

0voto

Ricardo Zea Points 101

Pour Gentoo

vous pouvez ajouter cette ligne à /etc/conf.d/local.start

0voto

Zsolt Sz. Points 347

Plutôt que d'appeler iptables à plusieurs reprises, je suggère les étapes suivantes :

[1] Configurer iptables à votre convenance (blocs, antispoofs, redirections, etc.)

[2] Sauvegarder la configuration d'iptables :

    iptables-save > /etc/my-iptables.conf

(Ou utilisez un nom de votre choix)

[3] Créez un script (par ex. /etc/my-iptables-init.sh ) contenant ces lignes :

    #!/bin/bash
    iptrest="<location_of_iptables-restore>"
    cat="/bin/cat"
    conf="/etc/my-iptables.conf"
    #
    $cat $conf | $iptrest

(Certaines personnes disent que iptables-restore < /etc/my-iptables.con parfois ne fonctionne pas)

[4] Appelez ce script depuis... où vous voulez. Peut-être /etc/network/interfaces ou (ma préférence) /etc/rc.local.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X