NotrufSim (3) WLAN-AP mit DHCP

Fortsetzung von (2) Praxis

Heute soll der Raspi sein eigenes WLAN für Smartphones mit SIP-Client und den Zugriff auf die Weboberfläche bereitstellen, damit er quasi Plug&Play in freier Wildbahn ohne weitere Netzwerkhardware auskommt.

Ich verwende einen EDIMAX WLAN-Dongle EW7811UN, der oft mit dem Pi in Bundles verkauft wird. Der Treiber ist bereits im Raspbian enthalten und so sollte der Stick direkt am Pi laufen.

WLAN-Hardware vorbereiten

Als erstes deaktivieren wir das Powersaving des Adapters, damit der sich nicht mal unerwartet abschaltet und wir uns wundern, warum plötzlich das WLAN nicht mehr existiert.

sudo nano /etc/modprobe.d/8192cu.conf

… und fügen dort die folgende Zeile ein …

options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

Jetzt können wir das WLAN-Gerät konfigurieren …

sudo nano /etc/network/interfaces

… und die folgenden Zeilen anfügen, bzw. ändern, wenn schon ein wlan0 zuvor konfiguriert war …

iface wlan0 inet static
 address 10.0.0.112
 netmask 255.255.255.0

Jetzt das Interface starten …

sudo ifup wlan0

… und mit …

ifconfig

prüfen ob es verfügbar ist.

Aus Erfahrung … er braucht Strom! Ich hatte den Effekt, dass ein 1,3A-Netzteil scheinbar zu wenig für alles lieferte. Erst mit einem 2A-Netzteil lief der Stick am Pi stabil.

WLAN-AccessPoint einrichten

Nun installieren wir die benötigten Pakete für den AP-Mode, einen kleinen DNS- und DHCP-Server und die Bridge-Funktion …

sudo apt-get install hostapd dnsmasq bridge-utils

Als nächstes den müssen wir eine Konfig für den WLAN-Hostmode anlegen …

sudo nano /etc/default/hostapd

… dort die folgende Zeile suchen und einkommentieren, bzw. eintragen …

DAEMON_CONF="/etc/hostapd/hostapd.conf"

… und danach die Einstellungen konfigurieren …

sudo nano /etc/hostapd/hostapd.conf

… die Datei ist im „Werkszustand“ leer und muss gefüllt werden …

interface=wlan0
driver=rtl871xdrv
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=NotrufSim
channel=1
hw_mode=g
ieee80211n=1
wpa=2
wpa_passphrase=Notruf112
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
country_code=DE
Troubleshouting, falls hostapd nicht mit dem WLAN-Treiber zurechtkommt

Wenn danach der WLAN-Hostmode dennoch nicht funktioniert, gibt es für den Edimax mit dem RTL8188CUS-Chipsatz eine modifizierte Version der hostapd …

sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
cd /usr/sbin
sudo wget http://itwelt.org/downloads/hostapd
sudo chown root:root hostapd
sudo chmod 755 hostapd

DNS und DHCP für unseren WLAN-AccessPoint

Damit unser Raspi bei der Verbindung über WLAN auch eine IP vergibt und idealer weise auch auf DNS-Anfragen bearbeitet konfigurieren wir DNSMASQ …

sudo nano /etc/dnsmasq.conf

Da kann man wahnsinnig viel in der auskommentierten Datei einkommentieren oder aber auch einfach „Platz schaffen“ und folgendes eintragen …

interface=wlan0
#DHCP-Server
dhcp-range=10.0.0.50,10.0.0.100,255.255.255.0,12h
#DNS-Server
server=/notrufsim/10.0.0.112
address=/notrufsim/10.0.0.112
local=/notrufsim/

Da DNSMASQ bei der DNS-Auflösung auf die HOSTS-Datei des Systems zugreift, sollte hier die IP auch mit dem Hostnamen verknüpft werden ….

sudo nano /etc/hosts

… und hier eine Zeile anfügen …

10.0.0.112 notrufsim
Starten und Testen des WLAN-AccessPoints

Und jetzt zu guter Letzt müssen wir den WLAN-Hostmode und den DNS-DHCP-Server neu starten …

sudo service hostapd restart
sudo service dnsmasq restart

Wenn wir nichts falsch gemacht haben und die Technik nicht irgendwo einen kleinen Streich spielt, sollte man jetzt z.B mit dem Smartphone ein WLAN „NotrufSim“ finden, in das man sich mit dem Passwort „Notruf112“ einwählen kann und eine IP zwischen 10.0.0.50 und 10.0.0.100 bekommt.

Mit einer SIP-App (z.B. CSipSimple) auf dem mit dem Smartphone sollte man nun auch unter Verwendung folgender Anmeldedaten den Client am Asterisk-Server anmelden können:

username = 2000
passwort = 2000
registrar = notrufsim (alternativ IP: 10.0.0.112)
LAN-Schnittstelle eth0 mit DHCP-Server und DNS ausrüsten

Als nächstes müssen wir uns noch mit der LAN-Seite des Pi beschäftigen. Hier sollen später im autarken Modus auch kabelgebundene SIP-Telefone eine IP aus dem Subnetz des Pi bekommen und sich am Asterisk anmelden können. Dennoch sollte bei Verbindung mit einem bestehenden Netzwerk per DHCP eine IP bezogen werden und für Wartungszwecke eine Verbindung ins Internet aufgebaut werden.

Bei diesem Problem bin ich noch unschlüssig, wie die Lösung aussehen kann. Zwei Ideen habe ich im Kopf …

  1. Nach dem Bootvorgang prüft der Pi, ob er auf eth0 eine IP per DHCP bekommen hat. Falls ja, soll die Schnittstelle als Client weiter laufen. Falls nein, soll er eine Bridge zwischen eth0 und wlan0 starten und mit der IP 10.0.0.112  und DNS und DHCP ausstatten.
  2. Unabhängig vom DHCP-Status von eth0 wird primär immer die Bridge aktiviert. Braucht man nun auf der LAN-Seite einen DHCP-Client um den Pi ins Netz zu bringen (für Updates oder ähnliches) könnte über ein für den Webserver zugängliches Skript die Bridge beendet werden und eth0 wieder auf dhcp konfiguriert werden. Ist die Wartung beendet einfach neu starten oder wieder übers Web die Bridge neu starten.

weiter zu (4) Optimierung Netzwerk