OpenWRT als Accesspoint
OpenWRT als Accesspoint
OpenWRT ist nicht nur als Router, sondern auch als Access-Point sehr gut einzusetzen, wenn auch an manchen Stellen etwas Hand anzulegen ist. Hat man das gemacht, muß sich OpenWRT aber nicht hinter kommerziellen Implementierungen verstecken und kann gut angepasst werden.
Voraussetzungen?
Bei mir persönlich zwei Ubiquiti AP-AC-PRO. Ich hatte noch einen zuhause gelagert, da ich das Ubiquiti Konzept probiert habe, mir persönlich das aber nicht zusagt. Da die Hardware so schön ist, und da die Geräte glücklicherweise nicht komplett zu sind, sind das tolle Geräte für die Alternative OpenWRT. Als 802.3af PoE fähiges Gerät (Achtung nur der UAP-AC-PRO, die anderen haben großteils properitäres 24V System) ist das ein optisch ansprechendes Gerät an der Wand. Deshalb habe ich noch einen zweiten besorgt und direkt mit OpenWRT geflashed. Der Weg zu OpenWRT ist wie folgt:
- Abmelden des Access-Points von der Ubiquiti Installation
- Zurücksetzen
- Downgrade auf eine Firmware von vor März 2017
- Download des passenden Images und beschreiben des Flashs mit mtd
Nach diesen Schritten sollte OpenWRT auf dem Access-Point booten
Anpassungen
Zuhause möchte ich die folgenden Dinge haben: WAP-EAP, SNMP, WLAN Clients via SNMP abfragbar, Management VLAN, LLDP.
Das Paket dnsmasq
kann bei der Verwendung als Access-Point
deinstalliert werden. Genaugenommen stört auch die Firewall und diverse Dinge
für Routing und NAT, stören aber auch nicht, da es abgeschaltet bzw.
entsprechend konfiguriert werden kann.
Die Konfiguration des Ubiqiti eigenen Switch Controllers ist etwas eigenwillig, man bekommt das aber alles ordentlich zum laufen.
WAP-EAP
Wireless-Authentisierung mit Radius, so daß jeder Client ein eigenen Usernamen/Passwort hat. Das ist direkt von OpenWRT unterstützt und dort in der Doku beschrieben.
SNMPD
Jetzt wirds spannend. Man kann zwar snmpd
(nicht
mini-snmpd
, kommt gleich warum) installieren, aber leider darüber
keinerlei WLAN Parameter abfragen. Das ist leider aus hostapd_cli
herausgenommen. Mit snmpd sind aber normale Queries nach den üblichen Countern
möglich.
Ein Workaround für das Erhalten von Wireless-LAN Parametern via SNMP ist möglich, dazu muß aber snmpd verwendet werden. Das wird nicht von mini-snmpd unterstützt.
Folgende Dinge muß man tun, damit via snmp die WLAN Parameter abfragbar sind.
- Verwenden des Paketes
snmpd
- Eine Konfigänderung in
/etc/config/snmpd
und ein Shellskript
WLAN Parameter via SNMP abfragen
Anpassungen an /etc/config/snmpd
Mit einem beliebigen Editor die Datei /etc/config/snmpd
auf
der openwrt installation editieren. Der erste Abschnitt ist schon in der Datei
enthalten. Die anderen Punkte mit dem Namen stationlist können so 1:1
übernommen werden.
config exec option name filedescriptors option prog /bin/cat option args /proc/sys/fs/file-nr # option miboid 1.2.3.4 config exec option name stationlist option prog /root/bin/station-dump option args stations option miboid .1.3.6.1.4.1.2021.50 config exec option name stationlist option prog /root/bin/station-dump option args signal option miboid .1.3.6.1.4.1.2021.51 config exec option name stationlist option prog /root/bin/station-dump option args connected-time option miboid .1.3.6.1.4.1.2021.52 config exec option name stationlist option prog /root/bin/station-dump option args iface option miboid .1.3.6.1.4.1.2021.53
Das Shellskript in /root/bin/station-dump
Das Shellskript zum Abrufen auf dem OpenWRT
AP. Das Skript muß in /root/bin
des OpenWRT-Gerätes
installiert werden. Das Skript hat harte Annahmen die auf meine Installation zutreffen, z.B. 2 2.4 GHz WLANs und ein 5 GHz
WLAN. Das muß dann natürlich angepasst werden.
Das Skript zum Daten abrufen
Um die Daten remote abzurufen kann das Perl-Skript poll-clients-openwrt.perl
verwendet werden. Dieses Skript
greift auf den SNMP Server von OpenWRT zu (nachdem man die community und die IP angepasst hat, natürlich).
Ubiquiti LED "blau" wenn mindestens ein Client eingebucht ist
Das machen viele kommerzielle Implementierungen: Sobald mindestens ein Client eingebucht ist, leuchtet eine Kontrollleuchte in einer anderen Farbe. Der UAP-AC-PRO kann das auch, er hat eine weiße und blaue LED und man kann die über das proc Dateisystem steuern. OpenWRT kann die LEDs auch auf bestimmte Ergebnisse ansteuern, genau diese Anwendung ist aber nicht vorgesehen. Ich will auch nicht daß das Ding irgendwie in der Wohnung herumflackert.
Mein Skript (muß manuell oder beim Startup gestartet werden, Achtung erster Versuch, läuft im Vordergrund) schaltet auf blau wenn mind. ein Client eingebucht ist, ansonsten ist der "Ubiquiti-Ring" weiß. Für dieses Skript gilt das oben zu station-dump geschriebene.
LED-State. Shellskript das die LED steuert.
Management VLAN
Kann man mit den Boardmitteln konfigurieren, indem man in OpenWRT ein entsprechendes VLAN anlegt und das dann entstehende VLAN Interface konfiguriert. Ich empfehle auch im Management VLAN DHCP zu machen und die IP Adressen zentral zu verwalten (z.B. in einem Switch, dann ist man unabhängig davon ob der eigene Server sauber läuft).
LLDP
Das Paket lldpd
installieren und ggf. enablen. Damit bin ich noch nicht ganz zufrieden, da die
PoE Parameter nicht gesendet werden und die LLDP Frames mit vlan-id 1 getagged
gesendt werden. Unter Umständen müssen in /etc/config/lldpd
hostname
und die richtigen Interfaces konfiguriert werden, damit lldp auch ohne lokalen
DNS Server zuverlässig startet.