Wake on LAN bei eingeschaltetem Ethernet UND WLAN

G

giukanis

Mitglied
Thread Starter
Dabei seit
19.08.2005
Beiträge
50
Reaktionspunkte
5
Hallo zusammen,

ich verzweifel hier. Ich möchte meinen Rechner gerne per WOL aus dem Ruhezustand wecken. Das geht natürlich nur über Ethernet. Deshalb ist das natürlcih auch an und mit IP etc versorgt. Aufwachen klappt auch ohne Probleme.

Wenn ich allerdings Ethernet UND WLAN einschalte klappt es mit dem Aufwachen nicht mehr. Die Reihenfolge der Netzwerke habe ich auch schon getauscht, so dass Ethernet als primärer Netzwerkadapter fungiert.

Kennt jemand das Problem, bzw. weiss wie man das umgehen kann?

WLAN benötige ich, da ich sonst über mein iPhone die Remote für iTunes nicht verwenden kann...

giukanis.
 
Läuft WLAN als Peer-to-Peer zw. iPhone und dem Rechner, oder über einen WLAN-Router? Sofern über einen Router, dann funktioniert iTunes Remote definitiv auch ohne Peer-to-Peer.
 
Gute Frage... Mein WLAN läuft eigentlich über WLAN Router und DHCP hierüber. Sollte heissen, dass das kein peer to peer ist, oder?
 
Die WoL-Benachrichtung laufen nicht auf IP-Ebene sondern auf Ethernet/MAC. Ich weiss nur gerade nicht inwiefern das mit deinem Problem zu tuen hat ;-).

Ich könnte mir vorstellen das du eine falsche Benachrichtung rausschickst. Welches Tool verwendest du dafür? Wenn du bei diesem eine IP-Adresse zum aufwachen eingeben kannst, wird er selbstständig versuchen die MAC-Adresse zu ermitteln, dies könnte fehlschlagen.

Gruss
Alex
 
Das ist ja das merkwürdige. Das Paket sollte richtig sein, denn wenn ich WLAN aushabe und nur Ethernet anhabe, dann funktionierts.

Wenn aber WLAN und Ethernet an sind, funktioniert es nicht...
 
Wahrscheinlich deswegen weil er es an die WLAN-MAC und nicht an die Ethernet-MAC sendet (siehe Alex's Kommentar).
 
Wissen wir schon,
... welches Gerät das WOL Paket rausschickt?
...welche Werkzeug dafür verwendet wird?
 
Ich verwende die Mac von dem Ethernetchip. Versendet wird das Paket aus dem Internet (http://stephan.mestrona.net/wol/mywol.php) Ist UDP und Port 9. Dieser wird im Router an die IP des Ethernetadapters weitergeleitet auf Port 9.

Es klappt ja auch, allerdings nur, wenn WLAN aus ist. Wenn Ethernet UND WLAN an sind, gehts nicht mehr....
 
Eigentlich sollte ein normaler "Consumer-Router" aus dem Netz ueberhaupt keine WoLAN-Pakete durchlassen. Sag uns doch bitte mal was das fuer ein Geraet ist und wie die Firewall konfiguriert ist.
 
Genau so ist es.

Ein WOL Paket ist ein Ethernetframe (=Layer 2 des ISO/OSI Modells). D. h. er muss von einem Gerät abgesetzt werden, das im selben physikalischen Netzwerk steht. Es heißt außerdem, dass es keine IP Adresse hat (Layer 3 des IOS/OSI Modells) und keinen Port (Layer 4 des ISO/OSI Modells)
 
Das ist ein Dlink DIR 300. Recht billig und recht einfach.

In der Firewall ist der Port 9 UDP frei und wird per Portweiterleitung auf eine feste IP weitergeleitet.
 
@maceis
Ich habe hier auch das erste Mal davon gehört. Aber nach kleiner Recherche, wobei ich noch nicht die passende RFC gefunden habe, scheinen viele ein WoL auf Basis eines UDP-Paketes an die Broadcast-Adresse mit Port 9 zu unterstützen.

@giukanis
Das Problem ist ganz einfach, weil Du Dein WoL-Paket nicht an die Broadcast-Adresse sendest sondern an die vermeintlich letzte IP-Adresse. Wenn es direkt an die IP-Adresse geht, dürfte es eigentlich gar nicht funktionieren. Wenn doch hat es wohl eher mit Glück zu tun.
 
Danke pingu... Das werde ich mal versuchen. Ich hab heute auch einen Trick gelesen, wie man das html-Konfigtool des Routers auch so überlisten kann, dass die Broadcastadresse eingetragen werden kann...
 
Das ganze funktioniert theoretisch schon, jedoch war das in der Standard so nicht vorgesehen.

Ein UDP-Paket ist ja verbindungslos und wird in jedem Fall in das lokale Netz geleitet, auch wenn die Gegenstelle nicht antwortet.

Das UDP-Paket ist also jetzt in einem Ethernet-Paket -> IP-Packet -> UDP auf dem Weg ins lokale Netz.

Ein WoL Paket besteht aus einem Ethernet-Packet mit Adressierung an die richtige MAC-Adresse und dann im Payload wiederholt sich 16mal die MAC-Adresse um die WoL Signatur zu erzeugen.

Der Netzwerkkontroller nimmt im WoL-Modus alle Ethernet-Pakete mit seiner MAC Adresse oder Broadcast an und prüft nur darauf ob er im Payload 16mal die eigenen MAC-Adresse findet. Ob da IP oder UDP Header drin sind ist ihm meist ziemlich egal.

Soviel zur Theorie, nun zum Problem ;-).

Dein Router scheint die Durchleitung zu verweigern.

Du könntest mal im LAN versuchen ob das hier geht -> http://www.readpixel.com/wakeonlan/index.html

Alex
 
Zuletzt bearbeitet:
...
scheinen viele ein WoL auf Basis eines UDP-Paketes an die Broadcast-Adresse mit Port 9 zu unterstützen.
Ja, aber nicht an die IP Broadcastadresse. Ein WOL Paket wird auf Ethernetebene adressiert. Es wird entweder direkt an die Ethernetadresse des aufzuweckenden Rechners adressiert oder an die Ethernet Broadcastadresse. Es kann in ein IP Paket eingepackt sein, muss aber nicht. WOL funktioniert z.B. genauso in einem reinen IPX (=Novell Netware) Netzwerk.

Man muss ich immer klar darüber sein, auf welcher Protokollebene man sich befindet. WOL ist Layer 2. Außerdem hat es einen bestimmten Aufbau. Auf Layer 2 kann man aber kein Paket übers Internet schicken, da Router auf Layer 3 adressieren.

Auf einer Ebene über 2 kann es gar nicht funktionieren, weil eine Netzwerkkarte ihre IP-Adresse gar nicht kennt und das Betriebssystem zu dem Zeitpunkt schläft. Auf Ethernet gibt es aber weder IP noch UDP noch Port 9, weil diese header, wie oben schon angedeutet, schon zu den oberen Netzwerkschichten gehören. Hier sind wir auf Layer 4, das Paket hat eine IP Adresse sowie einen Quell- und einen Zielport.

Das mit dem UDP Port 9 ist insofern richtig, als es Geräte gibt, die beim Empfang eines IP/UDP Paketes auf Port 9 einen Ethernetbroadcast auslösen können. Das muss aber von dem Gerät, an das diese UDP Port 9 Paket auf IP Ebene (Jetzt wieder Layer 3) entsprechend unterstützt und konfiguriert werden. Daher meine Frage, welches Gerät das WOL Paket rausschickt.
 
Ja, aber nicht an die IP Broadcastadresse. Ein WOL Paket wird auf Ethernetebene adressiert.

Korrekt, aber als was wird ein IP-Broadcast auf Ethernet-Ebene adressiert? Es kann ja nur 0xff... also Ethernet-Broadcast sein, sonst würden die Netzwerkkarten der einzelnen Rechner das IP-Broadcast nicht annehmen. Somit hast du du den MAC-Broadcast

Man muss ich immer klar darüber sein, auf welcher Protokollebene man sich befindet. WOL ist Layer 2. Außerdem hat es einen bestimmten Aufbau. Auf Layer 2 kann man aber kein Paket übers Internet schicken, da Router auf Layer 3 adressieren.

Wenn der Router ein UDP-Paket als IP-Broadcast ins Netz routet ist das vermutlich gleichzeitig ein Ethernet-Broadcast. Ein Rechner im WoL-Status (wie schon beschrieben), würde solchen entgegennehmen und nach der WoL-Signatur durchsuchen.

Die Schichten sind schon klar, werden hier jedoch etwas "aufgeweicht".

Auf einer Ebene über 2 kann es gar nicht funktionieren, weil eine Netzwerkkarte ihre IP-Adresse gar nicht kennt und das Betriebssystem zu dem Zeitpunkt schläft. Auf Ethernet gibt es aber weder IP noch UDP noch Port 9, weil diese header, wie oben schon angedeutet, schon zu den oberen Netzwerkschichten gehören. Hier sind wir auf Layer 4, das Paket hat eine IP Adresse sowie einen Quell- und einen Zielport.

Braucht es für WoL auch alles nicht. Das Ethernetpacket hat eine Broadcast-MAC und wiederholt 16mal die MAC des WoL-Rechners im Payload. Ob der Payload noch Header von IP/UDP enthält kann dabei egal sein.

Daher meine Frage, welches Gerät das WOL Paket rausschickt.

Ein beliebiger Dienst der auf der externen IP des Routers auf Port 9 ein UDP Paket sendet was im Payload die 16x MAC des WoL Rechners enthält.

Wirklich das funktioniert so theoretisch ;-). Kommt ein wenig auf den Router an ob er IP-Broadcast ins LAN erlaubt.

Also Portforwarding des ext. Interface, Port 9 auf IP 255.255.255.255 des int. Interfaces.

Du hast im Prinzip folgendes Paket im LAN

Schicht 2: Ethernet-Header, DEST: 0xff..., SRC: 0x<Router>
Schicht 3: IP-Header, DEST: 255.255.255.255, SRC:<Router-IP>
Schicht 4: UDP-Header, Port 9
Schicht 5: (UDP-Payload) 16 x 0x<MAC des WoL-Rechners>

Der WoL Rechner würde das Paket annehmen, wg Dest 0xff... und dann nur gucken ob er im Payload 16x seine MAC findet. Die IP-Header sind dabei egal da er bitweise vergleichen wird.

Alex
 
@alexzero

Ich hab Dir ja gar nicht widersprochen ;). Um ehrlich zu sein, habe ich auf den ersten Blick gar nicht gesehen, dass Du das schon so ausführlich erklärt hattest.

...
Wenn der Router ein UDP-Paket als IP-Broadcast ins Netz routet ist das vermutlich gleichzeitig ein Ethernet-Broadcast. Ein Rechner im WoL-Status (wie schon beschrieben), würde solchen entgegennehmen und nach der WoL-Signatur durchsuchen.
...
Genau genommen nicht "ein Rechner im WoL-Status" sondern alle(!). Das kann ein Problem sein, wenn man mehrere Rechner im Netz hat und die separate wecken möchte. Ich hab auf meiner Fritzbox einen ssh Zugang und ether-wke. Damit ist das kein Problem.

...
Kommt ein wenig auf den Router an ob er IP-Broadcast ins LAN erlaubt.
...
Meine Rede. (s. letzter Absatz, voriges Posting)

Gruß
maceis
 
@alexzero

Ich hab Dir ja gar nicht widersprochen ;). Um ehrlich zu sein, habe ich auf den ersten Blick gar nicht gesehen, dass Du das schon so ausführlich erklärt hattest.

Sorry, dann haben wir uns da missverstanden, oder auch nicht - wie man es sieht ;-). Auf jedenfall hatten wir Recht *g*.

Genau genommen nicht "ein Rechner im WoL-Status" sondern alle(!). Das kann ein Problem sein, wenn man mehrere Rechner im Netz hat und die separate wecken möchte. Ich hab auf meiner Fritzbox einen ssh Zugang und ether-wke. Damit ist das kein Problem.

Dafür ja den UDP-Payload der jeden Rechner einzeln aufweckt, auch wenn alle das Broadcast-Ethernet-Paket empfangen. Dieser muss die MAC-Adresse des WoL-Rechner enthalten. Es ist also so garnicht möglich mit nur einem Paket alle Rechner aufzuwecken

Bei mir läuft auf dem Router (linksys) openwrt mit ssh und wakeonlan ;-). Ich habe also auch kein Stress damit meinen Server von außen aufzuwecken ;-)

Gruss
Alex
 
...
Dafür ja den UDP-Payload der jeden Rechner einzeln aufweckt, auch wenn alle das Broadcast-Ethernet-Paket empfangen. Dieser muss die MAC-Adresse des WoL-Rechner enthalten. Es ist also so garnicht möglich mit nur einem Paket alle Rechner aufzuwecken
Ich dachte, da kann auch 16 x die ff:ff:ff:ff:ff:ff drin stehen. Bin mir jetzt im Augenblick aber gar nicht sicher. Wie dem auch sei. Auf dem Router muss ein "Dienst" laufen, der das Paket erzeugt. Ob das nun über Port 9 angestoßen wird oder einen beliebigen anderen Port ist egal.
 
Ich dachte, da kann auch 16 x die ff:ff:ff:ff:ff:ff drin stehen. Bin mir jetzt im Augenblick aber gar nicht sicher. Wie dem auch sei. Auf dem Router muss ein "Dienst" laufen, der das Paket erzeugt. Ob das nun über Port 9 angestoßen wird oder einen beliebigen anderen Port ist egal.

Nein, der Payload muss eindeutig sein, da kann keine Broadcast drin stehen. (habe das selber mal implementiert unter c/linux und viel mit rumexperimentiert)

Auf dem Router muss nach dem oben beschrieben Konzept eben kein Dienst laufen. Ein simple Portforwarding an die Broadcast-IP reicht aus. Das Paket selber wird außerhalb (im Internet) erzeugt und nicht auf dem Router (s. Posting 20:05) es steckt im Payload des UDP-Paketes.

So ganz stimmen wir doch noch nicht überein ;-).

Alex
 
Zurück
Oben Unten