Kostenlos: Beliebige Features durch Fritz!Box-Firmware-Modifikation

Fritz!Box: Neue Firmware selbst gebaut mit Freetz

27.06.2008 von ALBERT  LAUCHNER
Mit Freetz lassen sich individuelle Firmware-Images für jede Fritz!Box selbst erstellen. Dadurch befreit man die Fritz!Box aus den Fesseln von AVM und kann Linux-Erweiterungen in die Firmware integrieren, die weit über den Standardfunktionsumfang hinausgehen.

In deutschen Haushalten und Büros stehen Millionen von Fritz!Box-DSL-Router, für die AVM regelmäßig neue Features durch aktuelle Firmware-Images anbietet. Doch durch die hohe Nutzerzahl ist AVM bei den Erweiterungen zu Kompromissen gezwungen. Die Konfiguration muss sich auch für unbedarfte User eignen, sodass man beispielsweise auf eine komplexe Firewall-Konfiguration verzichtet. Auch beschränkt sich AVM nur auf die gängigsten Erweiterungen, da der Speicherplatz im Flash der Fritz!Box recht knapp ist.

In den Teilen 1 bis 4 unserer Fritz!Box-Tuning-Serie hat TecChannel gezeigt, wie man die Original-Firmware von AVM um neue Funktionen erweitern kann. Dabei hat die Fritz!Box beim Booten immer zusätzlich Programmpakete aus dem Internet nachgeladen. Diese Art der Modifikation ist jedoch beschränkt, da die nachgeladene Software nur schwer auf tiefere Kernel-Funktionen des Linux-Betriebssystems zugreifen kann, denn die Fritz!Box kann die gewünschte Erweiterung erst nachladen, wenn sie komplett gebootet ist und eine DSL-Verbindung aufgebaut hat.

Unscheinbar: Bis auf die rot markierten Bereiche unterscheidet sich das Interface der Freetz-Firmware nicht vom Original.

Doch mit diesen Beschränkungen ist nun Schluss. Unter dem Projekt Freetz haben sich engagierte Entwickler zusammengeschlossen und eine komplette Entwicklungsumgebung für eigene Firmware-Images für die Fritz!Box geschaffen. Mit ein paar Klicks stellt man sich die gewünschten Features zusammen, und dann kompiliert Freetz aus der Original-Firmware und dem öffentlichen Teil des AVM-Quellcodes sowie den gewünschten Linux-Softwareerweiterungen ein individuelles Flash-Image. Alle Daten stehen dadurch schon beim Booten der Fritz!Box in ihrem Speicher bereit. So sind dann auch Kernel-nahe Modifikationen wie eine echte Firewall mit Iptables auf der Fritz!Box möglich.

Dieser Artikel ist der sechste Teil unseres großen Specials zu AVMs DSL-Router. Er ist zwar unabhängig von den Teilen eins bis vier, zum besseren Verständnis empfehlen wir aber, zumindest den ersten Teil des Artikels Tuning und Hacks für die Fritz!Box vorab zu lesen. Treten irgendwann einmal schwerwiegende Probleme auf, empfehlen wir Ihnen Teil 5 der Serie, Rettung für die ’tote’ Fritz!Box. Damit setzen Sie die Fritz!Box immer wieder in den Originalzustand zurück.

TecChannel Special zur AVM Fritz!Box

Teil 1: Tuning und Hacks für die Fritz!Box

Teil 2: Fritz!Box-Hack: Computer über das Internet starten und fernsteuern

Teil 3: Die Fritz!Box als Least Cost Router

Teil 4: VPN-Direktkopplung mit der Fritz!Box

Teil 5: Rettung für die defekte Fritz!Box

Teil 6: Eigene Firmware mit Freetz erstellen

Teil 7: Billiger telefonieren trotz Flatrate

Was ist Freetz?

Was sich zunächst sehr kompliziert anhört, ist in der Praxis sogar recht einfach. Denn die komplett konfigurierte Freetz-Entwicklungsumgebung gibt es in einem VMware-Player Image. Auch ohne Linux-Kenntnisse kann man so sein Fritz!Box-Image unter Windows mit einigen Mausklicks erstellen.

Das Schöne daran: Installiert man dieses Freetz-Image auf der Fritz!Box, bleiben die bisherigen Einstellungen wie etwa die DSL-Zugangsdaten erhalten. Selbst das Webinterface zur Konfiguration ist bis auf einige Erweiterungen gleich. Dadurch ist der Schritt hin zu Freetz – und eventuell wieder zurück zur Original-Firmware – mit sehr wenig Aufwand und Risiko verbunden.

Freetz erzeugt individuelle Firmware-Images für die AVM-Fritz!Box-Serie und die weitgehend baugleichen T-Com Speedport Router. Eine Liste aller unterstützen Modelle befindet sich hier. Die Freetz-Firmware setzt zwar auf dem Original-Quellcode von AVM auf, Freetz kann aber zahlreiche Erweiterungen und Linux-Standardpakete mit hineinkompilieren. Aber auch nicht benötigte Module wie etwa die Installationsassistenten der Original-Firmware lassen sich aus Platzgründen entfernen.

Freetz leitet sich nach Angabe der Entwickler von „Free“ und „Fritz“ ab. Es ist eine Weiterentwicklung des Danisahne-Mod, der vor einigen Jahren populärsten Fritz!Box-Modifikation. Um den Danisahne-Mod ist es recht ruhig geworden, da dessen treibende Kraft, Daniel Eiband, kaum mehr Zeit dafür findet. Daher ist der Original-DS-Mod auch beim Kernel 2.4 stehen geblieben. Für die aktuelle AVM-Firmware mit dem 2.6er-Linux-Kernel hat Freetz nun die Führerschaft übernommen.

Zum Erzeugen der Freetz- und DS-Firmware benötigt man stets sein eigenes Entwicklungssystem. Denn die Lizenzbestimmungen von AVM erlauben zwar die Nutzung, nicht aber die Verbreitung einer auf dem originalen AVM-Code basierenden, modifizierten Firmware. Selbstverständlich lehnt aber AVM den Support der Freetz-Firmware ab und zeigt sich bei Garantiefällen zumindest offiziell wenig kulant.

Hilfe zu Freetz findet man vor allem in dieser Rubrik des IP-Phone-Forums. Als erste Anlaufstelle bei Problemen ist aber auch das Wiki zum Danisahne / Freetz Mod sehr hilfreich.

Eigene Firmware erstellen

Zum Erstellen einer individuellen Fritz!Box-Firmware benötigt man zunächst ein Entwicklungssystem, das die komplette Toolchain enthält. Dazu zählen beispielsweise ein Compiler für die CPU im DSL-Router, ein passender Linker, Software zur Sourcecode-Verwaltung wie etwa Versionierung und Paketverwaltung sowie ein Komprimierungstool zum finalen Erstellen der Image-Datei. All diese Tools sind zwar für Linux erhältlich, eine individuelle Installation dürfte aber die meisten Anwender überfordern.

Der schnellste Weg zum lauffähigen Entwicklungssystem geht daher über ein bereits fertig konfiguriertes Linux mit allen Tools, das man praktischerweise als VMware-Image herunterladen kann. Dieses Image läuft auch im kostenlosen VMware-Player und eignet sich selbst für den unbedarften Windows-User. Im Folgenden werden wir daher diesen Weg näher beschreiben.

Zum Start der virtuellen Linux-Entwicklungsumgebung benötigen Sie entweder eine vollwertige VMware-Workstation oder den kostenlosen VMware Player. Dieser ist unter www.vmware.com/products/player/ erhältlich. Das Entwicklungssystem selbst setzt auf die mit 404 MByte recht schlanke Linux-Distribution „StinkyLinux“ auf. Quellen für das VMware-Image finden Sie hier. Da diese Quellen teilweise überlastet sind, haben wir das Linux-Image auch auf unserem TecChannel-Server unter download.tecchannel.de/public/1763341/StinkyLinux-v1.06.7z abgelegt (MD5-Prüfsumme: d23b7465dd11560e91dd8fe147fc0213) . Zum Entpacken dieser Datei ist dann entweder ein aktuelles Winrar oder der Open-Source-Packer 7-Zip nötig.

Endlich final: Am 6.6.2008 hat Freetz das Betastadium verlassen.

Als letzten Baustein benötigen Sie noch das eigentliche Freetz-Paket. Dieses enthält all die Skripte und Konfigurations-Files, mit denen die Toolchain in StinkyLinux Ihre persönliche Firmware erstellt. Am 6.6.2008 wurde die erste „finale“ Version 1.0 von Freetz veröffentlicht. Die aktuelle Version finden Sie unter http://www.freetz.org/wiki/Download.

Entwicklungssystem starten

Entpacken Sie nun das heruntergeladene VMware-Image, und booten Sie es im VMware-Player oder der VMware-Workstation. Der erste Boot kann etwas dauern, da das Image über ein halbes Jahr alt ist und Linux erst einmal sein Dateisystem gründlich überprüft. Aber nach fünf Minuten sollte sich der Login zeigen.

Kleine Pause: Der File-System-Check beim ersten Boot kann etwas dauern.

Der anschließende Login erfolgt mit dem Benutzernamen „slightly“ und dem Passwort „stinky“. Benutzen Sie keinen anderen User zum Erzeugen des Firmware-Images. Die Pfade zu den Dateien in Freetz sind an das Home-Laufwerk des Users „slightly“ ausgelegt. Sollten Sie später für Linux-Updates doch einmal einen root-Zugang benötigen, wählen Sie „root“ als User und ebenfalls „stinky“ als Passwort.

Login: Die Zugangsdaten lauten „slightly“ und „stinky“.

Wer möchte, kann nun zuerst Linux auf den aktuellen Stand bringen. Im Menü unter Anwendungen – Debian – Anwendungen – System – Synaptic Package Manager lässt sich der Aktualisierungsprozess starten. Wählen Sie „Neu laden“ und dann alle unter „Akualisierbar“ aufgeführten Pakete aus.

Update: Der Synaptic Package Manager bringt StinkyLinux auf den aktuellen Softwarestand.

Freetz vorbereiten

Mit dem Booten hat das VMware-Image im Windows-Explorer automatisch den Share \\StinkyLinux\StinkyLinux für den einfachen Datenaustausch zwischen Windows und Linux angelegt. Wechseln Sie im Windows-Explorer in den Pfad \\StinkyLinux\StinkyLinux. Dort legen Sie nun die heruntergeladene, aktuelle Version des Freetz-Pakets ab, in unserem Fall die Datei „freetz-1.0.tar.bz2“.

Komfortabel: VMware legt den Share \\StinkyLinux zum Datenaustausch zwischen dem Linux-Entwicklungssystem und dem Windows-Host an.

Öffnen Sie nun unter Anwendung – Zubehör – Terminal eine Linux-Konsole. Keine Angst – mehr als vier Kommandos sind nicht nötig, bis Ihr erstes Firmware-Image erstellt ist.

Kommandozeile: Vier Befehle im Terminalfenster stehen noch zwischen Ihnen und dem ersten eigenen Image.

Mit dem Befehl tar -xvjf freetz-1.0.tar.bz2 entpacken Sie das Freetz-Projekt an Ort und Stelle. Erscheint demnächst eine aktuellere Version von Freetz, passen Sie den Dateinamen entsprechend an.

Entpackt: Freetz hat jetzt alle Konfigurationsdateien und Scripte vorbereitet.

Image-Optionen auswählen

Wechseln Sie jetzt mit dem Befehl cd freetz-1.0 das Verzeichnis. Dann rufen Sie make menuconfig auf. Darauf öffnet sich ein einfaches Konfigurationsprogramm, mit dem Sie alle gewünschten Firmware-Features auswählen können. Einen Eindruck davon vermittelt die folgende Bildergalerie.

Screenshot-Galerie: Die menügestütze Konfiguration aller Features von Freetz.
Menügestüzte Konfiguration
Fritz!Box Model auswählen
Erweiterte Optionen wie Patches und zusätzliche Pakete
Wer will, kann Platz sparen und Original-Features entfernen
Das normale Webinterface lässt sich anpassen
Iptabels nutzen wir im nächsten Beitrag, also auswählen
Der Bftpd FTP-Server ist oft nützlich
Der Nano Editor erleichtert das Bearbeiten der Konfigurationsdateien
Selbst die Shell kann man anpassen
Am Ende einfach auf "Exit"
Das Speichern erfolgt automatisch am Ende

Als wichtigste Option müssen Sie natürlich den Typ Ihrer Fritz!Box auswählen. Alle anderen Werte können Sie erst einmal so übernehmen. Empfehlenswert ist aber auf jeden Fall, unter dem Menüpunkt Package Selection – Standard Packages die Pakete BFtpd und Nano auszuwählen. BFtpd installiert einen FTP-Server, der den Datenaustausch mit der Fritz!Box erheblich vereinfacht. Bei nano handelt es sich um einen Texteditor, mit dem man auf der Fritz!Box die Konfigurationsdateien bei Bedarf bequem ändern kann.

Da wir im nächsten Teil unserer Artikelserie darauf aufsetzen, können Sie auch gleich unter Package Selection die Pakete Iptables und Iptables-CGI auswählen. Ein abschließendes „Save Configuration to an Alternate File“ ist nicht nötig; nach dem letzten „Exit“ speichert menuconfig die Einstellungen automatisch als Defaultkonfiguration.

Image erstellen

Jetzt zum Finale: Ein simples make auf der Kommandozeile erzeugt die individuelle Fritz!Box-Firmware. Dabei erfolgt eine kleine Kompilationsorgie auf dem PC, die auf den klassischen Windows-User beängstigend wirkt: Die Freetz-Scripte laden gut 100 MByte an Sourcecode aus verschiedensten Quellen aus dem Web herunter, kompilieren diesen und erzeugen daraus das finale Image.

Futter für den Compiler und Linker: Freetz lädt mehr als 100 MByte an Sourcecode aus verschiedenen Quellen nach, hier im Bild gerade den 59-MByte-GPL-Kernel-Code von AVM.

Dieser Vorgang kann beim ersten Mal, wenn alle Sourcen neu geladen und kompiliert werden, schon einmal 30 Minuten dauern. Spätere Updates sind dagegen in zwei Minuten erledigt. Der Paketmanager lädt nur noch die neuen Dateien nach, und Freetz linkt sie mit dem bereits kompilierten Code zusammen. Anschließend liegt das Image ganz unspektakulär im Verzeichnis freetz-1.0 und kann über den gemeinsamen Windows-Share \\StinkyLinux\StinkyLinux\freetz-1.0 aus der virtuellen Maschine herauskopiert werden.

Fertig: Das Image ist fertig und kann in die Fritz!Box eingespielt werden.

Firmware-Update auf der Fritz!Box

Im Prinzip kann man das Image jetzt über das Webinterface der Fritz!Box einfach einspielen. Im Normalfall bleiben alle Einstellungen erhalten, und nach fünf Minuten meldet sich die Fritz!Box (fast) wie gewohnt zurück. Doch Vorsicht: Falls etwas schiefläuft, steht man womöglich ganz ohne Online-Verbindung da. Deshalb sollten Sie folgende Vorsichtsmaßnahmen treffen:

Jetzt können Sie die Freetz-Firmware wie ein normales AVM-Update über das Browser-Interface der Fritz!Box einspielen. Im Notfall haben Sie jedoch alle Mittel parat, jederzeit alles wieder rückgängig zu machen.

Update: Das Image wird als normale Firmware-Datei installiert.

Nach dem Hochladen erkennt die Fritz!Box anhand einer fehlenden Signatur, dass es sich um keine Original-AVM-Firmware handelt. Die unten abgebildete Warnmeldung ist daher normal und kann ignoriert werden.

Keine Angst: Diese Warnung vor dem Flashen der Firmware ist normal.

Ausblick

Wenn Sie sich jetzt per Browser mit der Fritz!Box verbinden, finden Sie im Menü den neuen Punkt Freetz. Sie erreichen die erweiterte Freetz-Konfiguration ebenso unter http://fritz.box:81. Auch können Sie sich ab sofort per telnet fritz.box auf die Fritz!Box einloggen.

Wenn Sie im Webinterface oder beim telnet-Login nach Zugangsdaten gefragt werden, nutzen Sie entweder „admin“ und das Passwort „freetz“, oder „root“ und das Passwort „freetz“. Freetz wird Sie dann zum Ändern des Default-Passworts auffordern. Überlegen Sie sich ein neues Passwort mit Zahlen und Sonderzeichen, denn Freetz akzeptiert ein zu einfaches Passwort nicht.

Erweiterte Konfiguration: Alle neuen Features administrieren Sie über http://fritz.box:81.

Bei der erweiterten Konfiguration nutzt Freetz verschiedene Sicherheitsstufen. Je nach ausgewählter Stufe sind nicht alle Konfigurationsdateien modifizierbar. Wenn Sie sich per telnet einloggen und die Befehle
echo 0 > /tmp/flash/security
modsave

eingeben, schalten Sie alle Einschränkungen aus. Sicherer vor schweren Konfigurationsfehlern sind Sie mit den Werten 1 oder 2 nach dem echo-Befehl.

Eines der interessantesten Features der neuen Firmware ist die „echte“ Firewall, die auf Iptables aufsetzt. Im nächsten Teil unserer Fritz!Box-Serie zeigen wir, wie Sie damit Ihr Netzwerk vernünftig absichern und beispielsweise das WLAN vom LAN sauber abtrennen. (ala)

Richtige Firewall: Eines der optionalen Pakete von Freetz ist eine professionelle Firewall mit Iptables.

Dieser Artikel ist der sechste Teil unseres großen Specials zu AVMs DSL-Router. Er ist zwar unabhängig von den Teilen eins bis vier, zum besseren Verständnis empfehlen wir aber, zumindest den ersten Teil des Artikels Tuning und Hacks für die Fritz!Box vorab zu lesen. Treten irgendwann einmal schwerwiegende Probleme auf, empfehlen wir Ihnen Teil 5 der Serie, Rettung für die ’tote’ Fritz!Box. Damit setzen Sie die Fritz!Box immer wieder in den Originalzustand zurück.

TecChannel Special zur AVM Fritz!Box

Teil 1: Tuning und Hacks für die Fritz!Box

Teil 2: Fritz!Box-Hack: Computer über das Internet starten und fernsteuern

Teil 3: Die Fritz!Box als Least Cost Router

Teil 4: VPN-Direktkopplung mit der Fritz!Box

Teil 5: Rettung für die defekte Fritz!Box

Teil 6: Eigene Firmware mit Freetz erstellen

Teil 7: Billiger telefonieren trotz Flatrate