WOL via Website mit Webserver auf Fritzbox

Joker45

Neuer User
Mitglied seit
26 Mrz 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo Miteinander!

Ersteinmal vielen Dank für dieses tolle Forum. Meinen Speedport 701V zur Fritzbox zu machen, war dank Euch absolut kein Problem.

Nun habe ich folgendes vor.

Ich habe einen Server(WHS) im Keller der bei längerer untätigkeit ins Standby geht (lightsout). Dieser Server hostet auch einige Websites.
Meine Idee war nun die folgende:
Aktuell: auf externen Websapce eine HTML seite zum wecken des Servers.
Hier gibt es einen Knopf der ein script startet welches ein Magicpaket an die Dyndns Adresse des Routers schickt.
dann erfolgt eine Weiterleitung auf eine weitere html Seite welche ein script beinhaltet das die erreichbarkeit einer Datei auf dem Server prüft.
Sobald die Datei erreichbar ist erfolgt eine weiterleitung auf die Homepage des Servers.
siehe: http://ingoswhs.kilu.de/

Das Wecken via Magicpaket im LAN funktionierte generell, via Inet jedoch nur sporadisch.

Das brachte mich nun zu der Idee aus dem Speedport eine Fritzbox zu machen.

Und nun bin ich bei Euch gelandet :)

Ich habe hier viele tolle Infos gefunden, die in Ihrer Fülle jedoch eher zur verwirrung geführt haben.

Aber ich bin mir sicher, Ihr könnt mir auf die Sprünge helfen. Ich bin ein Windoof-freak und Linux-noop.

Ich habe nun den Speedport zu Fritz incl. freetz, WOLPlugin und lighttpd + den 0.0.0.0Patch. Konfiguriert ist nichts, denn ich scheitere schon an der Grundsatzfrage:
Zugriff auf die Box. Wenn ich hier z.B. Dateien finde und lese einfach in das Verzeichnis XY der Box kopieren, kann ich nur mit den Achseln zucken.
Nur um meinen Wissensstand zu erklären ;-)

Meine Idee, nachdem ich einige Ansätze im Foum gelesen habe:
HTTP Server der Box nutzen. Dort eine HTML Seite mit kurzer Erklärung ( wie im Beispiel oben) und Script das auf Knopfdruck den Server weckt.
Die Ansätze die ich gefunden habe vie telnet etc beziehen sich ja leider nicht auf Zugriff für Jedermann.

Ist das Machbar? Insbesondere da mein Speedport ja über keinen USB verfügt.

Vielen Dank vorab für jede Hilfe (Und ich kann wirklich jede gebrauchen, so planlos wie ich vor der Aufgabe stehe.)

Gruß

Ingo
 
Moin,

also, allein aus Gründen der Sicherheit würde ich das zumindest nicht direkt per HTTP auf der Box zuhause machen.
Aber das hängt natürlich von den Möglichkeiten auf dem anderen Server ab. Was kannst du denn da so machen?
Aus meiner Sicht der "beste"/sicherste Weg wäre eine Verschlüsselte Verbindung vom "Webspace" zum Server, etwa per VPN.

Letztlich musst du auf der Box lediglich einen Befehl per Kommandozeile absetzen, um ein WoL-Paket zu senden.

Defür böte sich noch der Zugang zu der Box per "SSH" an, gibt es das auf dem Server?

Letzter Vorschlag, vielleicht sogar der einfachste: Nutze das freetz-Paket "knockd".
Im Prinzip funktioniert das so:
Du sendest vom Webspace-Server aus bestimmte "Klopfzeichen", also bestimmte Pakete. Wenn die "richtige Kombination" in einer bestimmten Zeitspanne eingeht, "macht die Box etwas", in deinem Fall ein WoL-Paket an den Webserver schicken.

Oder hatte ich das falsch verstanden, und du wolltest "alles" auf der Box machen, also ganz ohne externen Webspace und die Box soll das "Prüfen, ob der Server da ist", wenn ja weiterleiten, wenn nein "Weckmöglichkeit" bieten??

Jörg
 
wow mit so einer schnellen Antwort habe ich nun garnicht gerechnet.
Super! Danke!

Also meine Methode mit einem WOl via Magicpaket kann ich mit der Fritzbox wohl vergessen!?! Oder muss ich neben dem forwarten des udp ports zum Server noch etwas in der Fritzbox einstellen.

Die Methode mit knockd klingt aber nach dem was ich brauche.
Was den Webspace angeht, kann dieser ruhig statt Fritzserver genutzt werden. Meine Überlegung war nur, das es lokal auf der Fritzbox vielleicht einfacher umzusetzen ist. Anfängervermutung ;)
Den Ablauf hast Du schon richtig verstanden.
1. Server wecken
2. erreichbarkeit prüfen
3. weiterleitung.

Wie kann ich das praktisch mit knockcd umsetzen?

Also wirklich step by step für doofe. Ich fürchte mein Windoof-KnowHow kann ich hier vergessen.

Und Danke für die Mühe und Geduld

Gruß

Ingo
 
Also meine Methode mit einem WOl via Magicpaket kann ich mit der Fritzbox wohl vergessen!?!
Etwas in der Art wäre meines Wissens auch möglich, dafür muss aber soweit ich weiß für die Weiterleitung auf der Frizbox ein "statischer ARP-Eintrag" gesetzt werden. Du willst ja das Paket an einen bestimmten PC Weiterleiten, dafür muss aber die Box die Adresse im LAN "zuordnen" können, denn im LAN wird das zu einer MAC-Adresse geschickt. Normalerweise geschieht das, mit einem ARP-Request, die Box "fragt", welche MAC dann zu der gewünschten IP gehört. Wenn der PC aber aus ist, kann er natürlich nicht antworten, so dass diese Zuordnung fest sein müsste. Das ganze ist nur grob beschrieben, ich nutze kein WoL.

Du kannst sicher knockd nutzen, aber auch direkt auf der Box einen Webserver laufen lassen, der die gewünschte Funktion hat. Die "cgi"s auf der Box, wie sie z.B. auch die Freetz-Oberfläche nutzt, sind "normale" Shellskripte, die den HTML-Code generieren. Sowas wie
Code:
#!/bin/sh
# hier deine Server-MAC
MAC=00:11:22:33:44:55
# hier deine Server-IP
IP=192.168.178.123  
if $(echo "$QUERY_STRING" | grep -q do_Wakeup) ; then
	ether-wake -i eth0 $MAC
	echo [I]<hier HTML-Seite "warte auf den Server 
	(vielleicht mit Countdown) 
	und nach x Sekunden Seite neu aufrufen" >
[/I]	exit
fi

if !(ping -c 1 $IP); then
[	echo [I]<hier der html-Code der Seite 
	"Server schläft, kann aber geweckt werden".
	Der "Weckaufruf" ruft diese cgi mit dem Parameter 
	"do_Wakeup" auf, der oben abgefragt wird>
[/I]else
	echo [I]<hier die HTML-Umleitung>
[/I]fi

Wie kann ich das praktisch mit knockcd umsetzen?
Erstmal knockd und (zur Einfachheit) die avm-firewall im freetz mit auswählen, damit das auf der Box ist.
Dann (keine Ahnung davon) mal schauen, welche Möglichkeiten dein Webserver hat, Ports anzusprechen (fsockopen() ??).

Sagen wir mal, als Klopffolge wählst du "UDP 54321" "UDP 4711"

In der GUI für den knockd stellst du dann die Portfolge ein und den Befehl zum wecken (ether-wake -i eth0 <Server-MAC>).
In der Firewall gehst du auf "Portforwarding" und machst einen Eintrag für die gewünschten Ports mit dem Ziel "Box selbst". In dem Fall oben "udp 54321" auf 0.0.0.0 und "udp 4711" auf 0.0.0.0.

Der Webserver muss dann zum Wecken diese Folge schicken.
Zu komplex muss das in diesem Fall garnicht sein, wenn jemand das "hackt" könnte er ja nix weiter schlimmes tun, als (unnütz) deinen Server zu starten...

Jörg
 
Könntest du nicht auch intern von der Fritz eine Seiote auf dem Webserver deines Servers aufrufen?
Ginge per crontab Boardsuche nutzen) und "wget".
Command ungefähr:
Code:
wget -q gttp://ip.des.ser.vers/htmlfile.htm -O - > /dev/null 2>&1

Damit kann man zumindest den Standby verhindern :D
 
Ich denke, der Clou war hier, den Standby ganz bewusst zu nutzen?!?

Jörg
 
Ihr seit super.

Vielen Dank dafür!

Ich hatte mich in der Zwischenzeit bei Techannel und hier im Forum schlau gelesen.
Via telnet und ether-wake funktionierts schonmal. Also die Grundvoraussetzungen laufen.

wg Standby: Wann der Server ins Standby darf regelt er selbst anhand von Prozessprüfung, Dateiprüfung, Netzaktivität usw.

Ich schau nun mal wie weit ich mit den neuen Infos komme. Dann kann ich ggf auch gezielte Fragen stellen :)
 
ok.. die ersten konkreten Probleme.
Aber sicher wisst Ihr Rat.
Ich habe mich für die Lösung mit Knockd entschieden.

via Portforwart habe ich 0.0.0.0 udp9 udp4711 offen (als Beispielconfig)
im freetz habe ich die knockd-config wie folgt gefüttert:

[options]
logfile = /var/log/knockd.log

[wol]
sequence = 9:udp,4711udp
seq_timeout = 30
tcpflags = syn
start_command = ether-wake -i eth0 macadresse
cmd_timeout = 10

ich habe mir eine windows.exe für knockd besorgt und es ersteinmal im lokalen LAN versucht.
also cmd:
knock -u 192.168.178.1 9:udp 4711:udp

doch da tut sich nichts.

Habt Ihr eine Idee?

Gruß

Ingo

EDIT:

Ok.. da ich hier nicht weiterkam, der Weckbefehl lokal aber funktioniert läuft nun ein webserver auf der Box und ich versuche mich in der Alternative des scripts.
 
Zuletzt bearbeitet:
Edit2:

Nun habe ich das obige beispiel angepasst und als index.sh abgelegt. Der Aufruf der Seite endet jedoch im 404.
Als Verzweiflungstat habe ich dann die index.sh in index html umbenannt und zu sehen bekam ich natürlich den shellcode + html Seite.

Wie mache ich es richtig?

Nächstes Problem:
Wie kann ich den Befehl do_Wakeup in die Seite übernehmen.
Ich fuchse mich zwar gerade in die shell-programmierung ein, habe hierzu aber keine Lösung gefunden. sh-befehle in html sind doch nicht möglich, oder habe ich da was falsch verstanden.

Vielen Dank und Gruß

Ingo
 
...habe ich die knockd-config wie folgt gefüttert:
[...]
sequence = 9:udp,4711udp
[...]
Steht das wirklich so da? Dann fehlt noch ein ":"
Code:
       sequence      = 9:udp,4711[B]:[/B]udp

Zu der "Webseite": Mit welchem Webserver machst du das? Ich habe sowas bislang nur mit dem busybox-httpd gemacht, und dort wäre das so möglich:

- "Root-Ordner", darin Ordner cgi-bin, z.B. /var/tmp/mywww/cgi-bin
- Datei /var/tmp/mywww/cgi-bin/index.cgi (ausführbar, z.B. mit chmod +x index.cgi)
- Diese Datei enthält dann den Shell-Code ...

Wie kann ich den Befehl do_Wakeup in die Seite übernehmen.

Einfach die gleiche Seite (also das Skript) mit einem Parameter aufrufen, aus dem Kopf geschrieben:
Code:
cat << 'EOF'
<button type="button" onclick='location.href="index.cgi?do_Wakeup";'>Den Server wecken</button>
EOF

Jörg
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,284
Beiträge
2,249,439
Mitglieder
373,877
Neuestes Mitglied
Bbj
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.