Wake ON LAN - nicht über OPNsense, sondern geroutet

Started by NDregger, March 24, 2024, 06:34:28 PM

Previous topic - Next topic
Hallo Freunde der OPNsense,

ich hoffe mal ich bin nicht der einzige unter uns der gerne Wake on LAN benutzt um Clients auch mal aus der Ferne anschalten zu können ohne dafür extra vor Ort zu sein - so mache ich das zum Beispiel immer sehr gerne in den Ferien um die Clients mit den aktuellen Updates bespielen zu können, nur leider funktioniert es nicht mehr so wie früher seit wir von Bintec auf die OPNsense umgestiegen sind.

Ich habe mir extra dazu mal ein paar Batchdateien gebaut die die jeweiligen Clients enthalten, die Funktionsweise ist eigentlich sehr einfach:

wake "Mac Adresse" "Broadcast Adresse", exemplarisch wake 84-A9-3E-72-4F-45 192.168.178.255

Wie gesagt - es lief bis zum Wechsel der Router weswegen ich die Clients, das Tool und auch die Adressen komplett ausschließen kann, ebenso funktionieren die Skripte weiterhin wenn ich sie auf einem Host direkt im jeweiligen LAN ausführe, nur sowas muss doch auch remote gehen - nur wie?

P.S.: Müsste ich eigentlich nicht im Firewall LOG der OPNsense das WOL Paket sehen können?


Grüße aus BaWü
Norbert

VPN -> OpnSense -> WoL Plugin -> vorher die Geräte speichern und "aufwecken". Wenn du Home Assistant hast geht es auch. So mache ich das.

Hey Ronny,

und was hilft mir das beim Versuch das per Skript zu machen? Muss ich jetzt jeden Host doppelt pflegen? Also sowohl in den Skripten als auch der OPNsense? Wieso jetzt doppelte Arbeit? Bei rund 100 Clients pro Standort in den pädagogischen Netzen ist das bissel viel Arbeit - daher die Frage ob das doppelte Geschäft wirklich notwendig ist


Gruß
Norbert

Vielleicht geht es mit "os-udpbroadcastrelay" da die Magic Packets UDP sind.

Ansonsten kenne ich noch den "Auto Shutdown Manager" der auch WOL Proxies anbietet.
Hardware:
DEC740

March 25, 2024, 08:51:16 AM #4 Last Edit: March 25, 2024, 09:46:22 AM by meyergru
Also ich kapiere da ein paar Sachen nicht:

Quote from: NDregger on March 24, 2024, 06:34:28 PM
Ich habe mir extra dazu mal ein paar Batchdateien gebaut die die jeweiligen Clients enthalten, die Funktionsweise ist eigentlich sehr einfach:

wake "Mac Adresse" "Broadcast Adresse", exemplarisch wake 84-A9-3E-72-4F-45 192.168.178.255

Wie gesagt - es lief bis zum Wechsel der Router weswegen ich die Clients, das Tool und auch die Adressen komplett ausschließen kann, ebenso funktionieren die Skripte weiterhin wenn ich sie auf einem Host direkt im jeweiligen LAN ausführe, nur sowas muss doch auch remote gehen - nur wie?

P.S.: Müsste ich eigentlich nicht im Firewall LOG der OPNsense das WOL Paket sehen können?

Was sind das für Skripte?

Zunächst ist Wake-On-LAN etwas, das per Broadcast, d.h. per definitionem nur im LAN läuft. Bintec hat offenbar eine Art Proxy gebaut, mit dem man eingehende IP-Pakete auf interne MACs abbilden kann:

https://faq.bintec-elmeg.com/index.php?title=bintec_Router-Serien_und_be.IP-Serie_-_Hinweise_zur_Konfiguration_von_WOL_(Wake-On_LAN)_mit_Ausl%C3%B6sung_%C3%BCber_einen_IPSec-Tunnel

Das ist gleichzeitig die Erklärung dafür, wieso man das auf der OpnSense nicht "sieht": Entweder Du sendest solche Pakete im LAN, dann passieren sie die OpnSense erst gar nicht oder Du sendest echo-Requests an die WAN-Schnittstelle, dann fehlt der Proxy und die Regel, es zuzulassen.

Was Du also brauchst, ist eine Nachbildung der Bintec-Spezialfunktionalität. Aktuell kann ich aber nicht genau sagen, was dazu fehlt. Was ist z.B. "wake"? Dein Skript? Ein Systemkommando? Auf welcher Plattform?
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+


Jup, eine Port-Weiterleitung funktioniert, wenn die Clients auf Broadcasts reagieren. Der Trick ist das Static ARP auf die Broadcast-MAC.

Über VPN ist das auch sicher, über WAN weniger.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Vermutlich meinst Du bezüglich WOL "Wake on Magic Packet". Diese Art des WOL ist am häufigsten anzutreffen. Nach Spezifikation handelt es sich um einen speziell präparierten Ethernet-Frame, welcher an die Zielnetzwerkkarte zu schicken ist. Die Zieladresse es Ethernet-Frames darf hierbei die Unicast- Mutlicast- oder Broadcast-MAC sein.

Meinen persönlichen Erfahrungen nach hatte ich in der Vergangenheit Netzwerkkarten, welche nicht auf die Broadcast-MAC reagiert hatten. Unicast hatte immer funktioniert (vermutlich eine nicht der Spezifikation entsprechende Konfiguration des Chipsatzes der Netzwerkkarte durch den Netzwerkkartentreiber). Daher das verwendete Adressierungsszenario unbedingt im selben LAN-Segment testen.

Jetzt kommt der Router (Opnsense ins Spiel). Das Routing zwischen verschiedenen Netzen erfolgt auf IP-Ebene (Layer 3), die Adressierung der Endpunkte im LAN jedoch über die MAC (Layer 2). Die Übersetzung der IP-Adresse zur MAC erfolgt über das ARP-Protokoll. Kurze Zeit nach dem Ausschalten des Zielrechners funktioniert die Übersetzung IP zu MAC jedoch nicht mehr, weshalb man sich eines Tricks behelfen muss. Daher benötigt die Opnsense hierfür einen statischen Eintrag in seiner Übersetzungstabelle (statischer ARP-Eintrag). Sobald dies erfolgt ist, kann man ein "Magic Packet" eingekapselt in routbare Protokolle auch geroutet über unterschiedliche Netzwerke hinweg zum Ziel bringen.

Ich empfehle grundsätzlich einen statischen ARP-Eintrag auf die Unicast-MAC des Ziels. Letztendlich ist es jedoch Geschmackssache.

Für den Versand des "Magic Packets" empfiehlt sich eine Kommunikation mittels UDP (ist der empfangenden Netzwerkkarte selbst aber egal).

OPNsense 24.7.11_2-amd64