SSH und WakeOnLan für die Fritz!Box

Kennt ihr das auch – Ihr seit bei einem Freund und braucht eine Datei welcher jedoch zufällig auf dem Heimrechner liegt welche dummer Weise ausgeschaltet ist. Dafür gibt es aber eine Lösung: Wenn der Computer per LAN an eine Fritz!Box angeschlossen ist, kann man auf dieser das Programm „etherwake“ installieren, welches ein Wecksignal an eine MAC Adresse im LAN sendet welches den Computer dazu bringt zu starten. Dies funktioniert dann, wenn der Computer regulär herunter gefahren wurde, denn dann ist er immer in einer Art Standby Zustand was man z.B. daran merkt, dass eine USB Geräte noch Strom bekommen (Leuchtende Maus, Webcam…). Es ist sogar möglich, das ganze über das Internet über eine gesicherte SSH Verbindung zu tun.

Dies funktioniert natürlich auch mit anderen Routern besonders die, die wie die Fritz!Box Linux als Betriebssystem einsetzen und von denen sich die Firmware modifizieren lässt. Da ich aber nur eine Fritz!Box 7170 besitze und diese ein sehr populärer Standard-Router ist den es bei vielen DSL Providern als Zusatz gibt möchte ich mich hier darauf beziehen.Als erstes muss man erst einmal die benötigten Tools auf der Fritz!Box installieren. Solche Installationen auf der Fritz!Box geschehen in der Regel mit modifizierten Firmware-Updates. Dies macht einem die Webseite „The Construct“ sehr einfach. Dort kann man sich in der Web Oberfläche ein solches angepasstes Image zusammen klicken und selber auswählen, welche Software es enthalten soll.

ACHTUNG: Die Firmware Modifikation erfolgt auf eigene Gefahr und wird nicht von AVM unterstützt. Nach der Modifikation befindet sich im Web Interface der Fritz!Box ein Hinweis über gemachte Änderungen der nur durch das Recovery Tool von AVM wieder entfernt werden kann. Erst nach der Nutzung dieses Recovery Tools garantiert AVM auch wieder für die Funktion der Firmware.

Also okay, dann mal ein paar Schritte zur Einrichtung der Funktion:

  1. Überprüfen ob der eigene Computer Wake On LAN (Kurz WON) unterstützt. Zur Unterstützung wird ein BIOS mit WON und möglichst auch ACPI/APM Unterstützung, sowie eine Netzwerkkarte welche über den Standby-Stromzweig des Netzteils auch nach dem Herunterfahren des Rechners weiterhin mit Strom versorgt wird, benötigt. Die meisten halbwegs aktuellen Computer bieten dies. Unter Umständen muss dies noch im BIOS aktiviert werden.
  2. Einstellungen der Fritz!Box sichern. Dies geschieht unter dem Punkt „Erweiterte Einstellungen/System/Einstellungen sichern“ kann aber je nach Box und Firmware Version auch woanders gefunden werden.
  3. Zusammenstellen eines modifizierten Update Images auf the-construct.com Auf der Seite den Menüpunkt „Pseudo-Image erstellen“ anklicken und die Firmware Version eingeben. Diese erfährt man auf der ersten Seite wenn man das Web Interface der Fritz!Box betritt. Auf der nächsten Seite mindestens “
    Dropbear (SSH-Server)“ anwählen
  4. In der Einstellungsseite „Dropbear SSH-Server“ am besten einen anderen SSH Server Port wählen. Z.B. 26 und ein SSH Passwort festlegen und merken. Im Feld „MAC-Adresse“ die MAC Adresse der eigenen Netzwerkkarte eingeben. Diese erfährt man unter Linux z.B. indem man in einem Terminal „ifconfig“ eingibt und unter Windows mit „ipconfig /all“ in einer CMD.
  5. Im nächsten Schritt wird das Image erstellt und kann über den angegebenen Button herunter geladen werden. Das herunter geladene Image muss nun auf der Fritz!Box installiert werden. Dies geschieht über die Update Funktion. Diese findet man bei mir unter „Erweiterte Einstellungen/System/Firmware-Update/Firmware-Datei“ dies kann aber je nach Box und Firmware Version variieren. Über den Durchsuchen-Button das erstellte Firmware Image einlesen und fortfahren. Nun wird es noch eine Sicherheitsabfrage geben. Diese muss bestätigt werden um die Firmware zu installieren.
  6. Die Fritz!Box sollte sich nun automatisch neustarten. Wenn dies nicht passieren sollte oder nach dem Update die Box nicht mehr über das Webinterface erreichbar ist am besten den Netzstecker ziehen und wieder einstecken um so einen Neustart zu erzwingen. Beim Neustart Gedult haben. Die Modifikationen werden bei jedem Start aus dem Internet geladen und installiert was etwas Zeit in Anspruch nehmen kann. Dies liegt daran, dass der Systemteil der Fritz!Box im ROM liegt also nicht beschreibbar ist und Änderungen nur im RAM vorgenommen werden. Der RAM wird bei einem Neustart aber geleert. Es gibt nur wenige Dateien die bei einem Neustart erhalten bleiben und welche die Installation der Modifikationen einleiten.
  7. Nach genügend Wartezeit sollte es nun möglich sein sich bei der Fritz!Box mit einem SSH Clienten anzumelden. Bei den gängigen Linux Distributionen ist ein solcher in der Regel bereits installiert und der Login kann über folgende Terminal Eingabe erfolgen. „26“ muss durch den in Punkt 4. angegebenen SSH Port ersetzt werden:
    $ ssh -p 26 [email protected]

    Unter Windows kann man das Tool „Putty“ verwenden. Es benötigt keine Installation. Dort ebenfalls den in 4. angegebenen Port sowie als Hostnamen „fritz.box“ angeben. Beim Login wird man nach dem Benutzernamen gefragt. Dort „root“ angeben.

    Die Bestätigung des SSL Zertifikates muss akzeptiert werden.

  8. Nach dem Login kann man nun mit der Eingabe von „/var/tmp/startpc“ den Neustart des bei der Erstellung des Firmware Images angegebenen PCs einleiten. Dieser muss wie bereits beschrieben sauber herunter gefahren worden sein und über die erforderlichen Eigenschaften (Siehe 1.) verfügen. Wer mehrere Computer im Haushalt zur Verfügung hat kann dies nun von einem anderen Computer aus testen.
  9. Wenn man nun den Start auch über das Internet einleiten möchte muss man noch den in 4. angegebenen SSH Port weiterleiten. Über das Web Interface ist das leider nicht möglich also muss man eine Lösung über die SSH-Konsole finden. Dafür gibt man den Befehl
    # nvi /var/flash/ar7.cfg

    ein. Dieser öffnet die Datei /var/flash/ar7.cfg mit einer Modifizierten Version des Editors „vi“. Dort sucht man nach dem Parameter „forwardrules“ in folgender oder ähnlicher Form:

    ...
    "reject udp any any eq 515",
    "reject icmp any 149.1.1.0 255.255.255.0";
    }
    forwardrules = "udp 0.0.0.0:5060 0.0.0.0:5060",
    ...

    Das liegt bei mir bei der Zeile 236.
    Dort muss man nun einen weiteren TCP-Eintrag für 0.0.0.0:26 hinzufügen (26 wie immer durch den festgelegten Port ersetzen). Das sieht dann ungefähr so aus:

    forwardrules = "udp 0.0.0.0:5060 0.0.0.0:5060",
    "tcp 0.0.0.0:26 0.0.0.0:26",

    Einfügen kann man den, indem man die „Einfg“ Daten aus der Tastatur drückt, den Text eingibt und dann mit „ESC“ den Einfügen Modus verlässt. Nun muss man die Datei noch mit „:wq“ schließen. Um die Änderungen zu übernehmen ist anschließend noch ein Neustart der Box nötig. Dies kann auch direkt in der Telnet Konsole vorgenommen werden indem man „reboot“ eintippt und mit Enter ausführt.
    Wer Probleme mit der Benutzung von nvi hat sollte sich mal die Erklärung der verschiedenen Modi in der Wikipedia anschauen.

  10. Nun sollte man sich auch von entfernten Internet Anschlüssen außerhalb des Netzwerks mit der Box verbinden können, indem man sich wie in 7. beschrieben mit SSH verbindet und anstatt „fritz.box“ die öffentliche IP des Routers angibt. Da man diese jedoch nicht immer weiß bietet sich die Einrichtung eines Dyndns Namens an also einer (Sub-)Domain die immer auf die IP des Routers zeigt. Diese bekommt man z.B. kostenlos bei DynDNS.com oder No-IP.com. Einfach auf einer dieser Seiten registrieren und eine dynamische Subdomain anlegen. Diese kann dann in der Fritz!Box unter „Erweiterte Einstellungen/Internet/Dynamic DNS“ zusammen mit den Zugangsdaten eingetragen werden. Anstatt der öffentlichen IP kann man danach auch die DynDNS Domain zur Verbindung mit der Box verwenden.

Ich hoffe das hat euch bei der Einrichtung geholfen. Bei Verständnisproblemen oder anderen Anmerkungen, Anregungen etc. wie immer das Kommentarfeld nutzen!

  • Fresh

    Man sollte erwähnen dass man nach jeder Änderung in der debug.cfg oder ar7.cfg einen NEUSTART der fritzbox machen sollte, sonst hängt man wie ich da und wundert sich warum nix geht!
    Danke für deine Anleitung..

    Gruss

  • Danke, hab den Hinweis in die Anleitung eingefügt!

    Gruß,
    foxx

  • till

    Hallo,

    ich habe mich an deine Anleitung (endlich mal eine klare und übersichtliche Schilderung!) gehalten.
    Leider funktioniert es bei meiner fritz!box 7170(firmware: 29.04.57) nicht 🙁
    Den siebten Schritt macht er nicht!

    Wenn ich mich per telnet auf die Box einlogge, dann sehe ich, dass die debug-Datei noch leer ist (denke das sollte so nicht sein…). Desweiteren existiert die „Datei“ startpc nicht.

    Hast du eine Idee, woran es liegen könnte? Die Box zeigt mir eine neue Firmware an, auch das Portforwarding ist richtig eingetragen worden.

    Könnte es an einer fehlerhaften cfg_dropbear.txt liegen? Wo bekommt man da die neuste her? Muss man die dann noch anpassen?
    Danke.
    till

  • Hallo till,

    kannst du dich denn per SSH auf der Box einloggen? Wenn ja hast du wohl beim Erstellen der Firmware einen Fehler gemacht oder es gibt Probleme mit der Firmware Version und The Construct.

    Desweiteren musst du dir die debug.cfg mit „nvi“ anschauen. Wenn du „vi“ nutzt wird dir kein Inhalt angezeigt (Vielleicht hast du das ja richtig gemacht aber wäre eine Möglichkeit den Fehler zu finden).

    Von welcher cfg_dropbear.txt sprichst du? Also wenn du auf The Construct die Firmware zusammen mit Dropbear erstellst kannst du Dropbear dort konfigurieren. Außerdem gibt man dort an, von welchem Server die Dateien für Dropbear bei jedem Start geladen werden sollen. Wenn man The Construct vertraut kann man die Einstellungen so lassen – dann werden die Dateien vom The Construct FTP Server geladen.
    In der debug.cfg steht dann nur ein Skript welches die Dateien herunter läd, ausführbar macht und Dinge wie Port, Benutzer und Passwort anpasst. Also solltest du noch einmal probieren mit nvi die debug.cfg zu öffnen. Da sollte alles drin stehen.
    Du kannst auch mal nach einem Login an der Box „/var/flash/debug.cfg“ eingeben um diese auszuführen. Dann erhälst du eventuelle Fehlermeldungen.

    Ich hoffe ich konnte dir ein wenig helfen,

    Gruß,
    foxx

  • till

    Hallo,

    so ich habe alles erneut ausgeführt…
    Jetzt komme ich schonmal weiter, d.h. ich kann mich jetzt per ssh auf die Fritz!Box einloggen. Das aber auch nur im lokalen Netzwerk?!
    Das „Skript“ startpc ist auch vorhanden. Wenn ich es ausführe passiert aber leider nichts.
    Spielt es eine Rolle, dass ich einen Mac habe???

    Danke und Gruß

  • Hallo till,

    also das das erst einmal nur im lokalen Netzwerk funktioniert ist normal. Wenn du eine Dyndns registriert und in der Box eingetragen hast kannst du wie in dem Artikel beschrieben (9.) den Port den du bei der Erstellung der Firmware auf The Construct angegeben hast weiterleiten. Im Artikel ist dies der Port 26, wenn du einen anderen gewählt hast musst du die 26 mit diesem ersetzen.

    Das beim Aufruf von „startpc“ nichts passiert ist ein gutes Zeichen da es keine Fehlermeldung gibt. Du kannst es nur testen indem du entweder einen anderen Computer im lokalen Netzwerk nutzt um es auszuführen oder von irgendwo an einem internetfähigen Computer eine Verbindung zur Box aufbaust wenn du Punkt 9. durchgeführt hast.
    Beachte auch das du den zu bootenden Computer herunterfahren musst. Wenn du den Stecker ziehst und wieder ran steckst wird der remote Start nicht funktionieren. Auch solltest du noch einmal im Bios überprüfen ob denn Wake On LAN aktiviert ist.

    Gruß,
    foxx

  • till

    Hallo foxx,

    also die dyndns ist und war natürlich schon eingerichtet 😉
    Port hatte ich auf 26 gelassen und nach deiner Vorlage alles geändert.

    @startpc:
    – hatte ich die ganze Zeit von einem Computer im lokalen Netz versucht.
    – den zu bootenden Computer hatte ich im Ruhezustand und vollständig runtergefahren.
    – WakeOnLan ist eingeschaltet!

    Sonst noch eine Idee? Muss ich bei Apple-Rechner auf was besonderes achten?

  • Hallo,

    also eine Idee wär noch das ganze erst einmal ohne die Fritz!Box zu probieren. Also einfach den Computer im lokalen Netz anschalten, den zu startenden Computer herunterfahren und mit etherwake oder einem anderen Programm den Netzwerkboot probieren. Wenn es damit klappt noch einmal die MAC Adresse die nun in der startpc Datei auf der Fritz!Box steht überprüfen usw. Also erstmal schaun ob das Problem nicht doch woanders liegt als bei der Konfiguration der Box.

    Ob man bei Apple Rechnern was besonderes beachten muss weiß ich leider nicht. Die haben ja kein BIOS sondern dieses EFI und es wäre ja schon möglich das es dort kein WOL gibt sondern ein anderes Protokoll… Ich Google mal ein wenig.

    Gruß,
    foxx

    EDIT: Schau mal hier oder hier

  • Pingback: Dropbear SSH Fritz!Box Authorized Keys | IT | Tekain.NET()