weidner/computer/linux/router/

Debian-Router auf CompactFlash-Karte

Heute habe ich mich drangesetzt und einen DSL-Router mit Debian GNU/Linux 6 Squeeze aufgesetzt. Eigentlich hatte es der alte Linksys-Router noch getan, aber ich will mehr Kontrolle und später auch noch mit IPv6 experimentieren. Dazu hatte ich mir neulich einen PC Engines ALIX 2 angeschafft, eine 512 MB CompactFlash(CF)-Karte hatte ich noch da. Das System habe ich Anfang dieser Woche soweit vorbereitet, das das Root-Filesystem read-only eingehängt wird. Nun waren nur noch ein paar Kleinigkeiten zu erledigen.

Software

Installiert hatte ich Debian 6 Squeeze als Minimalsystem mit SSH-Server. Für den Router habe ich dann noch ein paar Pakete zusätzlich installiert:

APT anpassen

Auf dem Router will ich keine Quellpakete haben. Also habe ich in /etc/apt/sources.list alle Zeilen mit deb-src entfernt. Das hat den Vorteil, dass ich damit auch unter /var etwas Platz schaffen kann:

# rm /var/cache/apt/srcpkgcache.bin
# rm /var/lib/apt/lists/*Source*
# apt-get update

Iptables

Momentan habe ich noch nichts für mich passendes gefunden, mit dem ich die Paketfilterregeln einfacher schreiben kann. Sonst nehme ich immer ferm, aber das würde mir perl und perl-modules nachziehen, das scheint mir momentan etwas viel für den Router zu sein. Schließlich geht es auch so mit iptables und so viele Regeln habe ich noch nicht.

Die wichtigste Regel ist für das Masquerading, damit die Verbindungen über den Router nach aussen funktionieren:

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQERADE

Dann habe ich noch eine Port-Forward-Regel um von aussen auf einen SSH-Server in meinem Hausnetz zu kommen.

# iptables -t nat -A PREROUTING -p tcp --dport 12345 \
           -j DNAT --to-destination 1.2.3.4:22

Regeln dauerhaft speichern

Wenn die Paketfilterregeln getestet sind und zur Zufriedenheit funktionieren, mache ich sie mit folgenden Befehlen für den nächsten Neustart dauerhaft:

# remountrw
# iptable-save > /ro/etc/iptables/rules
# remountro

Die Datei /ro/etc/iptables/rules liegt im Dateisystem auf der CF-Karte im Verzeichnis /etc/iptables und wird auch an dieser Stelle im Gesamtdateisystem eingeblendet. Würde ich direkt nach /etc/iptables/rules schreiben, landete die Datei in /rw/etc/iptables/rules und wäre nach einem Neustart weg.

Posted 2011-04-15
Tags: