Forum: PC-Programmierung Wake on LAN Skript auf Raspy


von Peter (Gast)


Lesenswert?

Guten Morgen zusammen,

ich möchte mir ein Script erstellen, welches im Hintergrund auf einem 
Linux läuft und bei Anfragen an bestimmte IP adressen ein WOL Packet 
verschickt.

Folgender "HW" Aufbau:
- Synology im Heimnetz (WOL an)
- OpenVPN mit PiHole auf einem Raspy über DDNS erreichbar

Anwendungsfall ist sicher schnell erraten: Ich möchte über den VPN ggf 
meine Synology aufwecken. Einen WOL Packet übers Terminal zu versenden 
klappt und macht auch was es soll, aber übers Handy-Terminal ist das 
recht umständlich.

Daher die Idee eines Shell Scripts, welches im Hintergrund auf dem Raspy 
läuft und bei Anfragen an eine bestimmte IP Adresse (bekommt den 
Datenverker ja komplett mit als VPN Server) ein WOL Paket an die 
jeweilige IP Adresse / zugehörige MAC schickt.

Da ich absolut kein Script Pro bin, hier mal die Frage nach Hilfe. Im 
Netz finde ich recht wenig dazu - oder ich suche einfach falsch...

Vielen Dank!

von Imonbln (Gast)


Lesenswert?

Peter schrieb:
> Daher die Idee eines Shell Scripts, welches im Hintergrund auf dem Raspy
> läuft und bei Anfragen an eine bestimmte IP Adresse (bekommt den
> Datenverker ja komplett mit als VPN Server) ein WOL Paket an die
> jeweilige IP Adresse / zugehörige MAC schickt.

Ich halte die Idee für so mittelprächtig, das deine Synologie startet, 
wenn eine Magic IP angerufen wird.

Wie wäre es, wenn du dir stattdessen knockd.conf auf den Raspery Pi 
installierst und auf den Handy eine entsprechende App?

von Peter (Gast)


Lesenswert?

Imonbln schrieb:
> Ich halte die Idee für so mittelprächtig, das deine Synologie startet,
> wenn eine Magic IP angerufen wird.

Kannst du das näher erläutern? Meine Synology hat eine feste IP mit der 
ich sie über diverse apps erreiche. Ich hätte an sowas gedacht wie: 
"Sobald Anfragen an IP 192.168.2.77 kommen, sende ein WOL packet an die 
hinterlegte MAC Addr zu der IP 192.168.2.77."

Imonbln schrieb:
> Wie wäre es, wenn du dir stattdessen knockd.conf auf den Raspery Pi
> installierst und auf den Handy eine entsprechende App?

Knockd kenne ich noch nicht. Werde ich mir mal anschauen, danke! Würde 
den ablauf jedoch gerne automatisieren.

von Imonbln (Gast)


Lesenswert?

Peter schrieb:
> Kannst du das näher erläutern? Meine Synology hat eine feste IP mit der
> ich sie über diverse apps erreiche. Ich hätte an sowas gedacht wie:
> "Sobald Anfragen an IP 192.168.2.77 kommen, sende ein WOL packet an die
> hinterlegte MAC Addr zu der IP 192.168.2.77."

Ich meine, dass es immer mal ein Client gibt, der ein Paket an die 
magische Adresse sendet, vor allen, wenn es die reguläre Adresse der 
Synology ist, oder die Adresse vom DHCP vergeben wird. Dann startet die 
Synology unnötig!
Das klingt sehr anfällig und selbst gebaut.

Peter schrieb:
> Knockd kenne ich noch nicht. Werde ich mir mal anschauen, danke! Würde
> den ablauf jedoch gerne automatisieren.

Die Idee mit Knockd ist das es automatisch passiert, du wirst von Hand 
es eher nicht schaffen, die Sequenz zeitlich zu treffen. Meisten hast du 
da im Handy einen Button und dann startet der Knockd dein Shellscript, 
um die Synology aufzuwecken.

von Peter (Gast)


Lesenswert?

Imonbln schrieb:
> Ich meine, dass es immer mal ein Client gibt, der ein Paket an die
> magische Adresse sendet, vor allen, wenn es die reguläre Adresse der
> Synology ist, oder die Adresse vom DHCP vergeben wird. Dann startet die
> Synology unnötig!
> Das klingt sehr anfällig und selbst gebaut.
ah ok, jetzt verstehe ich dich besser. Der DHCP arbeitet erst ab 
192.168.2.100 - weiter ist die 77 auch nicht die std adresse für die 
syn. aber es stimmt schon, dass es wahrscheinlich ist, dass irgendein 
client mal was an die adresse schickt und dann die syn aufweckt...

Imonbln schrieb:
> Die Idee mit Knockd ist das es automatisch passiert, du wirst von Hand
> es eher nicht schaffen, die Sequenz zeitlich zu treffen. Meisten hast du
> da im Handy einen Button und dann startet der Knockd dein Shellscript,
> um die Synology aufzuwecken.

mmh mit einem button auf dem home screen, könnte ich mir das wohl noch 
vorstellen denke ich.

Aber eine Möglichkeit das ganze zu automatisieren, wenn eine Anfrage an 
die Syn kommt siehst du nicht?

von Εrnst B. (ernst)


Lesenswert?

Ich hatte das für ein ähnliches Setup früher so gelöst:

Am ARM (war noch vor der RasPi-Zeit) lief ein Apache als reverse-proxy.

der hatte in etwa sowas als Config (.htaccess):
1
RewriteEngine On
2
RewriteCond %{REQUEST_URI}      !503\.php
3
RewriteRule (.*)        http://192.168.123.45/pfad/$1 [P]
4
ErrorDocument 503 /pfad/503.php
5
6
AuthUserFile       ...
7
Require            valid-user

Idee: Wenn 192.168.123.45 Offline ist, gibt's HTTP-Error 503 
(https://http.cat/503)
Dieser wird dann wg "ErrorDocument" über das 503.php-File ausgeliefert.

im PHP-File war dann einerseits das Auslösen des WoL-Packets an 
192.168.123.45 drinnen, zum anderen ein 'header("Refresh: 30");' um 
regelmäßig zu Schauen ob der Host inzwischen hochgefahren ist.

Den Wakeup hatte ich allerdings nicht direkt im PHP aufgerufen, sondern 
gesondert laufen. Das PHP hat das nur über eine spezielle Log-Meldung 
angestoßen.
(Jugendsünde ... PHP ist schon schlimm genug ansich, aber zumindest 
war's kein Suid-Root-PHP :)

Und wenn jemand das Passwort nicht kennt, gibt's http-Fehler 
https://http.cat/403 , kein extra Error-Document, und auch kein 
nutzloses Aufwecken des Backend-Servers.

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

das klingt ziemlich spannend, aber für mich auch recht herausfordernd 
wenn ich ehrlich bin!

Als guideline kann man die Idee aber gut verwenden, denke ich :)

Würde es so wahrscheinlich dann eher über ein python skript lösen?

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Peter schrieb:
> - OpenVPN mit PiHole auf einem Raspy über DDNS erreichbar

> aber übers Handy-Terminal ist das
> recht umständlich.

Wenn das Handy im VPN ist:

Eine beliebige WOL App deiner Wahl auf dem Handy. Es gibt mehr als genug 
https://play.google.com/store/search?q=wake%20on%20lan&c=apps&hl=de

von Karl (Gast)


Lesenswert?

Hannes J. schrieb:
> Wenn das Handy im VPN ist:
> Eine beliebige WOL App deiner Wahl auf dem Handy. Es gibt mehr als genug

WoL über VPN geht nicht. Kannst ja Mal googeln warum.

von Peter (Gast)


Lesenswert?

Ja leider ist WOL über VPN nicht möglich...
Wäre es möglich, dann würde ich ganz einfach wie im Heimnetz die 
Synology App verwenden und ein WOL Paket schicken...

Ich glaube ich werde mir dann irgendwie ein python skript (an Εrnst B.s 
Idee angelehnt) zusammenbasteln müssen...

von Peter (Gast)


Lesenswert?

Εrnst B. schrieb:
> Und wenn jemand das Passwort nicht kennt, gibt's http-Fehler
> https://http.cat/403 , kein extra Error-Document, und auch kein
> nutzloses Aufwecken des Backend-Servers.

Über diesen Punkt bin nun shon öfter gestolpert... Könntest du den evtl 
nocheinmal ein wenig genauer erklären?
Ich verstehe nicht ganz wie überprüft werden soll, ob das PW stimmt ohne 
den dafür vorgesehenden Server aufzuwecken?

von Εrnst B. (ernst)


Lesenswert?

Peter schrieb:
> Über diesen Punkt bin nun shon öfter gestolpert... Könntest du den evtl
> nocheinmal ein wenig genauer erklären?

Ich hatte einen "Dauernd An" Server, sparsames ARM-Board, mit dem 
(Reverse-Proxy-)Apache-Webserver, der Passwort-Prüfung, dem Wake-On-Lan, 
später auch LetsEncrypt usw.
Der hat nur das "Basic Auth"-Passwort geprüft, nix weiter, und nur wenn 
das Basic-Auth Passwort gestimmt hat, hat der die Maschine im 
Hintergrund geweckt.
Und erst wenn die Wach war, gab's den "echten" Login auf der Webseite.
Das hat den Proxy dann aber nicht weiter interessiert, der hat das nur 
durchgeleitet.

d.H.: Zwei Passwörter: Ein simples "Basic Auth", was z.B. direkt mit 
"https://username:passwort@servername.dyndns.xxx/"; im Bookmark stehen 
kann.
Und das "echte" Passwort für die Webapplikation.
Das Basic-Auth Passwort muss dabei nicht sonderlich sicher sein, es soll 
nur verhindern dass jeder Script-Kiddie-Portscan ein Wake-On-Lan 
ausführt.

von Hans (Gast)


Lesenswert?

Hast du eine Fritz Box? Dann könnte das ggf. funktionieren, die müsste 
den arp request eigentlich mitbekommen.

https://avm.de/service/wissensdatenbank/dok/FRITZ-Box-7490/36_Netzwerkgerat-uber-das-Internet-starten-Wake-on-LAN/


Schau einmal ob du deinem Netzwerkadapter auch einfach sagen kannst, 
dass er bei einer direkten Anfrage das System aufwecken soll:

https://www.thomas-krenn.com/de/wiki/Wake_on_LAN_unter_Linux



Ansonsten einfach das Tool wakeonlan benutzen:

https://packages.ubuntu.com/focal/wakeonlan

Wenn du damit klar kommst, dass dein NAS bei jeder VPN Verbindung 
aufwacht:

https://newbedev.com/how-do-i-run-a-script-after-openvpn-has-connected-successfully

Nach "--up /etc/openvpn/nat.sh" suchen, dann hast es gleich.

Bin mir nicht sicher ob das ggf. abhängig vom Client funktioniert, wenn 
ja könntest einfach eine zweite VPN Verbindung anlegen...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.