Forum Linux.debian/ubuntu garder ma config. iptable

Posté par  (site web personnel) .
Étiquettes : aucune
0
6
juin
2005
Bonjour,

Je suis entrain de monter un serveur sous sarge et j'ai configuré grâce à des howto un magnifique iptable. Mon soucis est que en cas de redémarrage de la machine il perd alors toute sa configuration ce que je trouve fort génant et la je ne vois pas ou je dois aller/chercher pour que la configuration reste (et google ne m'en dit pas plus). Si quelqu'un pouvait me renseigner j'en serai très heureux.

Merci.
  • # iptables-restore

    Posté par  . Évalué à 1.

    iptables-save > ton_fichier dans un script à l'arret
    iptables-restore < ton_fichier au boot
  • # script ou iptables-save

    Posté par  . Évalué à 1.

    Il y a au moins 2 façons de faires :

    - La première, c'est d'utiliser iptables-save => man iptables-save.
    Je connais pas, mais le magnifique tuto de christian caleca => http://christian.caleca.free.fr/netfilter/iptables.htm(...) utilise cette méthode.

    - La deuxième, c'est de faire un script iptables.sh par exemple, de le mettre dans /etc/init.d/, de le rendre executable et de créer les liens dans /etc/rcX.d/.

    Je préfère la deuxième, y a rien de particulier a savoir, c'est un bête script shell ... juste commence ton script avec #!/bin/bash et enchaine tes commandes iptables.
    • [^] # Re: script ou iptables-save

      Posté par  (site web personnel) . Évalué à 2.

      Pourrais tu me dire quel lien tu crees car je ne sais pas trop quoi mettre la car je ne vois le lancement de l interface reseau qu au runlevel 0 ce qui me parait bisarre.
      • [^] # Re: script ou iptables-save

        Posté par  . Évalué à 1.

        man inittab pour commencer, et va jeter un oeil sur /etc/inittab aussi ... le runlevel 0 sert à arreter ta machine, donc je pense pas que tes interfaces resaux se lance ici :)

        Le runlevel par défaut sous debian est 2. C'est configurable via /etc/Inittab.
        Ton interface réseau est lancé par un lien dans /etc/rc2.d/ qui pointe sur /etc/init.d/networking.

        Le liens a créer dans ton cas est celui de /etc/init.d/tonscript_iptables vers /etc/rc2.d/

        donc

        # ln -s /etc/init.d/tonscript_iptables /etc/rc2.d/S20tonscript_iptables

        devrait faire l'affaire.

        Ma façon de faire à le mérite de marcher "partout" ... celle de Gerald est plus debian-style et plus propre ... à toi de choisir ce qui te plait le plus.
        • [^] # Re: script ou iptables-save

          Posté par  (site web personnel) . Évalué à 2.

          merci de ta reponse mais c est bien ce que je pensai pour mes rcX.d ils sont bien incomprensible


          stormbringer:/etc/rc0.d# ls
          K11cron K20makedev K89atd K91apache-ssl S35networking
          K20dhcp K20ssh K89hotplug-net S20sendsigs S36ifupdown
          K20exim4 K25hwclock.sh K89klogd S30urandom S40umountfs
          K20inetd K79nfs-common K90sysklogd S31umountnfs.sh S90halt
          K20lpd K86ppp K91apache S32portmap
          stormbringer:/etc/rc0.d# cd /etc/rc2.d/
          stormbringer:/etc/rc2.d# ls
          S10sysklogd S20dhcp S20makedev S89cron S99stop-bootlogd
          S11klogd S20exim4 S20ssh S91apache
          S14ppp S20inetd S21nfs-common S91apache-ssl
          S18portmap S20lpd S89atd S99rmnologin

          bon je vais voir du cote des inittab moi
  • # re

    Posté par  . Évalué à 4.

    A l'époque de la Debian woody, les règles de firewalling était chargées/déchargées via le script de démarrage /etc/init.d/iptables

    Avec la Sarge, la politique a changé, maintenant il faut activer le firewall lors du montage des interfaces réseaux.
    Exemple:

    iface eth0 inet static
    pre-up iptables-restore < /etc/network/iptables-rules
    address 192.168.1.1
    netmask 255.255.255.0
    gateway 192.168.1.10


    La commande "iptables-restore < /etc/network/iptables-rules" sera executée à chaque "ifup eth0"

    Si tu préfères comme moi la vieille méthode du /etc/init.d, voici un fichier iptables qui fera l'affaire:


    #!/bin/sh
    #

    ruleset_dir=/var/lib/iptables

    case "$1" in
    start)
    echo -n "Loading iptables active ruleset: "
    /sbin/iptables-restore < $ruleset_dir/active
    echo "done."
    ;;
    stop)
    echo -n "Loading iptables inactive ruleset: "
    /sbin/iptables-restore < $ruleset_dir/inactive
    echo "done."
    ;;
    force-reload|restart)
    $0 stop
    sleep 1
    $0 start
    ;;
    save)
    echo -n "Saving iptables ruleset: "
    cp $ruleset_dir/active $ruleset_dir/active-$(date +%Y%m%d_%H%M)
    /sbin/iptables-save > $ruleset_dir/active
    echo "done."
    ;;
    *)
    echo "Usage: /etc/init.d/iptables {start|stop|restart|force-reload}"
    exit 1
    esac

    exit 0


    Ensuite, tu crées les liens symboliques pr que ton script soit executé au démarrage de la machine:


    update-rc.d iptables defaults 30


    Le dernier chiffre définit l'ordre de lancement du script. Les interfaces réseaux étant montées en 40, il est plus sure d'activer le firewall avant celle ci, d'ou le choix du 30.

    Pour le script donné plus haut, tes règles doivent impérativement se trouver dans /var/lib/iptables/active et inactive (active loadé au start et inactive au stop).
    • [^] # Re: re

      Posté par  (site web personnel) . Évalué à 2.

      merci de ta reponse mais quelque chose me gene : j ai voulu faire comme la premiere metode que tu decrit et ca n a pas marche. j ai alors fait un iptables-restore et ca n as toujours pas marche.

      aussi dans ta deuxieme proposition, n etant pas un pro du bash pourrais tu m expliquer en gros ce qu il fait (ou il va chercher les regles d'iptables notamment) et a quel runlevel dois je faire pointer le lien car j ai beau examiner les repertoire /etc/rcX.d/ je ne vois pas ou ca doit aller.

      merci de me repondre.

      ps: j'aime comprendre ce que je fais alors desole si je devient embetant dans mes requettes mais en tout cas deja merci pour ton premier message qui est deja bien expliquer contrairement a certaine reponse que je vois des fois sur les forums
      • [^] # Re: re

        Posté par  . Évalué à 1.

        ba perso j m suis fais un ptit script iptables (rules-fw) que g mis ds /etc/init.d/ et change les droits avec un chmod +x pour qu il soit execute. et ensuite un ptit coup de update-rc.d rules-fw + les options que tu veux sur ton script pour le nivo de demarrage et c est partis :p Enfin sur ma woody j fais comme ca et g jamais de soucis au redemarrage.
      • [^] # Re: re

        Posté par  . Évalué à 1.

        Sa deuxième méthode est un script bash acceptant 5 arguments : start ; stop ; restart ; force-relaod et save qui n'est pas dans le Usage.

        Save justement te permet de récupérer ta config iptables présente et de la sauver dans sa variable $ruleset_dir (=/var/lib/iptables).

        Donc en gros, tu copies son script dans /etc/init.d/sonscript, tu le rend executable et tu fais un beau "/etc/init.d/sonscript save".

        En gros, d'après ce que j'ai compris, à chaque fois que tu change ta config, tu fais un save et le reste du temps, tu te contente de commande start ; stop ; restart ; etc ...

        Oublie pas de faire un liens dans /etc/rc2.d/ pour le lancer a chaque démarrage. (update-rc.d ou ln)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.