== Server für UniFi WifiManager == <> WLAN-Infrastrukturen in Schulen richten wir auf Basis des Produkts [[https://www.ubnt.com/|UniFi]] ein. Leider ist die UniFi-Software für Linux lange nicht aktualisiert worden und es werden teils alte Software-Komponenten benötigt (MongoDB << Version 4.0, Java JRE v8). Diese Anleitung beschreibt, wie man einen UniFi-Controller auf Basis von Debian 11 aufsetzt und diese Installation durch die veralteten Software-Komponenten ergänzt. Im Allgemeinen richten wir {{{wifimanager.backbone}}} auf dem ersten Virtualisierungs-Server {{{virt-man-01.backbone}}} ein. Hardware-Voraussetzung für einen !WifiManager-Server sind: 2 Kerne, 2048MB RAM, 60GB Festplattenspeicherplatz). '''Hinweis:''' Die Ordner {{{/var/lib/unifi}}} und {{{/var/lib/mongodb}}} werden "ausgelagert" auf eine separate Partition. Da MongoDB (wird als Abhängigkeit von !UniFi mit-installiert) einiges an Speicherplatz benötigt, bitte {{{/srv}}} mit mind. 10G erstellen. Nach der Installation des Pakets 'unifi' dann aus {{{/var/lib/}}} sowohl die Ordner {{{unifi}}}, als auch {{{mongodb}}} nach {{{/srv}}} verschieben und dann für beides einen Symlink nach {{{/var/lib}}} legen. Der !WifiManager-Server benötigt im Virtualisierungs-Server nur eine Netzwerkschnittstelle. Die VM {{{wifimanager.backbone}}} ist mit dem !BackBone-Netzwerk verbunden. === Installationshinweise === Die virtuelle Maschine {{{wifimanager.backbone}}} wird zunächst mit einer Debian 11 Minimal Installation aufgesetzt, die WebGUI des !UniFi-Controllers wird nach Fertigstellung der Installation einfach via {{{https://wifimanager.backbone:8443}}} von einem der Virtualisierungs-Server aufgerufen, die VM {{{wifimanager.backbone}}} benötigt keine eigene Desktop-Umgebung o.ä. Natürlich muss die VM über einen SSH-Server erreichbar sein, dieses Feature kann bei der Basis-Installation des System ausgewählt werden. Wichtig ist, dass man bei der Installation den Punkt "Desktop Environment" explizit abwählt. ==== Installation von UniFi auf der VM ==== {{{ sudo touch /etc/apt/sources.list.d/100-ubnt.list }}} 1. In {{{/etc/apt/sources.list.d/100-ubnt.list}}} folgende APT Quelle eintragen: {{{ deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti }}} 2. Dann Hinzufügen des nötigen GPG-Keys für das UniFi APT Repository mit {{{ wget -O /etc/apt/trusted.gpg.d/unifi-repo.gpg https://dl.ui.com/unifi/unifi-repo.gpg }}} 3. In {{{/etc/apt/sources.list.d/mongo-server-3.6.list}}} die MongoDB 3.6 Quelle hinzufügen (Hinweis: hier muss leider auf sehr alte Software zurückgegriffen werden): {{{ deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/3.6 main }}} 4. Dann Hinzufügen des nötigen GPG-Keys für MongoDB 3.6 mit {{{ wget -qO /etc/apt/trusted.gpg.d/mondodb-server-3.6.asc https://www.mongodb.org/static/pgp/server-3.6.asc }}} 5. UniFi läuft leider nur mit Java 8 (OpenJDK 1.8), diese veraltete Java Version beziehen wir aus Debian stretch (Eintrag in {{{/etc/apt/sources.list.d/stretch.list}}}: {{{ deb http://deb.debian.org/debian stretch main deb http://security.debian.org/ stretch/updates main }}} 6. Installieren von !UniFi-Controller-Software {{{ sudo apt-get update sudo apt-get install openjdk-8-jre sudo apt-get install unifi }}} Nötigen Anpassungen der Netzwerkeinstellungen in {{{/etc/network/interfaces}}} {{{ # The primary network interface allow-hotplug eth0 iface eth0 inet static address 172.16.0.99 netmask 255.255.255.0 network 172.16.0.0 broadcast 172.16.0.255 gateway 172.16.0.253 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 172.16.0.253 dns-search backbone }}} === Einbinden eines UniFi-Access-Points === Login via WebGUI unter {{{https://172.16.0.99:8443}}}. Anpassungen der Einstellungen: {{{Einstellungen}}} > {{{Neues Drahtlosnetzwerk hinzufügen}}} > {{{SSID}}} > {{{"Hier SSID-Namen einfügen"}}} IP-Anpassungen: {{{Gerät}}} > {{{Uplink Kabelgebunden}}} > {{{Konfiguration}}} > {{{Netzwerk}}} {{{ Statische IP: 172.16.0.150 Netzwerkmaske: 255.255.255.0 Bevorzugte DNS: 172.16.0.253 Gateway: 172.16.0.253 }}} > {{{Zur Warteschlange}}} > {{{Ausstehende Änderungen anwenden}}} {{{Geräte}}} > Gerät einbinden (Überträgt Daten aus {{{Einstellungen}}} (s. unten)) Nach kurzer Wartezeit und einem Neustart ist der Access-Point nun einsatzbereit. ==== Anpassungen in Einstellungen/Erstellen der WLAN-Netze ==== In der Web-GUI von {{{wifimanager.backbone}}} auf {{{Einstellungen}}} > {{{Drahtlose-Netzwerke}}} > {{{Drahtlos-Netzwerk hinzufügen}}} gehen und folgenede Eintragungen vornehmen: Neues RADIUS-Profil hinzufügen: {{{ Profilname: TJENER IP: 172.16.0.41 Port: 1812 PW: }}} Benutztes PW danach bitte dokumentieren. Für WLAN-teachers: {{{ SSID: WLAN-teachers WPA-Enterprise VLAN-ID: 21 WPA-Modus: Nur WPA2 RADIUS-Profil: TJENER }}} Für WLAN-students: {{{ SSID: WLAN-students WPA-Enterprise VLAN-ID: 22 WPA-Modus: Nur WPA2 RADIUS-Profil: TJENER }}} Für WLAN-edu: {{{ SSID: WLAN-edu WPA-Enterprise VLAN-ID: 23 WPA-Modus: Nur WPA2 RADIUS-Profil: TJENER }}} Für WLAN-guests: {{{ SSID: WLAN-guests Offen VLAN-ID: 24 }}} Danach wechseln nach {{{Geräte}}}, den zu konfigurierenden AP auswählen und {{{provisionieren}}} auswählen. Die Konfiguration wird jetzt an den AP geschickt und dort gespeichert. ==== Anpassungen für Freeradius (u.A. LDAP) ==== Config aus {{{/etc/freeradius/*}}} übernehmen von {{{tjener.kath}}} oder {{{tjener.ebg}}} und entsprechend an neue Schule anpassen. ===== Anpassungen in /etc/freeradius/modules/ldap ===== {{{ ldap { # # Note that this needs to match the name in the LDAP # server certificate, if you're using ldaps. server = "ldap.intern" identity = "cn=freeradius,ou=freeradius,dc=skole,dc=skolelinux,dc=no" password = <24-stelliges Freeradius Tjener-Profil Passwort> basedn = "dc=skole,dc=skolelinux,dc=no" filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})" #base_filter = "(objectclass=radiusprofile)" }}} ===== Nötige Anpassungen in LDAP ===== Mit Tool ldapvi (hier mit mcedit als Editor): {{{ sudo VISUAL=mcedit ldapvi --discover -D cn=admin,ou=ldap-access,dc=skole,dc=skolelinux,dc=no -h ldap.intern -ZZZ PW: }}} Aus Freeradius-PW einen SSHA-Hash erstellen: {{{ sudo slappasswd }}} Vorzunehmende Änderungen/Anpassungen: {{{ copy "2 ou=people,..."-block > add ou=freeradius,dc=skole,dc=skolelinux,dc=no objectClass: top objectClass: organiuationalUnit ou: freeradius copy "11 cn=admin,..." > add cn=freeradius,ou=freeradius,dc=skole,dc=skolelinux,dc=no objectClass: top objectClass: organizationalRole objectClass: simpleSecurityObject cn: freeradius description: Freeradius Service-Account userPassword: {SSHA} }}} ===== Anpassungen in /etc/freeradius/clients.conf ===== Secret mit {{{pwgen 24}}} erstellen und hinzufügen. Secret dann in itzks-creds unter dem Eintrag für das Tjener Freeradius-Profil vermerken. ==== Setup-Test ==== Installieren von freeraidus-utils mit {{{ sudo apt-get install freeradius-utils }}} Testen der Freeradius-LDAP-Anbindung mit dem Tool {{{radtest}}} (idealerweise vorher Gosa-PW ändern, da das benutzte PW in der Bash-History zu sehen ist.): Da der Freeradius-Dienst auf dem {{{Tjener}}} läuft, muss dessen IP-Adresse angegeben werden. {{{ sudo radtest -x 172.16.0.41 10 }}} === Nutzungshinweise für UniFi === Nutzungshinweise finden sich [[Technik/Nutzungshinweise/UnifiAP|hier]]. === Installation === [[https://wiki.it-zukunft-schule.de/Technik/Installation/VM/WifiManager/jessie|Basisinstallation Jessie]]