Wake on LAN mit NAT und Cisco

Wer kennt das Problem nicht, man braucht dringend ein paar Daten vom Rechner zu Hause, aber man kommt trotz DSL und Router nicht dran weil der Rechner ausgeschaltet ist. 1995 hat AMDTM in Zusammenarbeit mit Hewlett Packard den Wake on LAN (WoL) Standard veröffentlich um einen ausgeschalteten Computer über die eingebaute Netzwerkkarte zu starten.

Wake on Lan basiert auf einem so genannten Magic PacketTM. Das Magic Packet ist entweder direkt an die Netzwerkkarte adressiert oder wird als Broadcast verschickt. Es enthält die Hexadezimal-Folge FFFFFFFFFFFF; unmittelbar danach erscheint die ununterbrochene 16-malige Wiederholung der MAC-Adresse der Netzwerkkarte. Dieser Inhalt kann in ein beliebiges Paket (z. B. IP, IPX) verpackt sein. Nun stellt sich die Frage wie man so ein Packet zu Netzwerkkarte bekommt wenn der PC hinter einem NAT-Router an einer DSL Leitung (kein Broadcast Medium) hängt? Aber dazu später mehr.

Damit WoL funktioniert muss als erstes der PC entsprechend konfiguriert und im ggf. BIOS aktiviert werden. Alle aktuellen Mainboards mit Ethernet on Board sollten WoL fähig sein. Die Einstellungen unter Windows XP sollten wie folgt aussehen, können aber je nach Board und Netzwerkarte unterschiedlich sein.

    Wake on LAN Settings 1 Wake on LAN Setting 2

Es bietet sich an die Konfiguration des PCs als erstes mit einem Laptop oder PC und einem entsprechenden Programm im LAN zu testen um diese Fehlerquelle im Vorfeld ausschließen zu können.

Ist der LAN Test erfolgreich verlaufen kann man sich an den Router, in meinem Fall von Cisco, machen. Die Aufgabe ist ein an den Router gerichtetes IP-Packet in einen Broadcast im LAN zu “verwandeln”. Um das zu erreichen nimmt man eine freie IP-Adresse aus seinem Segment und erstellt dafür einen statischen ARP-Eintrag mit der MAC-Adresse FF:FF:FF:FF:FF:FF. In meinem Fall habe ich die letzte Adresse aus 192.168.1.0/24 verwendet. Die entsprechende Konfiguartions-Zeile sieht dann so aus:

arp 192.168.1.253 ffff.ffff.ffff ARPA

Mit “show ip arp” kontolliert man dann ob auch alles richtig ist:

    router#sh ip arp
    Protocol
    Internet
    Internet
    Address
    192.168.1.1
    192.168.1.253
    Age (min)
    -
    -
    Hardware Addr
    0013.c341.9176
    ffff.ffff.ffff
    Type
    ARPA
    ARPA
    Interface
    Vlan2

Bekommt der Router ein Packet das an die 192.168.1.253 adressiert ist, leitet der Router das Packet nun an die Broadcast MAC-Adresse FF:FF:FF:FF:FF:FF weiter. Alles was man jetzt noch braucht ist eine NAT-Regel die einen Port von extern nach intern auf die hier verwendete 192.168.1.253 übersetzt:

ip nat inside source static udp 192.168.1.253 9 interface ATM0/1/0.1 9

In diesem Beispiel habe ich Port 9 verwendet, es kann aber jeder beliebige und nicht anderweitig verwendete Port genutzt werden. Diese Art der Konfiguration sollte mit jedem Router funktionieren der NAT und auf statische ARP Einträge beherrscht. Viel Spaß beim Ausprobieren.

Links:

This entry was posted in Technik and tagged , , . Bookmark the permalink.

4 Responses to Wake on LAN mit NAT und Cisco

  1. Lars says:

    Hi Stefan,

    wie kann ich denn ein UDP von aussen ranbekommen. Selbst der Befehl lässt meinen Rechner nicht erwachen.

    Danke für die Hilfe

  2. Pingback: PCs aufweken mit WOL über einen Router (Subnetz) ! - MCSEboard.de MCSE Forum

  3. Stefan says:

    Hallo Oliver,

    erstmal danke für den Hinweis mit der .123. Ich habe den Fehler korrigiert.

    Die “virtuelle IP” läßt sich nicht anpingen da sie ja als MAC-Adresse FF:FF:FF:FF:FF:FF hat. Sie dient im Prinzip nur dazu aus einem Unicast einen Broadcast zu machen.

    Um den Rechner aufzuwecken schicke ich also das Magic-Packet, das natürlich die MAC-Adresse des Rechners der aufgeweckt werden soll beinhalten muss, an die Externe IP-Adresse des Routers an Port 9. Der leitet das Packet dann an FF:FF:FF:FF:FF:FF (also Broadcast) in das interne Netz weiter.

    Gruss

    Stefan

  4. hallo,
    ich habe einige verständnisprobleme zu deinem howto.
    erst mal denke ich, das die ip nat config zeile einen fehler hat, weil du dort auf das 123 netz nat’est und nicht wie im bsp angegeben auf das 1er netz.

    desweiteren verstehe ich dann nicht, wie du den router von aussen oder innen ansprichst, damit er den broadcast macht, auf udp port 9.

    ein ping vom usermode des cisco auf die “virtuelle” ip adresse klappt bei mir zumindest nicht. ein telnet mit udp geht ja nicht. wie startest du also den rechner? und fehlt in dem magic packet nicht noch die MAC der NIC die ich aufwecken will?