Iptables, roule ändern

Post Reply
Message
Author
User avatar
killerhippy
Posts: 529
Joined: 19. May 2000 19:36
Contact:

Iptables, roule ändern

#1 Post by killerhippy »

Hi, bestimmt ist mein Anliegen keine neue Idee, darum denke ich frage ich einfach mal, bevor ich das Rad neu erfinde:

Ich habe ein Packetfilterscript, dem ich die ssh von außen einer dynamischen IP Nummer erlaube, indem ich den DynDNS Namen abfrage.

Wenn sich die IP Nummer ändert, möchte ich die IP Nummer aktualisieren, damit der Zugang nicht geblockt wird. Das der event bemerkt wird, kann ich ja noch selbst scripten, aber mein Problem ist folgendes:

Zwar weiß ich, daß man mit Iptables rules ändern kann, jedoch weiß ich nicht, wie ich die Regelnummer herausfinden kann, um eine Regel zu ändern. Ein Hinweis, wie das zu machen ist, wäre schön...
Es gibt keine dumme Fragen!

Killerhippy

User avatar
killerhippy
Posts: 529
Joined: 19. May 2000 19:36
Contact:

Re: Iptables, roule ändern

#2 Post by killerhippy »

Nachdem bisher keiner darauf eine schlaue Antwort hatte, habe ich es inzwischen selbst herausgefunden:

Insgesamt gibt es für iptables lediglich drei Befehle, die auf eine Regelnummer zugreifen:

<b>
iptables [-t table] -I chain [rulenum] rule-specification [options]
iptables [-t table] -R chain rulenum rule-specification [options]
iptables [-t table] -D chain rulenum [options]
</b>

Und womit man "-D, --delete chain rulenum", "-I, --insert chain [rulenum] rule-specification" und " -R, --replace chain rulenum rule-specification" betreiben kann.

Leider kann iptables die Regelnummern nicht auflisten, geschweige denn eine mit Regelnummer spezifierte Regel anzeigen.

Laut Dokumenten, die ich im Internet gefunden habe, dient das Kommando -I eigentlich nur zum debuggen und ausprobieren - was ich in meinem Fall aber Quatsch finde.

Naja, jedenfalls habe ich mein Script inzwischen angepaßt und alle -A INPUT Regeln durch -I INPUT <rulenum> ersetzt. Da das Script ein Bashscript ist, setze ich am Anfang <b>COUNTER=1</b> und <rulenum> ist <b>(( COUNTER++ ))</b>.
Wenn ich im Script die IP Adresse meines Partners gefunden habe, schreibe ich Regelnummer und ermittelte IP in eine Datei, wenn mein Partner offline ist, schreibe ich mir ein diesbezügliches Schlüsselwort in die Datei.

Soweit habe ich also die Vorbedingungen geschaffen und kann nun meinen Cronjob schreiben, der mir die eine Regel austauscht, ohne daß ich das gesamte Script nocheinmal aufrufen muß.

Daß das Kommando -I offenbar wirklich nur zum debuggen vorgesehen ist, scheint wohl wirklich wahr zu sein, denn ein iptables-save listet die Regeln alle mit -A auf, unabhängig davon, ob sie mit -I oder -A erstellt worden sind.
Es gibt keine dumme Fragen!

Killerhippy

Post Reply