Problem mit Wake On Lan - Mal funktionierts, mal nicht

  • Vorab ein paar Infos

    PC1 - HP Small Form Factor 6305 - DHCP IP: 100.110.169.126
    PC2 - HP Small Form Factor 6005 - DHCP IP: 100.110.171.229


    Zu meinem Problem:

    Wenn ich das Script mit der IP und MAC für PC1 ausführe startet dieser.
    Gebe ich die Daten von PC2 ein startet dieser nicht.

    Dann gab es einige User in dem Beitrag von dem WOL Script die auch das Problem haben und dann das letzte Oktet der IP Adresse in *.*.*.255 geändert haben.
    Das habe ich dann auch gemacht also ... PC2 IP 100.110.171.255 und siehe da der PC startet. ?(
    Gleiche vorgehensweise wie bei PC2 jetzt aber PC1.
    PC1 IP 100.110.169.255 ... PC startet nicht. ?(

    Original Script:

    [autoit]


    $IPAddress = "192.168.1.255"; This is the broadcast address !
    $MACAddress = "000D8787E226"

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    UDPStartUp()

    [/autoit][autoit][/autoit][autoit]

    $connexion = UDPOpen($IPAddress, 7)
    $res = UDPSend($connexion, GenerateMagicPacket($MACAddress))
    MsgBox(0, "", $res)

    [/autoit][autoit][/autoit][autoit]

    UDPCloseSocket($connexion)
    UDPShutdown()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; ===================================================================
    ; Functions
    ; ===================================================================

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; This function convert a MAC Address Byte (e.g. "1f") to a char
    Func HexToChar($strHex)

    Return Chr(Dec($strHex))

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; This function generate the "Magic Packet"
    Func GenerateMagicPacket($strMACAddress)

    $MagicPacket = ""
    $MACData = ""

    For $p = 1 To 11 Step 2
    $MACData = $MACData & HexToChar(StringMid($strMACAddress, $p, 2))
    Next

    For $p = 1 To 6
    $MagicPacket = HexToChar("ff") & $MagicPacket
    Next

    For $p = 1 To 16
    $MagicPacket = $MagicPacket & $MACData
    Next

    Return $MagicPacket

    EndFunc

    [/autoit]


    Hat einer ne Idee wieso das so ist?

    Danke für Eure Hilfe.

    Gruß
    Norman

    Einmal editiert, zuletzt von Norman Bates (27. Juli 2014 um 10:45)

  • Wie schaut dein Netzwerk aus? Die IP Adressen alleine nutzen nicht viel um dein Problem zu analysieren.

    Sind beide Zielrechner im gleichen Subnet?
    Welche subnets gibt es?
    Sind das zwei /24er Subnets oder ein großes /16er subnet oder... ?
    Sind beide Rechner am gleichen Switch/Router oder unterscheidet sich hier ggf. die dazwischenliegende Netzwerk Hardware und deren Konfiguration (kein Routing von WakeONLan Pakteten erlaubt?)
    In welchem Subnet befindet sich der sendende PC?

    Am besten wäre ein kleiner Netzwerkplan zur Übersicht.

  • Naja dann ist ja klar was du falsch machst. Jedes Subnet hat nur eine Broadcast IP und ganz sicher keine zwei verschiedene.

    Wenn du ein /22 Subnet hast und beide im selben Subnet liegen sollte dein Netzwerk so ausschaun:

    Network: 100.110.168.0/22
    Host Adressen: 100.110.168.1 - 100.110.171.254
    Broadcast: 100.110.171.255
    Hosts: 1022

    Einmal editiert, zuletzt von misterspeed (26. Juli 2014 um 21:17)

  • Macht schon Sinn nur warum funktioniert es nicht mit beiden PC's gleich?
    Wieso der eine so und der andere so.
    Ich möchte das beide mit Ihrer IP gestarte werden und nicht mit *.*.*.255.

    Das war die Frage...ob einer ne Idee warum das so sein könnte. :D

    Gruß
    Normsn

    • Offizieller Beitrag

    Warum benutzt du ein /22 und nicht ein /24 Netz? So viele Rechner am Switch das 254 Adressen nicht reichen ? 8|

  • Ähm naja ich bin mir nicht so sicher ob die Netzwerkgeräte im Standby Modus überhaupt eine IP Adresse haben, zumal du von DHCP Zuweisung sprachst... wenn das Senden an die direkte IP funktioniert, dann vermutlich nur weil die MAC->IP Zuordnung noch im ARP-Cache zu finden ist. Die sicherste Methode ist das Senden an die Broadcast IP des Netzwerksubnets. Da jedes WOL Paket die MAC des anzuschaltenden Gerätes enthält wird auch nur der betreffende Rechner auf das Paket reagieren, alle anderen Empfänger ignorieren das Paket.

  • Warum benutzt du ein /22 und nicht ein /24 Netz? So viele Rechner am Switch das 254 Adressen nicht reichen ? 8|

    Ich habe leider keinen einfluß auf das Netzwerk. Ich muß nehmen was ich kriege.

    Die sicherste Methode ist das Senden an die Broadcast IP des Netzwerksubnets. Da jedes WOL Paket die MAC des anzuschaltenden Gerätes enthält wird auch nur der betreffende Rechner auf das Paket reagieren, alle anderen Empfänger ignorieren das Paket.

    Das wäre doch in dem Fall 100.110*.255 oder? Und das funktioniert doch nicht mit PC1.

    Gruß
    Norman

  • Das wäre doch in dem Fall 100.110*.255 oder? Und das funktioniert doch nicht mit PC1.

    Gruß
    Norman


    Nein. Wie oben bereits erklärt hast du nur ein Subnet und somit nur eine Broadcast IP (die allerletzte Adresse des Subnets). Eine Broadcast IP ist vereinfacht ausgedrückt die Adresse für "Alle IP Adressen des Subnets". Alles was du an diese IP sendest bekommen alle Geräte im Subnet. Deswegen ist diese Adresse pro Netz auch einmalig. Wenn du nun zwei /24 Netze hättest, dann gäbe es für jedes der beiden Netze eine eigene Broadcast IP. Das ist bei dir aber nicht der Fall somit ist für dich nur die IP 100.110.171.255 relevant. Die IP 100.110.169.255 ist bei deinem Subnetting keine Broadcast IP, sondern eine ganz normale Host IP die jeder x-beliebige Rechner oder eben keiner deiner Rechner haben könnte.

    Kurzfasung:

    [autoit]


    $IPbroad = "100.110.171.255"
    $macPC1 = "aabbccddeeff"
    $macPC2 = "aabbccddee22"
    ;...
    $res1 = UDPSend($connexion, GenerateMagicPacket($macPC1))
    $res2 = UDPSend($connexion, GenerateMagicPacket($macPC2))
    ;..

    [/autoit]
  • Sorry aber ich verstehe gerade nur Bahnhof.

    Was hat das mit den 2 MAC Adressen in deinem Script auf sich?

    Mit der der IP 100.110.171.229 von PC funktioniert es ja immer nur nicht mit der IP von PC2 nicht, diese muß ich abändern in 255. Und genau das frage ich mich warum das nicht funktioniert. Wenn alles an einem Switch hängt muß das doch genau wie mit PC1 funktionieren oder?

    Wenn ich auf nummer sicher gehen will müßte ich doch das Magic Paket an den PC2 einmal an die IP 100.110.169.126 und 100.110.169.255 damit sollte er doch 100%ig angehen oder?

    Gruß
    Norman

    • Offizieller Beitrag

    Das Magicpacket sendest du an die Broadcastadresse und nicht an die IP des aufzuweckenden Rechners.
    Die beiden Mac Adressen werden gebraucht um die beiden Rechner zu wecken.
    Die IP der beiden Rechner brauchst du nicht. Wenn z.B. beide Rechner ihre IP per DHCP beziehen, kann sich diese ja bei jedem
    Start ändern. Nur die MAC Adresse bleibt eindeutig die selbe.

  • Hier ein paar weiterführende Links sofern du dein Wissen über Netzwerke etwas erweitern willst. Dann verstehst du vielleicht auch besser was wir dir hier sagen wollten:

    http://de.wikipedia.org/wiki/IPv4
    http://de.wikipedia.org/wiki/Broadcast
    http://de.wikipedia.org/wiki/Address_Resolution_Protocol
    http://de.wikipedia.org/wiki/Switch_%28Netzwerktechnik%29
    http://de.wikipedia.org/wiki/Wake_On_LAN

    Ansonsten wurde denke ich alles gesagt:

    - Du brauchst alle MAC Adressen der einzuschaltenden Hosts
    - Du brauchst die Broadcast IP des Subnets (100.110.171.255)
    - Du sendest für alle einzuschaltenden Hosts ein passendes WOL Paket an die Broadcast IP des Subnets

    Führt das nicht bei allen Hosts zum Erfolg prüfe die Bios Einstellungen der betroffenen Hosts, siehe auch Anmerkungen im WOL Wikipedia Artikel. Außerdem muss natürlich kontrolliert werden ob du die richtige MAC Adresse des anzusprechenden Netzwerkinterfaces verwendest. Interessant wird es erst wenn du deine WOL Pakete in andere IP Subnetze schicken willst und dabei einen Router passieren musst. Die meisten Router unterbinden standardmässig das Subnetübergreifende Routing von Broadcasts (siehe wiki Artikel "Broadcast").