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 …
- 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.
- 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