Linbo-remote: not a pxe host!?

Hallo anacronataff,

vielen Dank für das Debuggin MIT Lösung: tolle Sache :slight_smile:

Dass der Fehler von den „alten Hasen“ die linbo 4 seit etlichen Monaten
produktiv einsetzten, nicht gefunden wurde, kann ich auch erklären: wir
nutzen alle immer nur Kleinbuchstaben bei den Hosts.
Ich weiß nicht mehr, was das ausgelößt hat, aber das war auch imemr mal
eine Empfehlung.
In die Doku und in die WebUI hat es diese Empfehlung bisher aber nicht
geschafft.
Es sollte unterbunden werden.
Gleichzeitig sollte es aber linbo trotzdem richtig machen.

Vielen Dank :slight_smile:

Holger

Damit haben wir ja die Lösung gefunden, in der Richtung hatte ich auch das Problem vermutet. Wie schon gesagt, früher wurde nicht über nslookup der Name aufgelöst, das kam mit der 7.1 hinzu.

Ich denke, der Fix ist so in Ordnung, du kannst wenn du magst gerne entsprechend ein Issue oder gleich ein PR anlegen unter GitHub - linuxmuster/linuxmuster-linbo7: Next generation linbo

Das sollte auch weder in die Webui noch in die Doku, das sollte einfach keine Rolle spielen. Hostnamen sind immer Case insensitive :slight_smile:

Ich finde es sollte schon einen Hinweis in der Doku geben, habe darum ein Issue angelegt.

Beste Grüße

Thorsten

Keine Ahnung, ob das richtig ist. Ich kenne mich mit git nicht aus:

Ich finde nicht, dass das dauerhaft in der Doku stehen sollte. Wenn es kein Problem gibt sollte es auch nicht dokumentiert werden, das ist nur ein Workaround zu einem Problem, das es gar nicht geben sollte.

1 „Gefällt mir“

Hallo Till,

kein Hinweis auf die Übergangslösung, sondern einen auf das, was du schreibst.

siehe obiges Issue.

Dass die Fehlerquelle auf der Softwareseite abgefangen gehört, ist klar.

Beste Grüße und danke für deine Unterstützung.

Thorsten

Leider zu früh gefreut. O.g. Lösung funktioniert auch nicht zuverlässig.

wakeonlan -i mit ipdresse funktioniert nur, wenn die firewall (hier: Opensense) den entsprechenden PC noch in der ARP Tabelle hat. (Schnittstellen->Diagnose->ARP Tabelle). Wenn der PC aber aus ist, verschwindet der PC nach ein paar Stunden jedoch automatisch aus der ARP Tabelle der firewall. Opensense weiß dann wohl nicht ins welches Netz das wakeonlan-paket gehört und verwirft es. Somit funktioniert dann auch wakeonlan -i mit ipdresse NICHT mehr. Natürlich auch linbo-remote nicht mehr

Wir haben weiter nach Lösungen gesucht:

Nun kann man ja auch bei wakeonlan -i eine Brodcastadresse angeben. Z.B. wakeonlan -i 10.101.255.255. Sollte normalerweise funktionieren, da die Firewall anhand Ihrer Schnittstellen das passende Netz herrausfinden könnte. Macht Opensense aber nicht. Auch das Brodcast-wakeonlan-Paket verwirft sie.

Lösung wäre hier, das man in der ARP-Tabelle von Opensense die Netze mit den entsprechenden Brodcastadressen neustartfest einträgt. Das sieht aber die WebGUI von Opensense nicht vor. Somit muss man das über die Konsole machen: Login mit root → 8 drücken → shell → cd /usr/local/etc/rc.syshook.d/start/ → dann dort für jedes Netz eine Datei (z.B. 99-broadcast-vlan101) erzeugen (Brodcastadresse entsprechend anpassen)

#!/bin/sh

arp -S 10.101.255.255 FF:FF:FF:FF:FF:FF

Damit funktioniert wakeonlan -i 10.101.255.255 zuverlässig.

Die Frage bleibt, wie machen wir das nun bei linbo-remote? Nun linbo-remote hat ja den Parameter -u. Doch fragen wir uns, warum wakeonlan nicht immer mit der Brodcastadresse aufrufen? Wir haben da keine Nachteile gesehen und somit nun in linbo-remote statt

   # use broadcast address
   if [ -n "$USEBCADDR" ]; then
      bcaddr=$(get_bcaddress "$hostip")
      [ -n "$bcaddr" ] && WOL="$WOL -i $bcaddr"
   else
     [ -n "$hostip" ] && WOL="$WOL -i $hostip"
   fi

komplett auf den else-zweig verzichtet:

   # # use broadcast address
   # if [ -n "$USEBCADDR" ]; then
      bcaddr=$(get_bcaddress "$hostip")
      [ -n "$bcaddr" ] && WOL="$WOL -i $bcaddr"
   # else
   #   [ -n "$hostip" ] && WOL="$WOL -i $hostip"
   # fi

Ich glaube das kann man so in git übernehmen plus den Parameter -u komplett rausimplentieren.
Oder sieht da einer Nachteile?

Danke für Antworten.

@thomas

Gruß

Alois

Ja, es gibt unterschiedliche Möglichkeiten die Netze zu trennen und zu Routen. Nicht jeder Linuxmuster Nutzer verwendet eine Opnsense Firewall.

Breaking Changes sind generell stets zu vermeiden.

Beispiel?

Denn selbst wenn einer ne andere firewall und/oder Netztopologie nutzt, schadet wakeonlan -i mit Brodcastadresse m.E. NICHT!

Hallo,

das von " anacronataff" beobachtete Problem sollte ja nur bei einer Segmentierung der Netze auftreten (und nur dann benötigt man „-i“ bei wakeonlan) , dürfte dann aber auch andere Router betreffen. Wenn man die Broadcastadresse verwendet, hat man auf jeden Fall bessere Chancen, dass das Paket durchkommt.

Mit der IP-Adressen funktioniert das nur dann zuverlässig, wenn im Router eine statische ARP-Tabelle für alle Rechner vorhanden ist. Das steht auch so in der Manpage.

Wakeonlan sollte also immer die Broadcastadresse verwenden, unabhängig von der Netzstruktur. Das „-u“ sollte also das Standardverhalten sein. Wenn überhaupt, dann sollte die IP-Adressen nur dann verwendet werden, wenn man es explizit angibt.

Beste Grüße

Jörg

Moingiorno!

Broadcastadresse ist jetzt Standard: Neue Pakete für lmn 7.1 - #204 von thomas

VG, Thomas

2 „Gefällt mir“

Super! Danke!

Die Funktion validip ist nicht sinnvoll für Broadcastadressen, da das letzte Oktett nicht 255 sein darf, laut Funktion. Generell sind alle 255er ausgeschlossen?

  /usr/share/linuxmuster/linbo/helperfunctions.sh

# check valid ip
validip(){
  (expr match "$1"  '\(\([1-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-4]\)\.\([0-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-4]\)\.\([0-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-4]\)\.\([1-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-4]\)$\)') &> /dev/null || return 1
}

/usr/share/linuxmuster/linbo/linbo-remote.sh Zeile 433:

Rechtschreibfehler:
maccaddr statt macaddr

Die Funktion lebt von einigen Annahmen. Wenn man statt einem /24er-Netz ein /23er-Netz nutzt, dann sind .0 und .255 im letzten Oktett auch gültige IP-Adressen.

Beispiel HostA/HostB:

Network:    10.0.122.0/23
Netmask:    255.255.254.0 = 23
Netaddress: 10.0.122.0
HostMin:    10.0.122.1
HostA:      10.0.122.255
HostB:      10.0.123.0
HostMax:    10.0.123.254
Broadcast:  10.0.123.255
1 „Gefällt mir“

Ja genau oder /16 ist im dritten Oktett auch schlecht…

Die Funktion habe ich so angepasst, dass keine Broadcastadressen mehr gefiltert werden: Neue Pakete für lmn 7.1 - #222 von thomas

1 „Gefällt mir“

Danke! Wir werden es testen!

/usr/share/linuxmuster/linbo/linbo-remote.sh: line 430/571:
da ist immer noch $maccaddr

if [ -n "$DIRECT" ]; then
      if validmac "$macaddr"; then
        $WOL "$maccaddr"
      else
        echo "$maccaddr is no valid mac address!"
        continue
      fi
    fi

anstelle von $macaddr

if [ -n "$DIRECT" ]; then
      if validmac "$macaddr"; then
        $WOL "$macaddr"
      else
        echo "$macaddr is no valid mac address!"
        continue
      fi
    fi

Danke für die Info, ist gefixt: Neue Pakete für lmn 7.1 - #224 von thomas

1 „Gefällt mir“