WOL-Raspberry soll Server wecken

  • Hallo liebe Community.

    Vorabinformationen:
    Ich bin neu hier im Forum. Mache jetzt meine Masterarbeit und ich darf etwas mit dem Pi machen :D
    Ich freu mich riesig darauf, da der Raspberry für mich ein cooles Gerät ist.
    Ich habe aber leider noch nicht allzuviel Erfahrung mit Linux und so. Die ganzen Tutorials im Internet sind sehr Hilfreich, ich möchte aber mehr.

    Systembeschreibung:
    Ich habe bei mir zu Hause einen Server laufen auf Windows 7 (Geht leider nicht auf dem Pi, da er zu wenig RAM besitzt).
    Dieser Server soll über Wake on Lan gestartet werden. Jetzt ist das Problem, dass meine Fritzbox dies von außen nicht zulässt.

    Projektbeschreibung:
    Ich möchte also eine .BAT Datei schreiben für Windows, welches ein gewisses Programm startet und als Weiteres ein Paket über Internet zu meinem Pi geschickt wird.

    Der Pi erkennt das Paket und sendet ein Magic Packet im Privaten LAN.

    Soweit so gut. Das alles soll ohne weitere Software laufen.

    Abschlussrede:
    Ich denke das dürfte kein großes Problem sein, nur habe ich leider keine Ahnung wie ich in einer .BAT Datei ein bestimmtes Paket verschicken kann und wie der Pi dieses Paket erkennt und dann ein Magic Packet hinaussendet.

    Vielen Dank für eure Hilfe.

    Mit freundlichen Grüßen
    Xeriox

    <--Heute ist ein guter Tag zum basteln-->

  • Ja sorry ich habe das System nicht vollständig beschrieben.

    Systembeschreibung:
    Ich besitze einen Server auf diesem Windows läuft. In dem gleichen Netzwerk wie der Server (Privatnetz) sitzt mein Raspberry Pi.
    Der Server soll in der Lage sein in den Ruhestand zu fahren. (wenn auf ihn nicht zugegriffen wird)
    Der Server verfügt über die Funktion WOL (Wake on Lan)
    Mit WOL ist es möglich einen PC im Ruhezustand wieder aufzuwecken durch ein Magic Packet. Das Magic Packet beinhaltet die MAC-Adresse von dem PC welches aufgeweckt werden soll. Dieses Packet soll der Raspberry Pi mittels Broadcast in meinem Netzwerk versenden.(Oder direkt an den Server wenn dies möglich ist)

    Wie soll es funktionieren?
    Nun kommt die .BAT Datei ins Spiel. Ein anderer PC (Windows), welcher irgendwo in der Welt mit dem Internet verbunden ist soll in der Lage sein meinen Server zu Hause "aufzuwecken".
    Ich möchte eine .bat Datei schreiben, die meinen Server aufweckt und zusätzlich ein Programm auf dem PC (nicht der Server) startet, welcher irgendwo mit dem Internet verbunden ist.

    Wieso eine .bat Datei?
    Ganz einfach, ich habe geringe Kenntnisse mit .bat Dateien und habe sonst keine Alternative für Windows Systeme.

    Das Problem:
    Es wäre ja am Besten, wenn ich von dem PC aus meinen Server direkt aufwecken könnte. Dies kann ich aber ohne zusätzliche Software nicht. Deswegen möchte ich den Umweg über den Raspberry Pi gehen. (er ist im Netzwerk 24h/7d vertreten). also sende ich von dem PC außerhalb ein Paket zu meinem Raspberry und der Raspberry sendet dann in meinem Netzwerk das Magische Paket.(von hinten durchs Auge)

    Schlusswort:
    Ich glaube, dass dies kein Problem darstellen sollte und durch ein par Zeilen Code realisierbar. Da ich aber noch Anfänger in diesem Gebiet bin wäre ich über Hilfestellungen sehr Dankbar.

    <--Heute ist ein guter Tag zum basteln-->

    • Offizieller Beitrag

    Wie WOL vom Pi geht hab, ich ja oben schon verlinkt. Eine .bat ist ja dazu da um befehle der reihe nach abzuarbeiten. Also brauchst du irgendeinen Weg irgendwas an Pi zusenden. Mittels Socketserver auf dem Pi, socketclient auf dem Windows pc und passender portfreigabe und weiterleitung im router ist das möglich. Der Socketserver kann dann auch gleich das WOL starten. Und wenn du unbedingt eine .bat willst, kannst du den socket client per batch starten :). Das ganze in python sollte bloss ein paar Zeilen lang langs. Den Server/vlient findest du in python doku.

  • Auf dem PI :

    Code
    sudo apt-get install etherwake


    SSH des PI zum Internet freigeben
    ( Absichern nicht vergessen, Tuts dazu gibt es hier im Forum)

    Auf deinem PC irgend wo auf der Welt :

    Code
    ssh <deinpi.irgendeindyndns>

    Anmelden

    Code
    sudo etherwake <MAC-ADRESSE deines Server>

    Fertig.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (2. Oktober 2014 um 12:38)

  • Vielen Dank für eure Antworten.

    ich möchte keinen SSH Zugang öffnen.

    Ziel meines Projektes ist, dass ich später jedem x-beliebigen die Software in die Hand drücken kann, der nur befugt ist meinen Server zu starten und sonst nichts.

    Mit SSH ist die Gefahr, dass jemand anders meine Einstellungen verändern kann oder Einblick in meinen Pi hat. Des Weiteren muss ich Benutzer festlegen was ich nicht möchte.

    Ist es nicht möglich ein Paket zu meinem Pi zu senden ohne dass ich dafür irgendeine Software brauche?

    Im Prinzip soll es so aussehen:
    PC von irgendwo:
    sendet Paket 012ac7

    Fritzbox:
    sendet das Paket über einen geöffneten Port an den Pi

    Pi:
    empfängt das Paket 012ac7.
    Jetzt weiß der Pi, dass das Paket 012ac7 das Paket ist, bei dem er das Magische Paket schickt.
    ->Nun sendet er das Magische Paket

    das wars. Kein login benötigt oder was anderes. Die Adresse von der Fritzbox und der Port ist vorher bekannt und in der .bat Datei integriert.

    Das ist eine Theoretische Überlegung von mir, ob es praktisch umzusetzen ist weiß ich nicht.

    <--Heute ist ein guter Tag zum basteln-->

    Einmal editiert, zuletzt von Xeriox (2. Oktober 2014 um 16:44)

  • Das würde ich ja am liebsten machen wenn das gehen würde.

    Aber das Problem ist ja, dass das Paket in der Fritzbox hängen bleibt. (oder irre ich mich?)

    Ich befinde mich mit meinem PC nicht im selben Netzwerk wie der Server sondern bin außerhalb des Privaten Netzes.

    <--Heute ist ein guter Tag zum basteln-->

    Einmal editiert, zuletzt von Xeriox (2. Oktober 2014 um 17:07)

  • Ich weiss das jetzt nicht auswendig ... da müsstest Du mal recherchieren (dbv oder wer hatte dir glaube ich ja mal nen Link gepostet) über welchen Port das WOL Paket geht, wie es aufgebaut sein muss und ob es udp, tcp oder ganz was anderes ist.
    Portweiterleitung oder Umleitung (also anderen Eingangsport) in die Box und dann sollte das gehen ... warum auch nicht?
    cu,
    -ds-

  • Achso, du meinst ich kann einfach ein UPD Paket schnüren und direkt zum Server senden obwohl dieser aus ist?

    Ich dachte, dass die Fritzbox erkennt ob der Server online ist oder nicht und sendet das Paket dann nicht weiter...

    Für meine .bat (Bash) Datei habe ich folgendes Gefunden:

    echo "012ac7" >/dev/udp/$host/$port

    wobei $host und $port Variablen sind.

    Der Befehl soll folgendes Leisten: Er sendet ein UDP-Paket mit dem Inhalt 012ac7 zur Adresse $host über den Port $port.


    Habe ich jetzt richtig verstanden, dass ich anstelle von 012ac7 mein Magisches Paket eingebe, dass dann mein Server hochfährt?

    <--Heute ist ein guter Tag zum basteln-->

    Einmal editiert, zuletzt von Xeriox (2. Oktober 2014 um 18:03)

  • Wie gesagt ... das müsste ich mir erst durchlesen, wie das mit dem WOL funktioniert.
    Ob das jetzt udp oder was auch immer ist, kann ich nicht sagen. Ein Router darf imho keine Pakete verwerfen, es sei denn, er hat eine integrierte Firewall und das Paket wird rausgefiltert.
    Jedenfalls geht das über die MAC Adresse, weil der Rechner ja zu diesem Zeitpunkt vermutlich (noch?) keine IP (oder mehr?) hat.
    Das Paket wird von der Netzwerk-Karte rausgefischt, die dann das Hochfahren auslöst - vorausgesetzt, das wird vom Rechner unterstützt.
    Was für ein magic da übermittelt wird, kann ich aber so auch nicht sagen. Ob Du den frei definieren kannst ... keine Ahnung, wie gesagt, müsste ich erst nachlesen ...
    cu,
    -ds-

  • Das Magic Packet ist wie folgt aufgebaut:
    4x FF, 16x MAC-Adresse.

    Die Art des Paketes ist egal. Ich bevorzuge glaube ich UDP.

    Der angesprochene Port ist 7 bzw 9.

    Somit würde der Befehl für meine .bat Datei wie folgt aussehen:

    echo "FFFFFFFFMACMACMACMACMACMACMACMACMACMACMACMACMACMACMACMAC" >/dev/udp/$host/9

    mal schaun ob ichs hin bekomme.

    <--Heute ist ein guter Tag zum basteln-->

  • naaaa ... ich denke, mit FF ist nicht "FF" gemeint sondern 0xFF ... also 255 (oder -1 je nach Sichtweise).
    Da wirst Du Dir vermutlich eine kleine binäre Datei anlegen müssen, die Du dann versendest.
    Dasselbe gilt imho für die MAC ... da ist dann z.B. 0B auch nicht "0B" sondern 11 ;)
    cu,
    -ds-

  • Irgendwie bekomm ich es nicht hin.

    Hat jemand eine Ahnung wie ich in Windows mit einer Batch Datei ein UDP Paket mit Hexadezimalem Inhalt verschicken kann?

    <--Heute ist ein guter Tag zum basteln-->

    Einmal editiert, zuletzt von Xeriox (3. Oktober 2014 um 20:27)

  • Hey, Willkommen im Forum! :thumbs1:

    Dein Weg wäre durchaus machbar, denke da an einen Webserver mit einer PHP-Datei, die etwa so aussieht und dann den Server startet:

    Zitat


    win7-server-start.php
    <?php
    exec("wol e6:7g:7h:8h:42:5d");
    echo "Server gestartet!";
    ?>

    Also wenn die PHP-Datei aufgerufen wird, führt die exec()-Funktion einen beliebigen Befehl in der Konsole aus. Diese Datei müsstest du dann allerdings SEHR GUT ABSICHERN. Also Login, Cookies, Sessions usw.! Wenn jemand anderes diese Datei aufruft würde dein Server auch starten!!! Ein Wake-on-Lan Paket Sender für Linux müsste ja auffindbar sein!

    Mfg perry

    P.S.: Kann dir bei PHP helfen!

    MfG Perry

    Der Rauch ist dann wohl kein gutes Zeichen :lol::wallbash:

    Einmal editiert, zuletzt von perry (4. Oktober 2014 um 22:10)

  • Hey Perry,

    danke für deine Antwort. Deine Version würde mich sehr interessieren, da alle anderen Versuche meinerseits noch nicht zum Erfolg führten...

    Du kennst dich mit PHP aus? Können ja per PN gewisse Dinge klären wie Sicherheit und so.

    Find ich sehr nett von dir.

    Viele Grüße

    Xeriox

    <--Heute ist ein guter Tag zum basteln-->

  • Ob ich nun den Webserver absichere oder SSH ist im Grunde das selbe.
    Wenn du es mit einem Webserver und PHP machen möchtest, ok.

    Du benötist allerings immer noch eine Software uf dem PI ( etherwake ) welche das Magic Paket schickt.
    Das wird im allgemeinen an die Broadcast Adresse im Netz geschickt in irgend einem IP Paket, bleibt also nicht in der FB hängen sondern geht an alle Rechner im Netzwerk.
    Der Inhalt ist tatsächlich "FFFFFFFFFFFF" + 16x MAC des Zielrechners. (nicht 0xff).
    An welchen Port das geht und ob tcp oder udp ist egal.
    Das wird direkt von der Netzwerkkarte ausgewertet, kommt also erst gar nicht hoch ins OS.
    Das nur mal nebenbei.

    Wenn du dir so sehr einen Kopf um Sicherheit machst, benutze einfach MyFritz, geh per Remote auf die Fritzbox und sende von dort das MP. Das geht dann auch mit Box2go auf nem Android ganz prima, da gibt es extra ne Schaltfläche für WoL.

    So oder so musst du dein netzwerk zum Internet öffnen.
    Ist halt nur die Frage wie.
    Ob nun SSH oder http(s) oder MyFritz. Absichern musst du es auf jeden Fall irgendwie.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Hallo Der_Imperator,

    danke für deinen Beitrag du hast mir sehr weitergeholfen.

    Sicherheit ist mir sehr wichtig. Ich dachte, dass ich über einen Webserver keine direkte Verbindung zu meinem Pi habe -> nur ein Befehl.

    Bei SSH habe ich direkten Zugriff mit Rechten die ich individuell vergeben kann. (Oder lieg ich falsch?).

    Das mit der Fritzbox direkt zugreifen ist mir zu heikel. Ich brauche erstens ein Tor zu meiner Fritzbox. Des Weiteren kann ich mit dem Tor alle Einstellungen meiner Fritzbox ändern. (Oder sehe ich das falsch?)
    Damit hätte ich jedem Hacker + NSA freien Zugang zu meinem Privaten LAN eröffnet. (Sind sicherlich noch irgendwelche Sicherheitslücken drin)

    Was Sicherheit und Fritzbox angeht vertraue ich ihr 0. Meinem Pi vertraue ich am Meisten, obwohl ich dort sicherlich auch Sicherheitslücken drin habe. Beim Pi habe ich allerdings die Möglichkeit die Lücken zu schließen (habe ich bei der Fritzbox nicht).

    Ich hätte noch eine Verständnisfrage:
    Wieso funktioniert es nicht ein UDP Paket zu schnüren und über die Portfreigabe der Fritzbox zu meinem ausgeschalteten PC zu leiten?

    <--Heute ist ein guter Tag zum basteln-->

    Einmal editiert, zuletzt von Xeriox (7. Oktober 2014 um 12:15)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!