Discussion:
WoL für VMs?
(zu alt für eine Antwort)
kay
2017-03-30 20:06:28 UTC
Permalink
Hallo

nur so eine Idee aber... kennt jemand ein Tool oder einen weg wie man
eingerichtete aber nicht gestartete VMs auf einem ProxMox VE Server per
WakeOnLan starten kann?

Ich denke mir man müsste ein Tool (welches?) haben das auf dem VM-Host
auf WoL-Pakete wartet, diese auswertet und dann die mit dieser
virtuellen MAC assoziierte VM startet.

ProxMox kennt so was offenbar nicht, jedenfalls fand ich nichts im wiki
und in den einstellungen zur virtuellen NIC ist nur disconnect und VLANs
erwähnt.

Wäre nur ein nice2have und minimale Erleichterung das man eine VM so auf
Zuruf starten könnte. Und die Idee fände ich interessant.

Kay
--
Posted via SN
Marcel Mueller
2017-03-31 18:36:26 UTC
Permalink
Post by kay
nur so eine Idee aber... kennt jemand ein Tool oder einen weg wie man
eingerichtete aber nicht gestartete VMs auf einem ProxMox VE Server per
WakeOnLan starten kann?
Keine Ahnung von ProxMox, aber ich starte meine VMs einfach über
IP-Zugriffe auf bestimmte Ports. Also, wenn z.B. eine Remote RDP
Verbindung zur VM rein kommt, starte ich über inetd ein Skript, das
versucht den Traffic über netcat (nc) an das Ziel weiterzuleiten. Wenn
das fehl schlägt, wird ein start-Kommando abgesetzt und der Vorgang
einige Sekunden lang wiederholt, bis die Verbindung steht. Einziger
Nachteil: der gesamte Traffic geht unnötigerweise über diesen netcat
Proxy. Wirklich einen Unterschied habe ich aber noch nicht bemerkt.
Post by kay
Ich denke mir man müsste ein Tool (welches?) haben das auf dem VM-Host
auf WoL-Pakete wartet, diese auswertet und dann die mit dieser
virtuellen MAC assoziierte VM startet.
Das geht bestimmt auch irgendwie. Aber die einzige Frage, die bleibt
ist: warum sollte man das tun?
Wenn man in der Lage ist, ein Wake-Up Paket über's Netz zu senden, kann
man genauso gut ein Kommando zum starten der VM an den Host senden.


Marcel
kay
2017-03-31 19:47:29 UTC
Permalink
Post by Marcel Mueller
Post by kay
nur so eine Idee aber... kennt jemand ein Tool oder einen weg wie man
eingerichtete aber nicht gestartete VMs auf einem ProxMox VE Server per
WakeOnLan starten kann?
Keine Ahnung von ProxMox, aber ich starte meine VMs einfach über
IP-Zugriffe auf bestimmte Ports. Also, wenn z.B. eine Remote RDP
Verbindung zur VM rein kommt, starte ich über inetd ein Skript, das
versucht den Traffic über netcat (nc) an das Ziel weiterzuleiten. Wenn
das fehl schlägt, wird ein start-Kommando abgesetzt und der Vorgang
einige Sekunden lang wiederholt, bis die Verbindung steht. Einziger
Nachteil: der gesamte Traffic geht unnötigerweise über diesen netcat
Proxy. Wirklich einen Unterschied habe ich aber noch nicht bemerkt.
So was habe ich noch nicht versucht, Scripte über inetd zu starten. Und
ich weiß über diese möglichkeit mom. zu wenig. Evtl. ändere ich das
aber... S.u.
Post by Marcel Mueller
ist: warum sollte man das tun?
Wenn man in der Lage ist, ein Wake-Up Paket über's Netz zu senden, kann
man genauso gut ein Kommando zum starten der VM an den Host senden.
Das erfordert aber Shell-zugang - und das zum Host AUF dem die VMs
laufen. Allein das kann ja schon missbraucht werden. Das man sich
außerdem normalerweise auch noch einloggen muss (mit adminrechten) macht
es auch nicht besser.

Und das nur um eine VM zu starten? Da gefällt mir meine Idee besser.

Ein WoL Paket und die VM startet... ganz ohne Shell u.a.
Und, irgendwie ist auch DAS ein "Kommando" zum starten der VM. ;)

Ich meine: Bei echter BareMetal-HW geht's ja auch. Warum bei einem
VM-Host nicht, will mir nicht einleuchten.

Kay
--
Posted via SN
Marcel Mueller
2017-03-31 22:48:05 UTC
Permalink
Post by kay
Post by Marcel Mueller
ist: warum sollte man das tun?
Wenn man in der Lage ist, ein Wake-Up Paket über's Netz zu senden, kann
man genauso gut ein Kommando zum starten der VM an den Host senden.
Das erfordert aber Shell-zugang - und das zum Host AUF dem die VMs
laufen.
Nein, ein Service, der nur genau das kann reicht vollkommen.

Die einfachste Lösung ist ein Webinterface vom VM-Provider. Das sollte
für alle gängigen VM-Lösungen verfügbar sein.

Aber man kann auch einfach ein kleines CGI-Skript in apache2 einfügen,
dass per HTTP GET die per URL-Parameter angegebene VM startet und sonst
nichts.

Das kann man Problemlos per wget von jedem Rechner aus anstoßen.
Post by kay
Das man sich
außerdem normalerweise auch noch einloggen muss (mit adminrechten) macht
es auch nicht besser.
Deswegen ein geeigneter Service.
Post by kay
Und das nur um eine VM zu starten? Da gefällt mir meine Idee besser.
Falls sich noch niemand erbarmt hat, so etwas zu programmieren, ist es
allerdings auch der 20-fache Aufwand. Hier musst Du ganz tief auf die
Netzwerkebene herunter. Genau genommen muss das sogar in der VM-Host
Software gepatcht werden, denn das Paket muss ja auf eben jenem
virtuellen Netzwerk abgegriffen werden, was für die jeweilige VM
konfiguriert ist. Diese Software würde dann zum Teil der VM-Lösung. Ein
Programmierfehler mit zum Beispiel einer Buffer-Overflow-Lücke und man
könnte mit einem präparierten Paket den ganzen Host übernehmen.

Zudem geht WOL über die Mac-Adresse, denn IP-Stack nebst ARP existiert
ohne laufenden Kernel nicht. Nun sind Mac-Adressen von VMs bei weitem
nicht so konstant, wie man sie gerne hätte. VMs haben einfach keine
Seriennummer so wie Netzwerkkarten. Man kann sie nach Gutdünken klonen
und mal die eine und mal die andere nutzen. Kurzum, woher nimmst Du die
Mac-Adresse der zu weckenden VM? Die muss man erst mal mühsam ermitteln
und hoffen, dass sie sich bei einem echten Hardware- oder
Softwareupgrade des Host nicht ändert.
Post by kay
Ein WoL Paket und die VM startet... ganz ohne Shell u.a.
Und, irgendwie ist auch DAS ein "Kommando" zum starten der VM. ;)
Klar. Ist halt bei VMs nur unnötig aufwändig.
Post by kay
Ich meine: Bei echter BareMetal-HW geht's ja auch. Warum bei einem
VM-Host nicht, will mir nicht einleuchten.
Natürlich kann man auch das virtualisieren. Die Frage ist nur wozu?
Ich meine, die Kapriolen mit den WOL-Paketen macht man ja nicht, weil
das so schön ist, sondern weil es nicht anders geht. Die Dinger kann man
z.B. prinzipsbedingt nicht routen.


Marcel
Thorsten Albrecht
2017-04-01 10:06:31 UTC
Permalink
Post by Marcel Mueller
Natürlich kann man auch das virtualisieren. Die Frage ist nur wozu?
Ich meine, die Kapriolen mit den WOL-Paketen macht man ja nicht, weil
das so schön ist, sondern weil es nicht anders geht. Die Dinger kann man
z.B. prinzipsbedingt nicht routen.
Ich konnte vor ein paar Jahren, als ich noch einen Lancom-Router
einsetzte, ein WoL-Paket von Remote losschicken, welches via
Portforwarding im lokalen Netz verteilt wurde und dann auch den
Rechner aufweckte. Fällt so etwas evtl. nicht unter "routen"?

Thorsten
kay
2017-04-01 18:27:24 UTC
Permalink
Post by Thorsten Albrecht
Post by Marcel Mueller
Natürlich kann man auch das virtualisieren. Die Frage ist nur wozu?
Ich meine, die Kapriolen mit den WOL-Paketen macht man ja nicht, weil
das so schön ist, sondern weil es nicht anders geht. Die Dinger kann man
z.B. prinzipsbedingt nicht routen.
@Marcel. WoL-Routing brauche ich nicht. S.u. mehr.
Aber ein Praktisches Anwendungsbeispiel:

Kodi kann einen entfernten Server bei Zugriff durch WoL wecken. Den
Server durchlaufen lassen kostet extra strom. Ihn virtualisiert ondemand
zu starten - auf einem host der eh schon läuft, kostet nichts bis wenig
mehr.

Ja, man könnte den auch zeitgesteuert laufen lassen. Aber ich brauche
ihn nicht jeden tag und wenn er doch läuft braucht er auch wieder
nutzlos strom. Gut, ginge per cron auch mit einer VM.

Doch die 2-x Externen Festplatten die dieser Server dann z.b. NUR für
Videos, Musik u.s.w. aufwecken müsste würden dann jeden Tag mit
anlaufen. Und deren Verschleiß ohne not erhöhen. Festplatten waren auch
schon mal zuverlässiger. Und ein RAID für Terabytes an Mediendaten kann
ich mir nicht leisten - ein Backup ist noch teurer weil doch nur wieder
HDDs in Frage kämen.

Daher war die Idee diese Kette NUR und NUR dann in Bewegung zu setzen
wenn ich meinen Kodi starte und auch genau auf DIESE ressource zugreifen
will - und nicht etwa nur auf das aufnahme-depot des EasyVDR. DER wird
durch den pvr-client eh geweckt - und bei Aufnahmeterminen.
Sonst nicht.

Ich finde da wäre ein WoL einer VM die effektivste Möglichkeit.
Oder kennst du eine vergleichbar einfache Methode wie sich das nahtlos
(ohne Konfig) in kodi integrieren ließe?
Vermutlich nicht weil du Kodi nicht verwendest soweit ich mich erinnere.

Oder einen anderen Medienplayer der auf Windows, Linux, Raspi gleich gut
(oder schlecht) läuft - und bei dem man pro Freigabe ein script
abarbeiten könnte?
Post by Thorsten Albrecht
Ich konnte vor ein paar Jahren, als ich noch einen Lancom-Router
einsetzte, ein WoL-Paket von Remote losschicken, welches via
Portforwarding im lokalen Netz verteilt wurde und dann auch den
Rechner aufweckte. Fällt so etwas evtl. nicht unter "routen"?
Jein, würde ich sagen. Vermutlich war der zur LAN-LAN Kopplung
eingerichtet und hat da mittels proxyARP einfach weitergeleitet was
sonst nicht üblich ist.

So weit ich daran Erinnere. ProxyARP setzt bei einem host der z.b. einen
ppp-link hat die MAC-Adressen der gegenseite IMHO in die
ARP-Adressenliste des lokalen interfaces. Damit sind die gegenstellen in
der lokalen Broadcast-domäne "präsent" und hosts die z.b. per lanmanager
über broadcasts nach gegenstellen suchen finden diese dann auch. Die
Pakete landen somit auch beim richtigem host (dem mit dem ppp-interface)
und der leitet sie dann weiter.

Ich weiß nicht ob man das routing nennen kann. Es wird ja keine adresse
umgesetzt, es wird eigentlich nur geforwarded.

Ähnlich hatte ich auch bei meiner Idee gedacht. Bei ProxMox kann ich im
GUI die MAC der VM nachlesen oder sie setzen. Diese z.b. mittels

'arp -i vmbr0 -s <mac>'

setzen und dann sollten mindestens schon mal die WOL-Pakete dazu auf der
bridge des VM-Hosts aufschlagen.

Dann.... weiß ich auch noch nicht weiter.

Ob man den paketfilter auf eine ankommende MAC-Anfrage hin eine aktion
auslösen lassen kann... ich vermute schon. Aber ob diese aktion auch ein
script oder ein kommando sein kann - statt nur accept, deny, reject -
weiß ich mom. nicht.

Kay
--
Posted via SN
kay
2017-04-01 19:14:58 UTC
Permalink
Post by kay
So weit ich daran Erinnere. ProxyARP setzt bei einem host der z.b. einen
ppp-link hat die MAC-Adressen der gegenseite IMHO in die
ARP-Adressenliste des lokalen interfaces.
Aus einem unbestimmten Gefühl heraus las ich das noch mal nach und muss
mich korrigieren. ProxyARP antwortet mit der eingebauten MAC aber das
nicht nur mit der eigenen IP sondern auch der der gegenstellen.

Der Rest stimmt dann wieder - nur meine Idee ist diesbezüglich wohl
nicht realisierbar.

Kay
--
Posted via SN
Marcel Mueller
2017-04-02 07:36:43 UTC
Permalink
Post by kay
Kodi kann einen entfernten Server bei Zugriff durch WoL wecken. Den
Server durchlaufen lassen kostet extra strom.
Ähm, bei einem realen Server hätte ich jetzt gesagt, Du hast recht, aber
bei einer VM???

Hast Du mal gemessen? Also bei mir zieht der Server, wenn alle VMs
laufen etwa 2W mehr, als wenn sie alle aus sind. Das ist vernachlässigbar.
Post by kay
Ihn virtualisiert ondemand
zu starten - auf einem host der eh schon läuft, kostet nichts bis wenig
mehr.
Eine VM durchlaufen zu lassen auch nicht.
Post by kay
Doch die 2-x Externen Festplatten die dieser Server dann z.b. NUR für
Videos, Musik u.s.w. aufwecken müsste würden dann jeden Tag mit
anlaufen. Und deren Verschleiß ohne not erhöhen.
Na, da machen wir mal eine Dose Mitleid auf - ooooh - so, muss reichen.
Post by kay
Festplatten waren auch schon mal zuverlässiger.
In der Tat. Aber die avisierten Maßnahmen tragen jedenfalls nicht dazu bei.
Post by kay
Und ein RAID für Terabytes an Mediendaten kann
ich mir nicht leisten - ein Backup ist noch teurer weil doch nur wieder
HDDs in Frage kämen.
So ein Mist, jetzt habe ich kein Mitleid mehr da. Weißt ja: kein Backup,
kein Mitleid.

Bei mir laufen die Filme alle paar Wochen auf LTO-3 Bänder. Die
gebrauchte Tape-Library mit Wechsel-Roboter hat in der Bucht gut 50€
gekostet - wer will schon Tape Libraries - die gebrauchten Bänder noch
weniger. Und da passen schon ein paar Tera drauf. Und zuverlässiger als
Platten ist das auch.
Post by kay
Daher war die Idee diese Kette NUR und NUR dann in Bewegung zu setzen
wenn ich meinen Kodi starte und auch genau auf DIESE ressource zugreifen
will - und nicht etwa nur auf das aufnahme-depot des EasyVDR. DER wird
durch den pvr-client eh geweckt - und bei Aufnahmeterminen.
Also eine VM ist es bei mir nicht. Aber den VDR Service starte ich auch
nur, wenn ein Client connected. VDR ist nämlich zu blöd, das DVB-Device
bei Nichtgebrauch zu schließen. Dadurch würde die SAT-Verteilung im Haus
24/7 mit Strom versorgt, und das sind eher 10W. Das will ich nicht. Das
läuft aber über inetd.
Post by kay
Ich finde da wäre ein WoL einer VM die effektivste Möglichkeit.
Wenn Du unbedingt meinst, dann programmiere es halt. Ich mache das
jedenfalls nicht.
Post by kay
Oder kennst du eine vergleichbar einfache Methode wie sich das nahtlos
(ohne Konfig) in kodi integrieren ließe?
inetd und nc ist eine Lösung. Da muss man in Kodi gar nichts machen,
außer einen anderen Port und/oder eine andere IP eintragen.
Post by kay
Vermutlich nicht weil du Kodi nicht verwendest soweit ich mich erinnere.
Das ist total egal. VDR wacht bei mir mit jedem beliebigen VDR-Client
genauso auf wie mit VLC, wenn der einen Stream abruft, oder wenn ich mit
dem Browser im Web-Interface einen Knopf drücke. Und selbstverständlich
auch ein paar Minuten vor der nächsten Aufnahme. AFAIR habe ich dafür 2
Ports umgeleitet. Den von vdr-live und den vom streamdev-server. Und ein
Skript, was beim vdr-Shutdown einen at-Timer startet.

Die Datenplatte mit den Filmen hängt natürlich direkt am Server und wird
von dem bei Nichtbedarf schlafen gelegt. Das bedeutet, sie wacht bei
Direktzugriffen auf selbige unabhängig auf.
Post by kay
Oder einen anderen Medienplayer der auf Windows, Linux, Raspi gleich gut
(oder schlecht) läuft - und bei dem man pro Freigabe ein script
abarbeiten könnte?
Das kann man vermutlich den meisten der Open-Source Clients auch
beibringen. Die haben doch bestimmt alle Hooks. Da muss man doch
bestimmt nur an der richtigen Stelle in der Konfig etwas eintragen oder
auch nur eine Datei ablegen.

Allerdings braucht man auch eine Lösung, um das Teil wieder schalfen zu
legen. Das stelle ich mir wesentlich schwieriger vor, denn woher soll
ein Client wissen, dass er der letzte ist und das gerade keine Aufnahme
läuft. Das muss der Server also komplett selber auf die Reihe bekommen.
In meinem Fall (vdr) ist das glücklicherweise schon eingebaut. 5 Minuten
ohne aktiven Stream und mehr als 30 Minuten bis zur nächsten Aufnahme
und vdr beendet sich selbst. Die meisten fertigen Konfigurationen sind
so eingerichtet, dass dabei der ganze Rechner herunterfährt und ein
BIOS-Timer für die Aufnahme programmiert wird. Das habe ich halt
zugunsten von service vdr stop und at ... geändert.
Post by kay
Ob man den paketfilter auf eine ankommende MAC-Anfrage hin eine aktion
auslösen lassen kann... ich vermute schon. Aber ob diese aktion auch ein
script oder ein kommando sein kann - statt nur accept, deny, reject -
weiß ich mom. nicht.
Keine Ahnung, mit iptables habe ich mich noch nicht herumgeärgert.
Könnte sein, dass das nur indirekt geht. Also Event wird detektiert und
ein anderes Programm mit einer Subscription auf diese Security-Events
führt daraufhin eine Aktion aus.


Marcel
Thorsten Albrecht
2017-04-02 11:12:31 UTC
Permalink
Post by kay
Post by Thorsten Albrecht
Ich konnte vor ein paar Jahren, als ich noch einen Lancom-Router
einsetzte, ein WoL-Paket von Remote losschicken, welches via
Portforwarding im lokalen Netz verteilt wurde und dann auch den
Rechner aufweckte. Fällt so etwas evtl. nicht unter "routen"?
Jein, würde ich sagen. Vermutlich war der zur LAN-LAN Kopplung
eingerichtet und hat da mittels proxyARP einfach weitergeleitet was
sonst nicht üblich ist.
Nein, den hatte ich nicht als LAN-LAN-Kopplung eingerichtet. Der hat
einfach alles, was er von außen auf Port 7 oder 9 bekommen hat, in das
lokale Netz per Portforwarding weitergeleitet.

Das geht mit meiner Fritzbox leider nicht mehr...

Thorsten

Lesen Sie weiter auf narkive:
Loading...