Linux Hardware

Schneller surfen dank Raspberry Pi als LAN-Proxy

Ein lokaler Proxy-Server mit Zwischenspeicher serviert allen Teilnehmern wiederholt abgerufene Webinhalte mit LAN-Geschwindigkeit. Mit dem schlanken Proxy-Server Polipo kann ein Raspberry Pi diese Aufgabe übernehmen.

Der Cache eines Webbrowsers ist darauf optimiert, wiederholt aufgerufene Inhalte aus dem Speicher heraus darzustellen, ohne dabei die angeforderte Datei nochmals vom Webserver zu holen. Wo immer mehrere PCs und Geräte über den Browser Seiten über eine gemeinsame Internetverbindung zapfen, gibt es Überschneidungen bei den abgerufenen Inhalten. Viele Bilder, Dokumente und Script-Frameworks sind stets gleich. Wozu dann also alles doppelt und dreifach durch die Internetanbindung ziehen, wenn es doch die identischen Daten sind?

Hier springt der Proxy-Server als Zwischenspeicher ein, der zuerst die Anfragen der Benutzer annimmt und vergleicht, was schon da ist.

Der Proxy (Stellvertreter) kontaktiert den Webserver anstelle des Browsers, legt dabei die Daten im Zwischenspeicher ab und gibt sie an die Clients weiter. Bei wiederholten Zugriffen kommen die Inhalte dann direkt vom Proxy-Server.


Vorbereitungschritte auf dem Raspberry Pi

Für den Raspberry Pi gibt es inzwischen eine ganze Reihe gut gepflegter Linux-Distributionen: Die Debian-Variante Raspbian, das auf Fedora basierende Pidora und Arch Linux sorgen für Auswahl ganz nach Geschmack und Gewohnheiten.

In diesem Beitrag dient jedoch das von der Raspberry Foundation favorisierte Raspbian als Referenz. Die hier beschriebenen Programmpakete gibt es auch bei anderen, nur unterscheidet sich die Konfiguration im Detail. Damit ein Raspberry Pi in die Rolle als Proxy-Server schlüpfen kann, müssen folgende Vorbereitungen getroffen werden:

Einen geeigneten Proxy-Server wählen

Nicht jeder Proxy-Server läuft auf den begrenzten Ressourcen der Platine optimal. Der bekannteste Proxy-Server für Linux und BSD ist das seit beinahe 20 Jahren gepflegte Programm Squid (Tintenfisch). Squid ist ein echtes Arbeitstier: Die Struktur und Verwaltung des Zwischenspeichers ist auf eine große Zahl von Nutzern angelegt, damit Squid auch Dutzende User im Netzwerk bedienen kann, sofern genügend Ressourcen in Form von Speicher und CPU-Leistung bereitstehen. Auf dem Raspberry Pi ist dies aber nicht der Fall. Der Mini-PC kann als Proxy-Server nach empirischen Erfahrungswerten bis zu fünf Netzwerk-User gut bedienen, danach macht sich vor allem die recht langsame I/O-Leistung der SD-Karte als Bremse bemerkbar. Einen Proxy-Server für höchste Leistungen zu betreiben, wäre also kaum sinnvoll.

Polipo vorbereiten: Die Standardkonfiguration ist für schwache Hardware gut geeignet. Die farblich markierten Zeilen in der „/etc/polipo/config“ müssen Sie aber selbst anpassen.
Polipo vorbereiten: Die Standardkonfiguration ist für schwache Hardware gut geeignet. Die farblich markierten Zeilen in der „/etc/polipo/config“ müssen Sie aber selbst anpassen.

Außerdem handelt man sich mit Squid auf dem Raspberry nicht dessen Vorteile unter großer Last ein, sondern hauptsächlich Nachteile: Eine komplexe Konfiguration und ein enormer Speicherhunger. Geeigneter ist ein kleinerer Proxy-Server mit Zwischenspeicher, der auch mit bescheidener Hardware zufrieden und für kleine LANs geschaffen ist: Polipo. Dieser Proxy versteht sich bestens darauf, sich mit knappen Ressourcen zu bescheiden. Polipo gelingt dieses Kunststück, indem die Kontrolle über den Cache-Speicher auf ein Minimum begrenzt wird. Einen Index über den Cache-Inhalt spart sich Polipo beispielsweise. Das sorgt für eine bessere Performance, hat aber auch Nebenwirkungen: So weiß Polipo durch den Verzicht auf einen Index nie genau, wie groß der Cache gerade ist, und kann deshalb auch die Cache-Größe nicht auf einen bestimmten Wert begrenzen.

Viel Arbeit für den kleinen Raspberry: Die schlechte I/O-Leistung der SD-Karte bremst große Downloads, wie die CPU-Last in htop zeigt. Erledigen Sie große Downloads besser mit wget.
Viel Arbeit für den kleinen Raspberry: Die schlechte I/O-Leistung der SD-Karte bremst große Downloads, wie die CPU-Last in htop zeigt. Erledigen Sie große Downloads besser mit wget.

Weitere Einschränkungen sollen nicht unerwähnt bleiben: Polipo in der ARM-Version für den Raspberry kann keine Dateien größer als zwei GB zwischenspeichern. Wer größere Dateien herunterlädt, muss dies am Proxy vorbei mit einem anderen Browser oder mit wget erledigen.