OpenWRT als Accesspoint

OpenWRT als Accesspoint

OpenWRT ist nicht nur als Router, sondern auch als Access-Point durchaus 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 ein 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 Geräte glücklicherweise nicht komplett zu sind, gibt es einen Weg zu einer Alternative, in dem Fall OpenWRT. 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 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).

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.