Projekt Wifidog: Unterschied zwischen den Versionen
(→Vorbereitungen) |
(→Aktueller Projektstand: aktualisiert) |
||
Zeile 171: | Zeile 171: | ||
inez:/etc/rsyslog.d# | inez:/etc/rsyslog.d# | ||
== Aktueller Projektstand == | == Aktueller Projektstand == | ||
− | Die ursprüngliche Entwicklung von | + | |
− | + | Die ursprüngliche Entwicklung von Wifidog ist leider eingeschlafen und seit nunmehr über einem Jahr wurde nichts mehr daran gemacht. Die Pakete sind teilweise noch aus 2007. Daher ist das WifiDogTeam im Moment am Überlegen, ob wir nicht auf ein anderes Captive Portal umsteigen. Angedacht war da z.B. [http://coova.org/CoovaChilli CoovaChili]. Derzeit sind diese Überlegung aber nicht weiter in der Planung. | |
+ | |||
+ | Inzwischen ist Wifidog in unsere aktuelle Opennet Firmware integriert. Die Konfiguration wird weiter unten beschrieben. | ||
<br clear="all"/> | <br clear="all"/> | ||
+ | |||
== Firmware Implementierung und Netzwerk-Integration == | == Firmware Implementierung und Netzwerk-Integration == | ||
Die Wifidog-Implementierung ist mittlerweile Teil der Opennet-Firmware | Die Wifidog-Implementierung ist mittlerweile Teil der Opennet-Firmware |
Version vom 23. Februar 2013, 13:04 Uhr
Team |
![]() Projekt Wifidog |
Treffen: ??.03.2011 |
Weiterentwicklung und Integration des offenen WLAN Portals |
Mitglieder: Rene E. MathiasMahnke Christianw Henning Moh Christoph |
Kontakt: Crew Mailingliste |
Inhaltsverzeichnis |
Einleitung
Um einen Gastzugang mit Anmeldung zum Opennet zu realisieren, haben wir nach einer vorhandenen Open Source Lösung gesucht. Wifidog bietet sich als sogenanntes Captive Portal an. Mehr unter http://dev.wifidog.org/
Übersicht über Wifidog-Nodes: http://inez.on-i.de/node_list.php
Aufbau
Wifidog besteht aus den Komponenten:
- Gateway -- hier die Opennet Access Points
- Portal (Auth-Server) -- ein zentraler Server für die Verwaltung
Installation
OpenWrt AP (Wifidog Gateway)
Zunächst müssen wir das Gateway-Plugin auf unserem AccessPoint installieren. Dazu wählen wir für unsere Firmware das passende Packet, in diesem Fall für WhiteRussianRC6:
ipkg install http://easynews.dl.sourceforge.net/sourceforge/wifidog/wifidog_1.1.3_beta6-1_mipsel_whiterussianRC6.ipk
Jetzt muss noch die Konfiguration angepasst werden:
vi /etc/wifidog.conf
Wir haben testweise gesetzt:
GatewayID oni1 ExternalInterface vlan1 GatewayInterface eth1 GatewayAddress 192.168.1.137 AuthServer { Hostname inez.on-i.de Path / }
- Die GatewayID hilft später bei der Verwaltung mehrerer Knoten auf dem auth server.
- Als ExternalInterface muss das Interface konfiguriert werden, welches Verbindung zum Internet hat.
- Das GatewayInterface ist die Schnittstelle über welche sich Clients verbinden können, in unserem Fall über WLAN.
- Der Hostname gibt den Rechner an, auf dem der auth server läuft. Achtung: hier ist es wichtig keine Leerstelle hinter dem Namen zu haben!
- Der Path gibt den Pfad zum wifidog auth server home-Verzeichnis an. Achtung: auch hier darf keine Leerstelle hinter dem letzten Zeichen sein!
Die Konfiguration auf dem AccessPoint wäre damit abgeschlossen. Wenn auch der auth server richtig konfiguriert ist, sollte wifidog auf dem AP nun ohne Fehlermeldungen durchstarten:
/etc/init.d/S*wifidog start
Debain/Ubuntu Server (Wifidog Portal)
Das Vorgehen ist sehr gut unter http://dev.wifidog.org/wiki/doc/install/ubuntu/auth-server beschrieben, hier die wichtigsten Schritte zusammengefasst:
Vorbereitungen
Installation Webserver, PHP sowie Datenbank:
sudo apt-get update sudo apt-get install apache2 php5 sudo apt-get install postgresql sudo apt-get install php5-cgi sudo apt-get install php5-mhash php5-pgsql php-pear php5-xmlrpc php5-curl php5-mcrypt sudo apt-get install language-pack-en-base sudo apt-get install language-pack-de-base
ACHTUNG: Da wifidog-auth besonders lange Variablennamen verwendet, muss die suhosin-config angepasst werden:
sudo vi /etc/php5/apache2/conf.d/suhosin.ini -> add: suhosin.post.max_name_length = 100 -> add: suhosin.request.max_varname_length = 100
Installation des Versionsmanagementsystems (wenn noch nicht vorhanden):
sudo apt-get install subversion
Installation einer zusätzlichen PHP-Bibliothek:
sudo pear install XML_RPC cd /tmp wget http://downloads.sourceforge.net/project/phlickr/Phlickr/0.2.7/Phlickr-0.2.7.tgz sudo pear install Phlickr-0.2.7.tgz rm Phlickr-0.2.7.tgz
Installation der Graphic-Libraries für die Statistik-Pages:
sudo aptitude install php5-gd sudo pear install --alldeps Image_Graph-0.8.0 Image_Canvas-0.3.0
Hinweis: Es ist möglich, dass ein Mirror nicht mehr existiert - dann gegen einen funktionierenden austauschen.
Installation + Konfiguration (Shell)
Installation wifidog-AuthServer und Konfiguration im Webserver:
svn checkout https://dev.wifidog.org/svn/trunk/wifidog-auth sudo mv wifidog-auth/ /var/www/ sudo nano /etc/apache2/sites-available/default DocumentRoot /var/www/ -> DocumentRoot /var/www/wifidog-auth/wifidog sudo /etc/init.d/apache2 restart
Spracheinstellungen:
sudo nano /var/www/wifidog-auth/wifidog/config.php define('DEFAULT_LANG', 'en_US');
Mailserver installieren:
sudo apt-get install postfix
Datenbank anlegen:
sudo su - postgres createuser wifidog --pwprompt createdb wifidog --encoding=UTF-8 --owner=wifidog
Alle Fragen mit 'n' beantworten.
Das initiale Passwort für die Installation erhält man mittels
cat /tmp/dog_cookie.txt
(benötigt für Installation + Konfiguration (Webinterface))
Installation + Konfiguration (Webinterface)
http://<server>/install.php (Login mit Username leer, Passwort siehe dog_coockie.txt)
Den Instruktionen folgen.
Hinweis: Es sollten alle rot markiertn Komponenten installiert werden, auch wenn die Beschreibung suggeriert dass diese optional sind. Wir hatten Probleme mit phpmailer - hier war der in den Quellen hinterlegte Link nicht mehr aktuell, wir haben manuell angepasst.
Aufräumen (Shell)
Entfernen des Installationsscipts:
cd /var/www/wifidog-auth/wifidog mv install.php ../install.php
Nun ist der Portal-Server über http://<server>/ erreichbar.
DHCP-Server
#> aptitude install dhcp3-server
Konfiguration (/etc/dhcp3/dhcpd.conf):
# option definitions common to all supported networks... option domain-name "free.on-i.de"; # every router has the 10.3.0.1 as a virtual address for DNS and as the Gateway option domain-name-servers 10.3.0.1; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. subnet 192.168.0.0 netmask 255.255.0.0 { } # This is the DHCP-subnet, which is common for all Wifidog-clients subnet 10.3.0.0 netmask 255.255.0.0 { range 10.3.100.1 10.3.200.254; # every router has the 10.3.0.1 as a virtual address for DNS and as the Gateway option routers 10.3.0.1; }
für das dynamische Anlegen der Firwall-rules wird der syslog-deamon genutzt (vgl. dazu das Schema des DHCP-Forwarding). Konfiguration:
inez:/etc/rsyslog.d# cat dnat_dhcp.conf $template forward_msg,"%msg%" :programname, isequal, "dhcpd" ^/etc/rsyslog.d/dnat_dhcp.sh;forward_msg inez:/etc/rsyslog.d# cat dnat_dhcp.sh #!/bin/sh ID=$(echo $1 | awk 'BEGIN{FS="[ \.]"} $1 == "DHCPDISCOVER" && $(NF-4) == "via" {print $(NF-1)"."$NF}') if [ -z "$ID" ]; then exit; fi if [ -z "$(iptables -L OUTPUT -t nat | awk '$1 == "DNAT" && $5 == "10.3.'$ID'" && $NF == "to:192.168.'$ID'"')" ]; then iptables -A OUTPUT -t nat -d 10.3.$ID -j DNAT -p udp --dport 67 --sport 67 --to-destination 192.168.$ID fi inez:/etc/rsyslog.d#
Aktueller Projektstand
Die ursprüngliche Entwicklung von Wifidog ist leider eingeschlafen und seit nunmehr über einem Jahr wurde nichts mehr daran gemacht. Die Pakete sind teilweise noch aus 2007. Daher ist das WifiDogTeam im Moment am Überlegen, ob wir nicht auf ein anderes Captive Portal umsteigen. Angedacht war da z.B. CoovaChili. Derzeit sind diese Überlegung aber nicht weiter in der Planung.
Inzwischen ist Wifidog in unsere aktuelle Opennet Firmware integriert. Die Konfiguration wird weiter unten beschrieben.
Firmware Implementierung und Netzwerk-Integration
Die Wifidog-Implementierung ist mittlerweile Teil der Opennet-Firmware
- die aktuelle Opennet Firmware NG unterstützt ab Version 0.3-4 die dezentrale Wifidog-Lösung
- die 'alte' Opennet-Firmware Version 0.9-on5-0.11ipkg-15 unterstützt ebenso die dezentrale Wifidog-Lösung (diese Firmware sollte nur auf alter Hardware eingesetzt werden)
DHCP-Ablauf der Wifidog-Implementierung
Features:
- zentrale DHCP-Verwaltung
- DHCP-Adressvergabe nur, wenn Tunnel aktiv ist
Die DHCP-Verteilung für alle Wifidog-Clients erfolgt zentral. Dies ist wichtig, da nur so Features wie Roaming oder zentrale Trafficüberwachung realisierbar sind. Ausserdem können effektiv Überschneidungen der IP-Bereiche verschiedener Access-Points vermieden werden.
Der zentrale DHCP-Server ist auf inez.on-i.de / 102.168.10.3 installiert und liefert eine Adresse aus dem Netzwerk 10.3.0.0/16. Jeder AccessPoint APX.Y hat im entsprechend für Wifidog freigegebenen Netzwerk ("FREE") die eindeutige Adresse 10.3.X.Y. Da der DHCP-Server an alle Clients den gleichen DNS-Server und den gleichen Gateway liefert, haben alle AccessPoints auf diesem Interface zusätzlich die Adresse 10.3.0.1.
Eine Anfrage per DHCP wird mit dem dhcp-forwarder an das Ende des aktiven VPN-Tunnels geschickt (dhcp-fwd zu 10.1.0.1). So wird diese Anfrage nur zugestellt und beantwortet, wenn der Tunnel aufgebaut ist und funktioniert. Ist der Tunnel nicht aktiv, bekommt der Client keine Adresse und verbindet sich so nicht mit dem Netzwerk.
Auf allen Gateways wird eine in 10.1.0.1 eingehende DHCP-Anfrage an die Opennet-Adresse von inez weitergeleitet (192.168.10.3). Üblicherweise würde nun der DHCP-Server an die Quelladresse antworten, also an 10.3.X.Y. Diese ist aber nicht direkt im Opennet erreichbar, darum wird bereits bei Eingehen der DHCP-Anfrage auf inez eine iptables-DNAT-rule erstellt, die das ausgehende Paket statt an 10.3.X.Y an 192.168.X.Y weiterleitet.
Auf dem APX.Y geht nun die Antwort von inez ein und wird an den Client weitergereicht.
dezentrales Wifidog-Konzept
Vorteile
- jeder AP ist ein Wifidog-Node, kann getrennt konfiguriert werden
- gleichzeitiger Betrieb als normaler User-AP möglich
- Zugang für Wifidog-Nutzer direkt über Gateway-VPN-tunnel
Nachteile
- jeder AP ist ein Wifidog-Node, muss getrennt konfiguriert werden, hoher Verwaltungsaufwand
- spezifische Firmware notwendig, Speicherbedarf größer
- Nutzerverwaltung (aussperren, freigeben) nicht für alle Nodes möglich
Beim dezentralen Wifidog-Konzept läuft der WifiDog-Gateway direkt auf dem AP. Der Tunnel wird mit einem Zertifikat aufgebaut, welches den Common-Name nach dem Schema X.Y.aps.on hat. Der Traffic wird - nach erfolgreicher Authentifizierung - direkt über den Opennet-VPN-Tunnel und den Opennet-Gateway ins Internet geroutet.
Firmware-Konfiguration für Wifidog
neue Opennet-Firmware
Dokumentiert unter Opennet_Firmware_NG_Konfiguration#Wifidog-Konfiguration
alte Opennet-Firmware
Die alte Opennet-Firmware sollte nur noch für alte Geräte genutzt werden (bspw. Linksys WRT54G), bei denen eine Nutzung der neuen Firmware nicht sinnvoll erscheint. Ab Version 0.11ipkg-15 unterstützt die alte Firmware Wifidog, dieses wird aktiviert, indem die Wireless-Schnittstelle in den Access-Point Modus gesetzt wird. Weiterhin ist wichtig, der Schnittstelle eine IP-Adresse im richtigen Bereich zu geben.
- prüfe ob der AP per LAN oder WAN mit Opennet verbunden ist - sonst sägst Du an dem Ast auf dem Du sitzt
- im OpenWRT-Admin-Bereich (Netzwerk) die Wireless-Schnittstelle auf "Access Point" konfigurieren (save, apply)
- im Opennet-WIFI Bereich der Wireless-Schnittstelle eine zur Opennet-ID (X.Y) passende IP-Adresse der Form 10.3.X.Y geben
- VPN-Zertifikat installieren, AP neu starten
Der Access-Point aktiviert nun Wifidog auf der WLAN-Schnittstelle mit der Gateway-ID "APX.Y". Diese muss unter inez.on-i.de noch nach Wunsch konfiguriert werden.