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:

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.