IPTables Portforwarding speichert nicht

  • Hallo zusammen,


    leider speichert mein IPtables mein portforwarding nicht.
    Mein Hostsystem ist ein Ubuntu 14.04. Hierrauf befindet sich ein Apache als LXC Container.
    Mittel dem folgenden befehl

    Zitat

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.159:80

    leite ich die HTTP Anfrage vom Host an den Container weiter welches problemlos klappt. Starte ich mein Hostsystem neu und den Container ebenfalls, ist die IPtables Regel weg.
    Bei erneuter Eingabe der Regel nach Start des Systems klappt alles wieder problemlos.
    Woran kann es liegen?


    Desweiteren habe ich das problem, dass ich nicht immer per Console auf den LXC-Container rauf komme, da hilft immer nur der reboot. Jemand hierzu ebenfalls eine Idee?

  • iptables Regeln werden nicht gespeichert wenn Du dies nur als Befehl eingibst, da musst Du diese schon dauerhaft speichern und bei einem Neustart wieder laden. Am besten machst Du das mit einem Script, indem Du deine Regeln aufbaust, speicherst und nachher mit einem Script neu lädst.


    z.B.:


    Script unter /etc/init.d/firewall ablegen und mit „update-rc.d firewall defaults“ aktivieren. Es gibt natürlich auch noch ganz viele andere Wege und Möglichkeiten. Wichtig: hier fehlen natürlich noch die iptables Rules, welche Du in einer separaten Datei, sowohl für den Start als auch für den Stop, ablegst.


    Die Konfiguration lief unter Debian/Ubuntu, wie es mit anderen Distros aussieht kann ich nicht sagen.

  • Das ganze geht bedeutend einfacher, in dem du diese Befehle nutzt:


    Code
    iptables-save /etc/iptables.rules


    Code
    iptables-restore /etc/iptables.rules


    Der Pfad bleibt natuerlich dir ueberlassen, musst sie halt nur noch in dein init system einbinden. Damit die Befehle immer beim booten und beim herunterfahren ausgefuehrt werden, ansonsten muesstest du es immer manuell machen.

  • Oder du legst ein Skript unter /etc/network/if-up.d ab mit folgendem Inhalt:


    #!/bin/bash
    iptables-restore < /etc/iptables.conf


    iptables.conf erzeugst du dann mittels iptables-save > /etc/iptables.conf


    Diese Datei kannst du dann direkt mit neuen Einträgen füllen, die nach Starten der Netzwerkverbindung geladen werden.