Kürzlich habe ich gezeigt, wie mit relativ einfachen Schritten ein VPN-Gateway für das persönliche Netzwerk realisiert werden kann. Die Anleitung hat allerdings einen kleinen Haken, iptables lassen sich von Natur aus nicht speichern. Wir müssen also mit etwas künstlichem nachhelfen.

Das Speichern von iptables-Regeln ist auf mehreren Wegen möglich. Ich möchte zwei davon aufzeigen. Da wir in der vorhergehenden Anleitung (hier nochmal verlinkt) Webmin mitinstalliert haben, können wir unsere iptables-Regel einfach in Webmin mit einem einzigen Klick sichern und mit einem weiteren das automatische setzen der Regeln bei einem Start des Computers aktivieren.

Lösung 1 (mit Webmin):

iptables Webmin
iptables Webmin

Unter Networking -> Linux Firewall kommt man zu den iptables-Einstellungen. Beim ersten Aufruf werden die aktuellen iptables-Regeln eingelesen. Anschließend wird man auf die korrekte Einstellungsseite umgeleitet.

Im oberen Bereich kann man sehen, in welcher Datei die Regeln gespeichert werden. Standardmäßig ist das “/etc/iptables.up.rules”. Im unteren Bereich findet man eine Einstellung “Activate on boot”. Diese muss einfach aktiviert werden, dann werden alle bestehenden Regeln beim nächsten Start automatisch geladen.

Mittels den Buttons “Apply configuration” und “Revert configuration” kann jeweils die im Webmin eingegebene Konfiguration aktiviert und die in den iptables eingetragene Konfiguration in Webmin übernommen werden. Dies nur am Rande.

Lösung 2 (Kommandozeile):

Für das Sichern über die Kommandozeile gibt es die Befehle iptables-save und iptables-restore. Die funktionieren eigentlich auch ganz einfach und sind vom Umfang her äußerst überschaubar.

iptables-save sichert die aktuellen iptables-Regeln und gibt diese anschließend aus. Mit einer Ausgabe in eine Datei kann man also die aktuellen Regeln einfach in eine Datei sichern (nennt man übrigens Pipe, wenn man mit > etwas in Files schreiben lässt), die man später für das Zurückspielen verwendet.

iptables-save > /home/malte/test.txt

Die Datei unter /home/malte/ sieht nun folgendermaßen aus:

# Generated by iptables-save v1.4.14 on Fri Nov 15 08:08:13 2013
*mangle
:PREROUTING ACCEPT [885965100:629055339180]
:INPUT ACCEPT [386493598:267983355679]
:FORWARD ACCEPT [499471489:361071982295]
:OUTPUT ACCEPT [292209542:148990255567]
:POSTROUTING ACCEPT [791680724:510062206145]
COMMIT
# Completed on Fri Nov 15 08:08:13 2013
# Generated by iptables-save v1.4.14 on Fri Nov 15 08:08:13 2013
*nat
:PREROUTING ACCEPT [704889:54721326]
:INPUT ACCEPT [29655:1941396]
:OUTPUT ACCEPT [1628:97525]
:POSTROUTING ACCEPT [2238:132177]
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
# Completed on Fri Nov 15 08:08:13 2013
# Generated by iptables-save v1.4.14 on Fri Nov 15 08:08:13 2013
*filter
:INPUT ACCEPT [386493598:267983355679]
:FORWARD ACCEPT [499471489:361071982295]
:OUTPUT ACCEPT [292208985:148990207100]
-A FORWARD -s 192.168.178.0/24 -i eth0:0 -o eth0 -m conntrack –ctstate NEW -j REJECT –reject-with icmp-port-unreachable
-A FORWARD -s 192.168.178.0/24 -i eth0:0 -o tun0 -m conntrack –ctstate NEW -j ACCEPT
COMMIT
# Completed on Fri Nov 15 08:08:13 2013

Nun drehen wir den Spieß um und pipen nun unsere gespeicherten Regeln an den Befehl iptables-restore:

cat /home/malte/test.txt | iptables-restore

Dabei werden sämtliche iptables-Regeln entfernt und durch die in der Datei “test.txt” befindlichen ersetzt. Sollte das nicht gewünscht sein und die gespeicherten Regeln zu den bestehenden Regeln hinzugefügt werden sollen, muss an iptables-restore ein “-n” für “noflush” angehängt werden. Dies nur als kleine Nebeninformation.

Möchte man nun beim Start des Rechners die iptables-Regeln aktivieren, so kann man den iptables-restore Befehl (siehe oberhalb) in die Datei rc.local unter /etc/ eintragen.

Sollten Fragen und Anregungen aufkommen, lasst es mich via Kommentarfunktion wissen. Diese kleine Anleitung gehört zu meinem VPN-Gateway Projekt.

Leave a Reply

Your email address will not be published. Required fields are marked *