iptables - nach reboot weg. howto?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
sdi2
Beiträge: 7
Registriert: 15.10.2009 15:47:01

iptables - nach reboot weg. howto?

Beitrag von sdi2 » 15.10.2009 15:59:49

Hallo,

ich hoffe ihr könnt mir weiterhelfen :)

Ich habe einen ded. SRV bei einem Hoster, wo ich vmware laufen habe.
Jetzt habe ich eine Installationsart ausgewählt, wo der traffic zu den vmware-Gästen genatted wird (http://wiki.hetzner.de/index.php/VMware ... %BCber_NAT.

Es funktioniert soweit alles.
Ich mußte dafür 2 iptables regeln in der shell ausführen:

Code: Alles auswählen

iptables -t nat -I PREROUTING -d 188.40.x.x -j DNAT --to 192.168.2.250
iptables -t nat -I POSTROUTING -s 192.168.2.250 -j SNAT --to 188.40.x.x
Damit funktioniert das routing einwandfrei.

Jedoch nach einem Reboot des Hosts/Servers ist das Routing natürlich weg.

Meine Frage:
Wie kann ich obige 2 iptables reglen permanent machen, sodaß sie automatisch bei jedem Neustart wirken?

Danke für eure geschätzte Hilfe!

Benutzeravatar
Baer
Beiträge: 373
Registriert: 08.09.2004 17:09:13
Wohnort: Zürich

Re: iptables - nach reboot weg. howto?

Beitrag von Baer » 15.10.2009 16:17:05

Code: Alles auswählen

#! /bin/bash
IPT=iptables
SSH=22
case "$1" in
        start)

        echo 1 > /proc/sys/net/ipv4/ip_forward
        iptables -t nat -I PREROUTING -d 188.40.x.x -j DNAT --to 192.168.2.250
        iptables -t nat -I POSTROUTING -s 192.168.2.250 -j SNAT --to 188.40.x.x
        ;;
        stop)
        echo "stop"
        echo removing iptables rules
        echo 0 > /proc/sys/net/ipv4/ip_forward
        for T in filter nat mangle ; do
                $IPT -t $T -F
                $IPT -t $T -X
        done
        $IPT -P INPUT ACCEPT
        $IPT -P OUTPUT ACCEPT
        $IPT -P FORWARD ACCEPT

        ;;
        restart)
        echo "restart"
                $0 stop
                $0 start
        ;;
 
        *)
        echo "Usage: $0 {start|stop|restart|}"
;;

esac

Init skript in in solcher Form erstellen

in /etc/init.d ablegen

Code: Alles auswählen

udate-rc.d scriptname 
und gut ist



[EDIT]
und im übrigen: Willkommen im Forum!

sdi2
Beiträge: 7
Registriert: 15.10.2009 15:47:01

Re: iptables - nach reboot weg. howto?

Beitrag von sdi2 » 15.10.2009 18:45:19

boah.. und das hast du jetzt bloß so runtergeschrieben?

Sollte ich das auch verstehen?

ich war hier schon registriert (username: sdi).. aber der geht nimma

sdi2
Beiträge: 7
Registriert: 15.10.2009 15:47:01

Re: iptables - nach reboot weg. howto?

Beitrag von sdi2 » 15.10.2009 19:19:27

Code: Alles auswählen

hz10:/etc/init.d# update-rc.d routing-vmware
usage: update-rc.d [-n] [-f] <basename> remove
       update-rc.d [-n] <basename> defaults [NN | SS KK]
       update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .
                -n: not really
                -f: force
hab ich das richtig gemacht?

Code: Alles auswählen

hz10:/etc/init.d# chmod 755 routing-vmware
hz10:/etc/init.d# update-rc.d routing-vmware defaults
update-rc.d: warning: /etc/init.d/routing-vmware missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/routing-vmware ...
   /etc/rc0.d/K20routing-vmware -> ../init.d/routing-vmware
   /etc/rc1.d/K20routing-vmware -> ../init.d/routing-vmware
   /etc/rc6.d/K20routing-vmware -> ../init.d/routing-vmware
   /etc/rc2.d/S20routing-vmware -> ../init.d/routing-vmware
   /etc/rc3.d/S20routing-vmware -> ../init.d/routing-vmware
   /etc/rc4.d/S20routing-vmware -> ../init.d/routing-vmware
   /etc/rc5.d/S20routing-vmware -> ../init.d/routing-vmware
hz10:/etc/init.d#


Benutzeravatar
Baer
Beiträge: 373
Registriert: 08.09.2004 17:09:13
Wohnort: Zürich

Re: iptables - nach reboot weg. howto?

Beitrag von Baer » 16.10.2009 01:39:21

das ist die Kopie meines FW-skripts einfach mit deinen Regeln drin.


Ja das hast du richtig gemacht. :)

und ja, du solltest das verstehen, ist ja dein routing :) :) :)

ist aber gar nicht so schwierig

Code: Alles auswählen

#! /bin/bash       #So beginnen Skripts immer (kann auch /bin/sh für die Standard Shell, /bin/ksh für kornshell oder ........ sein)


case "$1" in    #beginn eines Switchs ( Variablen werden mit $aufgerufen, $0 ist der Befehl selber $1 das erste Argument und so weiter)
        start)      #wen das erste Argument start ist tu folgendes.

        ;;           #ende des ersten Cases.
        stop)


        ;;
        restart)



        ;;

        *)            # der Asterisk(*) ist wildecard für keines oder beliebig viele Zeichen, also in allen Anseren fällen
        echo "Usage: $0 {start|stop|restart|}"
;;

esac                  #ende des Skripts

das ist so ein Standard Aufbau eines init-Skrips

Wie du der Ausgabe von update-rc.d entnehmen kannst werden symlinks in den /etc/rcX.d/ Ordnern angelegt. Wenn die Linknamen mit k(ill) beginnen werden die Skripts mit dem "Stop" Argument ausgeführt, wen sie mit s(tart) beginnen werden sie mit dem "Start" Argument ausgefürt.

Code: Alles auswählen

echo 1 > /proc/sys/net/ipv4/ip_forward
schreibt eine 1 nach /proc/sys/net/ipv4/ip_forward, das bewirkt das Routing aktiviert wird, Steht eine 0 dort ist Routing deaktiviert.


Der Stopteil löscht alle Iptables Regeln und Setzt die policy auf ACCEPT, wenn du dieses skript mit stop ausführst ist dein System also offen wie ein Scheunentor.

Dieses "Skript" wahr eigentlich nicht dazu gedacht 1:1 übernommen zu werden sondern sollte mehr als Beispiel dienen. Vor allem den Stopteil solltest du dir nochmals anschauen, dort reicht es eigentlich wenn du deine Regeln wieder entfernst.

LG Urs

Antworten