Projekt Wifidog

Aus Opennet
Version vom 6. Januar 2017, 19:55 Uhr von MathiasMahnke (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
Team
Wifidog logo.png
Projekt Wifidog
Treffen:
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.opennet-initiative.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)

Einrichtung auf Opennet AP siehe unten.

Debian/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

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 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)
Wifidog DHCP Ablauf

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

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

Stand 2013 wurden alle freien Zugänge auf die einheitliche SSID "join.opennet-initiative.de" getauft und ein entsprechendes Logo und Aufkleber entwickelt. Die Quelle findet sich unter Opennet Logo.

Aufkleber
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge