Vor kurzem habe ich auf meinem Debian-Server wieder ein OpenVPN eingerichtet. Daher wollte ich eine der iptables-Regel persistent speichern. Dafür habe ich das Paket iptables-persistent installiert. Leider ist dessen Start-Script nicht so perfekt… Werbung
Daher habe ich das folgende Script in /etc/init.d/iptable-persistent installiert, welches ich von hier abgeschaut habe. Jedoch habe ich einige Änderungen vorgenommen, daher hier meine Version:
#!/bin/sh # Written by Simon Richter <sjr@debian.org> # ### BEGIN INIT INFO # Provides: iptables # Required-Start: mountkernfs $local_fs # Required-Stop: $local_fs # Default-Start: S # Default-Stop: # Short-Description: Set up iptables rules ### END INIT INFO PATH="/sbin:/bin:/usr/sbin:/usr/bin" case "$1" in start) if [ -e /var/run/iptables ]; then echo "iptables is already started!" exit 1 else touch /var/run/iptables fi # Load saved rules if [ -f /etc/iptables/rules ]; then iptables-restore </etc/iptables/rules fi ;; stop|force-stop) if [ ! -e /var/run/iptables ]; then echo "iptables is already stopped!" exit 1 else rm /var/run/iptables fi # Backup old rules cp /etc/iptables/rules /etc/iptables/rules.bak # Save new rules iptables-save >/etc/iptables/rules # Restore Default Policies iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # Flush rules on default tables iptables -F iptables -t nat -F iptables -t mangle -F ;; restart|force-reload) $0 stop $0 start ;; status) echo "Filter Rules:" echo "--------------" iptables -L -v echo "" echo "NAT Rules:" echo "-------------" iptables -t nat -L -v echo "" echo "Mangle Rules:" echo "----------------" iptables -t mangle -L -v ;; *) echo "Usage: $0 {start|stop|force-stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0
Wieso nicht perfekt? Könntest du näher erläutern, was das Problem beim Debian-Script ist?
Na gut, hat sich erledigt. Deins scheint mir sinnvoll. Sollte man in Debian integrieren.
Servus,
der Hauptunterschied scheint mir, dass Dein Skript die aktuellen Einstellungen beim Herunterfahren speichert.
Das darf (Debian Policy, „Konfigurationsdateien“) und will ich aber in meinem Paket nicht so machen, sondern es muss immer eine explizite Entscheidung „jetzt speichern“ geben.
Die iptables-Konfiguration eines Rechners aendert sich unterwegs haeufiger (z.B. weil ich „fail2ban“ oder „linux-igd“ installiert habe), und diese Regeln will ich nicht abspeichern, weil mit einem Reboot auch das Wissen um eine iptables-Regel mit einem Timeout verloren ist.
Ausserdem hat das den klaren Vorteil, dass nach einem Reboot eine wirklich klar definierte Konfiguration geladen ist. Nicht zu unterschaetzen, sowas. 🙂
Hi Simon,
definitiv und da stimme ich dir zu. Das Script stammt noch aus einer Zeit, wo das Speichern der Regeln bei mir zumindest nicht richtig geklappt hatte. Insofern dieses Script. Vielleicht wäre es ein Weg, einen save manuell auslösen zu können? So in der Art:
An sich gebe ich dir aber recht, diese Tools hatte ich damals nicht im Einsatz 😉
Viele Grüße,
Uli