Linux Clients automatisch im WLAN


#1

Hallo,

ich habe einen Klassensatz Laptops mit Xenial-Clients im WLan und das klappt auch alles prima, aber wenn das Schul-WLAN nicht zur Verfügung steht, booten die Geräte nicht.

Ausgangslage:
Wir haben 2 WLAN (WPA2-Enterprise für Lehrer - freeradius) und eben das Grüne Netz direkt mit einem starken Schlüssel für diese Rechner. Das funktionier wie in der Anleitung super.

Damit sich die Schüler anmelden können, habe ich dafür gesorgt, dass das WLan vor der Anmeldeseite auf dem Rechner verfügbar ist. In die etc/network/interfaces habe ich folgendes eingetragen:

Unbenannt

in der wpa_supplicant_conf liegt der hash für das Passwort. Also alles ok.

Problem:
Wenn das WLan nicht vorhanden ist, streiken die Rechner beim booten kurz vor dem Anmeldebildschirm und zwar genau an der Stelle, wo sie versuchen auf das Netzwerk zuzugreifen. Das geht so weit, dass selbst STRG+ALT+F1 keine Reaktion hervorruft.

Frage:
Hatte jemand das gleiche Problem? Hat es jemand gelöst? Irgendwie muss man dem Rechner wohl mitteilen, was er machen soll, wenn er das WLan nicht findet.

Viele Grüße
Volker


Neue Doku: WLAN mit Unifi
#2

Hallo zusammen,

hat den keiner das Problem mit Schul-Laptops im WLAN?
Hat es jemand anders gelöst?

VG
Volker


#3

Hi. Bei uns sind alle Schullaptops ohne Anmeldung direkt im WLAN. Wir haben das aber via CoovaChilli geregelt:

https://www.linuxmuster.net/wiki/anwenderwiki:benutzerrechner:wlan:coovachilli-statisch
(unter " MAC-Auth.")

hth,
Michael


#4

Hallo Volker,

  das Problem hatte ich mit HULC 14.04 nicht und auch mein

xenial-Musterclient mit KDE neon funktioniert.

  Unterschied zu Deiner Konfiguration: Bei mir gibt es nach der

“auto” Zeile keine weitere mehr, die auf wpa_supplicant hinweist.

  Die WPA-Konfiguration habe ich als linuxadmin grafisch mit dem

network manager gemacht und dabei angehakt, dass alle die
Verbindung benutzen dürfen. Wo auch immer der das hinschreibt …

  Der network manager ist auch von Nutzen, wenn jemand das Notebook

mal z. B. auf eine Fortbildung außer Haus mit nimmt, und sich als
offline-Benutzer dort mit einem anderen WLAN verbinden möchte. Die
Verbindung, die der linuxadmin eingerichtet hat, kann er nicht
verändern.

  Gruß Jürgen

#5

Das hatte ich mir auch überlegt, aber dann brauche ich für die Geräte lokale Schüler-Nutzer und genau die sollen sich aber gegen den LDAP authentifizieren. Der Networkmanager baut ja erst nach der Anmeldung die Verbindung auf. Die andere Version stellt das WLAN so zur Verfügung, dass die Geräte in der Schule so funktionieren, als wären sie am am Netz.

Leider habe ich die Nebenwirkung, die ich gerne los wäre!!!


Offtopic, weil 2 Leute gefragt hatten:

Wenn das WLAN (grün) vorhanden ist und am Clients liegen soll, bevor sich jemand anmeldet, damit LDAP-Anmeldung geht, musst man nur noch die Datei wie im Bild (oben) ändern und in der Konsole:

$ wpa_passphrase “DEINE_SSID” “DEIN_SCHÜSSEL”

eingeben und dann die Ausgabe in der Datei /etc/wpa_supplicant/wpa_supplicant.conf speichern.

Das sieht dann so aus:
network {
ssid="gruen"
psk= adslfkjaesrtaäfölgkatijasdfkadefölkajsdföadjsfdfölkjasdfölkhjadsf
}

fertig!

ACHTUNG: Die MAC der WLAN-Karte muss gesondert in "workstations"
Ich habe die Erfahrung gemacht, dass ifconfig nur die richtige MAC anzeigt, wenn man auch mit einem WLAN verbunden ist.

VG
Volker


#6

Das ist bei unseren Laptops (allerdings noch mit Trusty 14.04-Client) nicht so. Wir benutzen den Networkmanager genauso, wie j. engeland beschrieben hat und unsere Nutzer loggen sich dann per LDAP ein. Man kann im Displaymanager Lightdm mit dem Unity-Theme das Networkmanager Applet anzeigen lassen, so das die Benutzer sehen, wann eine Verbindung besteht und somit wissen, wann sie sich einloggen können.


#7

Hallo frithjof und Jürgen,

danke, das hat geklappt und ist natürlich viel einfacher.
Bei mit hatte die Einstellung in “Interfaces” auch noch die normal Netzwerkkarte lahmgelegt (state DOWN) und ich konnte sie nicht wieder aktivieren. Also bin ich einen Schritt zurück und habe eure Lösung getestet.
Keine Ahnung, warum das beim ersten Versuch nicht geklappt hat.

Jetzt geht’s!

VGV


#8

Hallo Volker,

Habe jetzt auch mal deine Lösung mit wpa_supplicant statt NetworkManager ausprobiert (den möchte ich nicht verwenden, da unsere SuS momentan sudo-Rechte für den nm-connection-editor für den Zugriff auf die LEGO-EV3 haben und somit den WPA-PSK auslesen könnten).

Den “Hänger” beim Starten ohne WLAN (der Rechner hat dann 5 Minuten auf den dhcp-Timeout gewartet) konnte ich vermeiden, indem ich statt auto wlp... in der /etc/network/interfaces den Eintrag allow-hotplug wlp... verwendet habe.

Viele Grüße

Andreas


#9

Hallo zusammen,

nach einigem rumprobieren hab ich es geschafft.
Die Networkmanagermethode hat bei mir (14.04) nicht funktioniert: das
WLAN war vor der Anmeldung nicht verbunden (eingerichtet als linuxadmin).
Also hab ich die wpa_supplicant Version umgesetzt.
Allerdings hat das erstmal auch nicht funktioniert, weil mein internet
(grünes) WLAN versteckt ist.
Es funktioniert nun mit diesen Einstellungen:

/etc/network/interfaces

allow-hotplug wlan0
	iface wlan0 inet dhcp
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

und /etc/wpa_supplicant/wpa_supplicant.conf

    network={
    	ssid="SCHULE-intern"
    	psk=12345678912345678asdhgfialsbi3h54213k5h3rt8sdgfajs
    	scan_ssid=1

Das scan_ssid=1 war nötig, weil das WLAN versteckt ist.

Soweit, so gut.
Nun habe ich aber folgendes Problem:
der networkmanager fühlt sich nicht mehr zuständig für das WLAN (wird
nicht gemanaged).
Das wäre ja nicht so schlimm aber: ohne Netzwerkkabel zeigt der nm “kein
Netzwerk” an (leeres Kuchenstück), obwohl das WLAN verbunden ist.
Ist das bei euch auch so?
Kann man da was machen?

LG

Holger


#10

Hallo Holger,

Das ist bei mir auch so. Und das muss m.E. eigentlich auch so sein, da ja das WLAN “am nm vorbei” aktiviert wird. Ich habe nichts dagegen unternommen.

Ich hatte aber noch ein anderes Problem: Wenn man den Client per Kabel anschließt (darum kümmert sich dann der NetworkManager), aber das WLAN ebenfalls verfügbar ist, gibt’s z.B. Probleme mit der Namensauflösung (“Internet geht nicht…”)

Das habe ich mit dem Script /etc/NetworkManager/dispatcher.d/99disablewifi gelöst:

#!/bin/bash
if [ "$1" = "enp1s0" ]; then
    case "$2" in
        up)
            nmcli radio wifi off
            ;;
        down)
            nmcli radio wifi on
           ;;
   esac
fi

(Quelle: https://superuser.com/questions/233448/disable-wlan-if-wired-cable-network-is-available )

Viele Grüße

Andreas


#11

Hallo Andreas,

danke für das script.
Ich hab 14.04 und damit nmcli in Version 0.9.8.8 und nicht 0.9.10, deswegen heißt der Befehl bei mir nicht
nmcli radio wifi off
sondern
nmcli nm wifi off

LG

Holger


#12

Hi zusammen,

ich finde dieses Thema sollte unbedingt richtig dokumentiert werden. Ich checks grade nur halbwegs wie das bei euch funktioniert. Von jedem Schnipsel hab ich schon mal gehört, aber eine Wikiseite zu dem Thema wäre super-sinnvoll.

Hat jemand die Muße das zu schreiben, bei dem das funktioniert?
VG, Tobias


#13

Hallo ,

ich habe heute mal testweise dieses Setup probiert, aber ein Problem festgestellt: Wenn die WLAN-Verbindung am Networkmanager vorbei mit wpa_supplicant gemanaged wird, geht bei mir Firefox automatisch in den Offline-Modus. Ist das bei euch auch so bzw. was hab ich falsch gemacht :)?

Ich würde auch die Lösung mit dem Networkmanager nehmen, aber ich möchte das nur für einzelne Rechner (am besten per postsync) im Image haben. Wo speichert der Networkmanager seine Einstellungen? (Edit: Hier

/etc/NetworkManager
/etc/NetworkManager/system-connections

)

vG Stephan


#14

Bei mir funktioniert folgende Lösung (HP ProBook 450 G3 mit Xenial-Standard-Cloop), die komplett per postsync realisierbar ist. Dazu folgende vier Dateien auf dem Server ablegen:

  1. /var/linbo/linuxmuster-client/xenial/patchklasse/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

allow-hotplug wlp2s0
        iface wlp2s0 inet dhcp
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

(wlp2s0 muss ggfs. angepasst werden.)

  1. /var/linbo/linuxmuster-client/xenial/patchklasse/etc/wpa_supplicant/wpa_supplicant.conf
network={
        ssid="DEINE_SSID"
        scan_ssid=1
        psk=hierdenmitwpa_passphraseerzeugtenschluesselangeben
}

scan_ssid=1 braucht man bei verborgener SSID, den Schlüssel erzeugt man mit wpa_passphrase "DEINE_SSID" "DEIN_SCHLÜSSEL"

  1. /var/linbo/linuxmuster-client/xenial/common/postsync.d/98-chmod-wpa_supplicant
#!/bin/sh
if [ -f /mnt/etc/wpa_supplicant/wpa_supplicant.conf ] 
then
echo " - fixing permissions for /etc/wpa_supplicant/wpa_supplicant.conf"
chmod 600 /mnt/etc/wpa_supplicant/wpa_supplicant.conf
fi

Damit der PSK nicht für alle lesbar ist.

  1. /var/linbo/linuxmuster-client/xenial/patchklasse/etc/NetworkManager/dispatcher.d/99disablewifi
#!/bin/bash
if [ "$1" = "enp1s0" ]; then
    case "$2" in
        up)
            nmcli radio wifi off
            ;;
        down)
            nmcli radio wifi on
           ;;
   esac
fi

Schaltet das WLAN-Interface ab, wenn das Laptop per Kabel am LAN ist. (enp1s0 ggfs. anpassen.)

Viele Grüße

Andreas


#15

Hallo Stephan,

das Problem habe ich noch nicht beobachtet. Keine Ahnung, was da schiefgeht.

Viele Grüße

Andreas


#16

Hallo Andreas,

vielen Dank! Ich habe es jetzt mal so umgesetzt, doch es gibt / gab folgende Probleme:

  • Der Networkmanager hat beim Verbindungswechsel 127.0.0.1 in die /etc/resolv.conf geschrieben (und den hostnamen auf no), sodass die Namensauflösung nicht mehr geklappt hat. Ich habe das update der resolv.conf im Networkmanager deaktiviert. Damit geht es erstmal.
  • Das ifup/down Skript wird scheinbar nicht ausgeführt. Kannst du mir mal zum Vergleich deine NetworkManager.conf schicken?

In diesem Zusammenhang noch eine andere Frage:

  • Wie tragt ihr die WLAN-Clients in die workstations ein? Mit neuem Hostnamen oder dem gleichen?

vG Stephan


#17

Hallo Stephan,

Hast du den Interface-Namen (enp1s0) für dich angepasst?

Das ist dann möglicherweise die direkte Folge, wenn das Script nicht ausgeführt wird. Ich hatte (als ich ebenfalls das Problem mit der Namensauflösung bei paralleler Verwendung von LAN und WLAN hatte) aber leider nicht weiter recherchiert, woran das genau liegt, sondern bin direkt auf die Lösung mit nmcli radio wifi off gestoßen. Momentan kann ich das leider auch nicht weiter testen, da auf besagten HP-Laptops seit dem Kernelupgrade die Netzwerkkarte nicht mehr funktioniert: LINBO ab 2.3.39 - neuer Kernel verursacht manchmal boot-probleme

Mit dem gleichen Hostnamen.

Viele Grüße
Andreas


#18

Auf einem Nicht-WLAN-Client steht das bei mir auch drin: nameserver 127.0.1.1
Auf einem WLAN-Client steht da: nameserver 10.16.1.1

Die /etc/NetworkManager/NetworkManager.conf hat auf beiden den gleichen Inhalt:

[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

[ifupdown]
managed=false

Andreas


#19

Ja, habe ich. Das komische ist, wenn ich das Netzwerkkabel abziehe, ist meine Netzwerkkarte immer noch “Up”, und nicht “Down”. Ich werde mir das in den kommenden Tagen noch mal genauer anschauen.

Danke für deine Hilfe!

vG Stephan