Wake-on-LAN mit PowerShell: So weckst du deinen Server oder PC auf

Futuristische Darstellung von Wake-on-LAN und PowerShell

In diesem Artikel erkläre ich, wie du ein PowerShell-Skript nutzen kannst, um einen QNAP-Server (oder jedes andere Wake-on-LAN-fähige Gerät) im Netzwerk aufzuwecken. Dabei wird ein sogenanntes Magic Packet gesendet, das den Server aus dem Ruhezustand holt.

Voraussetzungen

  • Wake-on-LAN muss im BIOS/UEFI und in den Netzwerkeinstellungen des Geräts aktiviert sein.
  • Das Gerät und der Rechner, von dem aus das Skript ausgeführt wird, müssen sich im selben Netzwerk befinden.
  • PowerShell (ab Version 3.0) sollte installiert sein.

Das PowerShell-Skript

Das folgende Skript verwendet die MAC-Adresse des QNAP-Servers, um ein Magic Packet an die Broadcast-Adresse des Netzwerks zu senden. Dies ist der entscheidende Schritt, um das Gerät aufzuwecken.

# Variablen für die IP-Adresse, MAC-Adresse und Port
$IpAddress = "192.168.1.10"
$MacAddress = "24:5e:00:01:02:b7"
$BroadcastAddress = "192.168.1.255" # Standard-Broadcast-Adresse im Subnetz
$Port = 9 # Standard-Wake-On-LAN-Port

# Funktion, um das Wake-On-LAN Magic Packet zu senden
function Send-WakeOnLan {
    param (
        [string]$MacAddress,
        [string]$BroadcastAddress,
        [int]$Port
    )

    # MAC-Adresse in ein Byte-Array umwandeln
    $MacBytes = $MacAddress -split "[:-]" | ForEach-Object { [byte]("0x$_") }

    # Magic Packet erstellen (6x 0xFF gefolgt von 16 Wiederholungen der MAC-Adresse)
    $MagicPacket = @([byte]0xFF) * 6 + ($MacBytes * 16)

    # Magic Packet via UDP senden
    $UdpClient = New-Object System.Net.Sockets.UdpClient
    $UdpClient.EnableBroadcast = $true
    $Endpoint = New-Object System.Net.IPEndPoint ([System.Net.IPAddress]::Parse($BroadcastAddress), $Port)
    $UdpClient.Send($MagicPacket, $MagicPacket.Length, $Endpoint)
    $UdpClient.Close()

    Write-Output "Wake-On-LAN-Paket wurde an $MacAddress über ${BroadcastAddress}:${Port} gesendet."
}

# Wake-On-LAN senden
Send-WakeOnLan -MacAddress $MacAddress -BroadcastAddress $BroadcastAddress -Port $Port

Wie funktioniert das Skript?

Das Skript besteht aus zwei Teilen: der Definition der Funktion Send-WakeOnLan und dem Aufruf dieser Funktion mit den festgelegten Variablen.

  • MAC-Adresse: Die MAC-Adresse des Zielgeräts wird benötigt, um das Magic Packet korrekt zu adressieren.
  • Broadcast-Adresse: Die Broadcast-Adresse wird verwendet, um sicherzustellen, dass das Magic Packet alle Geräte im Netzwerk erreicht.
  • Port: Standardmäßig wird Port 9 verwendet, aber einige Geräte können auch Port 7 nutzen.
  • Magic Packet: Es handelt sich um eine spezielle Nachricht, die 6-mal 0xFF gefolgt von 16 Wiederholungen der MAC-Adresse enthält.

Nutzung

Speichere das Skript als .ps1-Datei, zum Beispiel WakeOnLan.ps1. Öffne dann PowerShell mit Administratorrechten und führe das Skript mit folgendem Befehl aus:

.\WakeOnLan.ps1

Wenn alles korrekt eingerichtet ist, wird das Magic Packet gesendet, und dein QNAP-Server sollte starten.

Fazit

Mit diesem Skript kannst du deinen QNAP-Server (oder andere Geräte) bequem per PowerShell aufwecken. Wake-on-LAN ist eine praktische Möglichkeit, Geräte effizient zu verwalten, ohne sie ständig laufen lassen zu müssen.

Hast du Fragen oder Anregungen? Schreibe sie gerne in die Kommentare!

Ubuntu – DHCP Release erneuern

Wenn Sie den DHCP-Lease erneuern und sich zum Beispiel aufgrund einer eingerichteten DHCP-Reservierung eine neue IP-Adresse an einem Ubuntu-Client einrichten möchten, können Sie ganz das ganz einfach mit den zwei Kommandos durchführen:

sudo dhclient -r    
sudo dhclient eth0  

Wobei eth0 ggf. gegen den Namen des Netzwerkinterfaces getauscht werden muss.

Viel Erfolg!

NGINX Reverseproxy für Weiterleitung auf anderes HTTPS-Ziel

Ich hatte konkret die Aufgabe, verschiedene Webserver unter einer externen IP-Adresse erreichbar zu machen. Die Webserver verfügen bereits über ein eigenes HTTPS-Zertifikat – ich muss mich als nicht noch um Zertifikate wie Let’sEncrypt etc. kümmern.
Im konkreten Beispiel habe ich für diesen Zweck ein einfaches Ubuntu Server 18.04 LTS aufgesetzt und in meiner DMZ aufgestellt mit dem Ziel, dort nichts weiter als diesen konkreten NGINX darauf laufen zu lassen.

Nach der Installation von Linux erfolgen wie immer die üblichen Befehle zum Aktualisieren des Betriebssystems

sudo apt update
sudo apt full-upgrade

NGINX wird mit einer weiteren einfachen APT-Zeile angestoßen:

sudo apt-get install nginx

Um zu konfigurieren, dass NGINX automatisch zum Systemstart mitgestartet wird, geben wir folgenden Befehl ein:

sudo /etc/init.d/nginx start

Jetzt könnt ihr den NGINX-Webserver einfach testen durch Aufrufen der entsprechenden IP-Adresse im Browser. In meinem konkreten Fall war das die nachfolgende IP-Adresse

http://192.168.140.16

Ziel ist es in diesem konkreten Fall, eine Weiterleitung von HTTPS auf HTTPS zu konfigurieren.
Dafür muss das SSL-Zertifikat vorhanden sein und in die folgenden Dateien kopiert werden:
public Key:
sudo vim /etc/nginx/cert.crt
Private Key
sudo vim /etc/nginx/cert.key

Anschließend ist es schon soweit – ihr könnt die Konfiguration des NGINX öffnen und die Proxy-PASS-Konfig einfügen. In meinem konkreten Beispiel sah das so aus

sudo vim /etc/nginx/sites-enabled/default
server {

    listen 443 ssl;
    server_name subdomain.domain.de;

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/jenkins.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      # Fix the “It appears that your reverse proxy set up is broken" error.
      proxy_pass          https://192.168.140.10:443;
      proxy_read_timeout  90;

      proxy_redirect      https://192.168.140.10:443 https://git.gustini.de;
    }
  }

Abschließend noch ein Neustart von NGINX

 sudo service nginx restart

Anschließend hat die Lösung bei mir schon funktioniert!

Sophos UTM Firewall und Let’s Encrypt Zertifikate

Die Einrichtung von Let’s Encrypt Zertifikaten auf der Sophos UTM ist inzwischen kein Hexenwerk mehr.

Ich möchte an dieser Stelle das Rad nicht neu erfinden sondern verweise auf die Super Anleitung von Frankys Web:

/https://www.frankysweb.de/sophos-utm-9-6-kostenlose-lets-encrypt-zertifikate/

Als Einrichtungstipps möchte ich noch ergänzend anmerken:

  • nach ca. fünf Fehlgeschlagenen Requests wird die Domain oder abfragende IP für einige 24h Stunden gesperrt – oft ist das beim Trial and Error eine Ursache für das Fehlschlagen des Requests
  • Aktiviertes DNAT auf der Sophos kann den Request fehlschlagen lassen, wenn Port 80 und 443 umgeleitet werden
  • Der Country-Filter kann ebenfalls für Probleme sorgen – ggf. muss eine Ausnahme eingerichtet werden
  • Manche schrieben in ihrem Forum, dass die Advanced Thread Protection für Probleme gesorgt hat – das kann ich aus eigener Erfahrung nicht bestätigen
  • Bei bereits aktiver Web Server Protection muss die betreffende Domain / die Weiterleitung für die Aktivierung / erstmalige Einrichtung ggf. abgeschaltet werden

Aktivierungsfehler: Code 0x8007232b / Aktivieren von Windows Vista Enterprise, Vista Business, Windows 7 oder Windows Server 2008

Problem:

Wenn beim Versuch, Windows zu aktivieren, folgender Fehler kommt:

Aktivierungsfehler: Code 0x8007232b
Der DNS-Name ist nicht vorhanden.

Das Problem tritt häufig in Verbindung mit der Verwendung von Volumenlizenzen auf. Wenn nach der Installation noch kein Produktkey hinterlegt wurde, weil beim Setup noch nicht danach gefragt wurde, versucht das System, sich mit einem  Schlüsselverwaltungsdienst-Hostcomputer (Key Management Service, KMS)  zu verbinden. Dieser ermöglicht abhängig von der Größe des Netzwerkes, viele Computer zu aktivieren und erspart Administratoren das „Platz zu Platz“ gelaufe zur Aktivierung der PCs.

Lösung:

In den allermeisten Fällen wird für die Windowsaktivierung kein separater KMS-Server verwendet. Aus diesem Grund muss mit einem einfachen DOS-Befehl der Produktkey nachträglich hinzugefügt werden.

1. Starten Sie die Eingabeaufforderung mit Administratorrechten

Start –>Alle Programme –>Zubehör

Mit rechter Maustaste auf Eingabeaufforderung und dann „Als Administrator ausführen.“

In dem erscheinenden DOS-Fenster wird der folgende Befehl eingegeben:
slmgr -ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx

Die x’e stehen für den Produktkey, welcher in Windows hinterlegt werden soll.

Anschließend sollte die Produktaktivierung problemlos klappen.