WLAN Hotspot mit Chillispot(DD-WRT), Freeradius und MySQL unter Ubuntu

Heute mal ein etwas außergewöhnliches Tutorial. Wir richten einen WLAN-Hotspot ein, wie er zum Beispiel in einem Café, oder ähnlichem, zur Versorgung der Kunden mit drahtlosem Internet dienen könnte.

Für dieses Tutorial gehe ich von folgenden Vorraussetzungen aus:

Hardware:

  • Ein Router auf dem DD-WRT v2.4 (standard) lauffähig ist (Liste der unterstützten Geräte)
  • Ein Rechner (auch gerne etwas älter) auf dem die Ubuntu Server Edition läuft. Netzwerkzugang sollte er natürlich auch haben.

Netzwerk:

  • Getrennte Netze für das Gäste-WLAN (192.168.182.0/24) und das interne LAN (192.168.1.0/24)
  • Internet-Zugang erfolgt direkt über den Router, der auch das WLAN bereitstellt
  • IP-Adressen:
    • Router/Access-Point (Gateway, DNS): 192.168.1.1
    • Radius/Webserver: 192.168.1.254

Software:

  • DD-WRT v24 standard auf dem Router; Chillispot ist darin integriert
  • Freeradius (RADIUS-Server) zur Verwaltung der Gastzugänge (für Zeitbasierte Zugänge z.B.)
  • Apache 2 zur Anzeige der Login-Seite
  • MySQL zum halten der Daten die Freeradius verwendet

Einrichtung des Routers

Auf die Grundeinrichtung des Routers werde ich hier nicht eingehen, nur die Einstellungen für unser Setup werden kurz erwähnt.

Generelles Setup

Über den Tab "Setup"->"Basic Setup" muss der DHCP-Server ausgeschaltet werden, da dieser sonst mit dem Chillispot-internen kollidiert

WLAN Setup

Über den Tab "Wireless" das W-LAN einrichten, allerdings sollte die Verschlüsselung deaktiviert werden, da wir unsere Zugänge ja von Chillispot und Freeradius verwalten lassen.

Chillispot Setup

Unter dem Tab "Services->HotSpot" finden wir die Chillispot-Konfiguration.

Wie welche Felder auszufüllen sind, ist weiter unten beschrieben.

Erklärung der Optionen:

  • Chillispot - Aktivieren der Chillispot-Funktionalität auf dem Router
  • Seperate Wifi from LAN Bridge - Läßt zu, dass das Ethernet per Kabel, ohne Anmeldung genutzt werden kann.
  • Primary Radius Server - IP-Adresse des Radius-Servers
  • Backup Radius Server - wenn nur ein Radius-Server selbe IP wie oben
  • DNS IP - IP des DNS-Servers der an die Nutzer verteilt werden soll (i.d.R. der lokale Router)
  • Remote Network - Das Netz aus dem die Clients IP-Adressen bekommen (192.168.182.0/24 heißt 192.168.182.1 bis 192.168.182.254 - siehe http://de.wikipedia.org/wiki/Subnetz)
  • Redirect URL - Hierher werden die Nutzer umgeleitet um sich am HotSpot anzumelden
  • Shared Key - Damit wird die Verbindung zum Radius-Server verschlüsselt
  • DHCP-Interface - Netzwerkschnittstelle an die Chillispot gebunden werden soll (i.d.R. wl0 oder eth1, sollte auf jeden Fall das W-LAN-Interface sein)
  • Radius NAS ID - Name des AccessPoints (frei wählbar)
  • UAM Secret: Mit diesem Schlüssel wird die Verbindung zur der Seite verschlüsselt auf der die Nutzer Benutzername und Passwort angeben müssen
  • UAM Any DNS - legt fest ob der Nutzer einen selbst definierten DNS-Server benutzen darf (sollte man aus Sicherheitsgründen bei 0 belassen; nur auf 1 setzen, wenn man weiß was man tut)
  • UAM allowed - Hier können Domains eingetragen werden, die auch ohne Anmeldung zugänglich sein sollen (wichtig zum Beispiel wenn man die Bezahlung des Zugangs über einen externen Anbieter löst)
  • MACauth - legt fest ob die Authentifizierung der Nutzer über deren MAC-Adresse(http://de.wikipedia.org/wiki/MAC-Adresse) erfolgen soll. Wollen wir hier aber nicht
  • Additional Chillispot Options - Hier können weitergehende Optionen, wie z.B. Begrenzung der verteilten IP-Adressen ("dynip 192.168.182.128/26" für 192.168.182.128 bis 192.168.182.191) oder das Festlegen eines zweiten DNS-Servers ("dns2 8.8.8.8), für Chillispot angegeben werden, die aber für den Basisbetrieb nicht notwendig sind.

Installation des Servers:

Ich verwende Ubuntu Server Edition 10.04 als Basis. Wenn ihr eine andere Version benutzt, achtet bitte darauf, das ihr Freeradius in der Version 2.x zu benutzen, mit Version 1 wird dieses Tutorial nicht funktionieren.

Installation der Pakete

Apache/MySQL

sudo tasksel install lamp-server

Damit werden in einem Rutsch Apache, MySQL und PHP installiert.

Freeradius

sudo apt-get install freeradius freeradius-mysql

Chillispot (wird benötigt für die Anmeldeseite)

sudo apt-get install chillispot

Die Fragen die bei der Installation einfach ohne Eingabe mit Enter bestätigen. Chillispot muss hier nicht konfiguriert werden, da wir nur das Login-Script brauchen.

Konfiguration

Konfiguration von Apache

Für das Zusammenspiel mit Chillispot ist es nötig, dass der Webserver eine per SSL verschlüsselte Verbindung anbietet. Problematisch dabei ist, dass bei der Verwendung eines selbst signierten Zertifikats beim Aufrufen der Login-Seite der Browser eine Warnung anzeigen wird. Um das zu umgehen sollte man die Login-Seite hinter ein 'offiziell' signiertes Zertifikat legen. Darauf werde ich allerdings hier nicht eingehen, da das den Rahmen sprengen würde.

Also generieren wir uns unser SSL-Zertifikat erstmal selbst:

sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

Die Option '-days' besagt wie lange das Zertifikat gültig sein soll. Bitte den eigenen Vorlieben anpassen. Die geforderten Eingaben sind beliebig zu wählen. Lediglich bei 'Common Name' sollte der Hostname des Servers benutzt werden.

Damit Apache das Zertifikat findet, muss noch ein Symlink angelegt werden. Dabei darauf achten, das in Zeile 3 keine normalen Apostrophe, sondern so genannte Backticks (Akzent-Zeichen) verwendet werden müssen. da sonst der Befehl fehlschlägt:

sudo ln -sf /etc/apache2/apache.pem /etc/apache2/`/usr/bin/openssl x509 -noout -hash < /etc/apache2/apache.pem`.0
sudo chmod 600 /etc/apache2/apache.pem

Anschließend aktiviert man das SSL-Modul mit einem

sudo a2enmod ssl

aktiviert die Standard Apache SSL-Site

sudo a2ensite default-ssl

Zu guter Letzt wird das Login-Formular entpackt und an die passende Stelle gelegt:

sudo zcat /usr/share/doc/chillispot/hotspotlogin.cgi.gz > /usr/lib/cgi-bin/hotspotlogin.cgi
sudo chmod 755 /usr/lib/cgi-bin/hotspotlogin.cgi

In dieser Datei müssen noch eine Option angepasst werden, das Passwort dafür habt ihr bei der Konfiguration von Chillispot bei "UAM Secret" festgelegt:

$uamsecret = "nochmalgeheim";

Danach die Apache-Konfiguration neu laden,

sudo /etc/init.d/apache2 force-reload

und testen ob man die Seite https://[server-ip]/cgi-bin/hotspotlogin.cgi erreichen kann. (Dort sollte die Meldung "Chillispot Login failed" erschienen, was aber normal ist, da wie nicht von Chillispot auf diese Seite umgeleitet wurden.)

Falls die Seite angezeigt wird, kann direkt mit der Einrichtung von Freeradius weitergemacht werden, falls nicht, nochmal alles checken und gegebenenfalls berichtigen.

Konfiguration von Freeradius

Zuerst muss unser Access-Point (mit der IP 192.168.1.1) als Client akzeptiert werden. Dazu bearbeitet man die Datei '/etc/freeradius/clients.conf' und fügt folgende Zeilen am Ende der Datei ein:

client captive-portal {
    ipaddr = 192.168.1.1
    secret = ultrageheim
    nastype = other
}

Der Name hinter "client" sollte der selbe sein, den ihr im Feld Radius NAS ID in der Chillispot-Konfiguration verwendet habt sein. "ipaddr" sollte die IP-Adresse des Access-Points sein, "secret" der in der Chillispot-Konfiguration festgelegte "Shared Key". "nastype" sollte wie hier auf 'other' gesetzt werden.

Anbindung von Freeradius an die MySQL-Datenbank

Datenbank anlegen

mysql -u root -p
Enter password:
  1. mysql> CREATE DATABASE radius;
  2. mysql> quit

Tabellen für Freeradius aus den Vorlagen importieren

mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql

Benutzer anlegen und ihm Rechte an den Tabellen geben

mysql -u root -p
Enter password:
  1. GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'sicherespasswort';
  2. FLUSH PRIVILEGES;
  3. quit

Radius für MySQL konfigurieren

In Datei '/etc/freeradius/radiusd.conf' müssen die Zeilen '$INCLUDE sql.conf' und '$INCLUDE sql/mysql/counter.conf' vom Kommentarzeichen befreit werden. Sollte dann hinterher so aussehen:

...
$INCLUDE sql.conf
...
$INCLUDE sql/mysql/counter.conf
...

Die erste Zeile aktiviert die generelle Nutzung der SQL Datenbank, die zweite aktiviert die Nutzung von SQL zur Verwaltung der Zeitbasierten Zugänge. In der Datei 'counter.conf' werden die MySQL-Abfragen definiert die das Verwalten der Zeitkonten regeln. Mit geeigneten SQL-Kenntnissen kann man sich hier gerner mal umschauen.

In der Datei '/etc/freeradius/sql.conf' die folgenden Zeilen ensprechend ändern um Freeradius die Zugangsdaten für den MySQL-Server mitzugeben:

server = "localhost"
login = "radius"
password = "sicherespasswort"

Außerdem müssen in der Datei '/etc/freeradius/sites-available/default' Änderungen gemacht werden. Die Datei ist in Sektionen unterteilt die jeweils mit einem 'name {' beginnen.
In der Sektion 'authorize' muss es heißen:

...
#files
sql
...

In der gleichen Sektion müssen am Ende diese drei Optionen hinzugefügt werden. Sie werden für die Zeitbasierten Zugänge gebraucht.

noresetcounter # Zuständig für zeitlich begrenzte Zugänge (dieser wird von uns verwendet)
dailycounter   # Zuständig für Tageslimits, die aber jeden Tag zurückgesetzt werden
monthlycounter # Zuständig für Monatslimits, die aber jeden Monat zurückgesetzt werden

Wir werden zwar nur den 'noresetcounter' brauchen, aber wenn wir schonmal hier sind, kann es nicht schaden, die anderen beiden auch einzutragen. Kurz zur Beachtung: Wir verwenden nicht den 'dailycounter', da dessen "Zähler" jeden Tag zurückgesetzt wird, und der Zugang so dauerhaft aktiv bleibt, was wir in unserem Café natürlich nicht wollen (Die Sätze nach den # müsst ihr übrigens nicht mit eintragen 😉 ).

In der Sektion 'accounting':

...
sql
...

In der Sektion 'session':

...
sql
...

Also jeweils das Kommentarzeichen vor den 'sql'-Zeilen entfernen. Das ist nötig damit freeradius SQL zur Konfiguration und zum Steuern der Zeitbasierten Konten benutzt.

anschließend kann man mit dem Befehl

sudo freeradius -XXX

testen ob der Server einwandfrei startet und man keinen Fehler in die Konfiguration gebaut hat. Wenn am Ende die Zeile

Info: Ready to process requests.

erscheint, war die Konfiguration zumindest für den Server selbst in Ordnung.
Falls alles erfolgreich verläuft beendet man den Freeradius Testmodus mit STRG-C und startet freeradius neu:

sudo /etc/init.d/freeradius restart

Danach sollte unser Hotspot fertig zur Benutzung sein.

Ein erster Test

Um unser Setup zu testen legen wir zunächst einen neuen Benutzer an, der den Hotspot nutzen darf. Wir tun das über das Terminal, generell kann man aber auch phpMyAdmin (oder eine Alternative) benutzen.

Benutzer und Zeitkonto anlegen

Die Tabelle für die Benutzerzugänge besteht aus 5 Spalten:

  • id (wird automatisch ausgefüllt)
  • username (der name unseres Benutzers
  • attribute (die Option die wir festlegen wollen
  • op (Operator, mit dem die Zuordnung von Attribut und Wert gemacht wird)
  • value (Wert gegen den das Attribut verglichen wird)

Dieses Layout erlaubt es in dieser Tabelle nicht nur das Passwort für einen Benutzer festzulegen, sondern zum Beispiel auch die Werte für die Zeitbegrenzung der Zugänge.

mysql -u root -p radius
  1. INSERT INTO radcheck VALUES ('','test0001','Password',':=','testpasswort');
  2. INSERT INTO radcheck VALUES ('','test0001','Max-All-Session',':=','3600');

Diese beiden Queries legen einen Benutzer mit Namen 'test0001' und Passwort 'testpasswort' an. Zusätzlich geben wir ihm 3600 Sekunden (1 Stunde) auf sein Zeitkonto. Nach deren Ablauf wird er automatisch ausgeloggt.

Mit diesem Benutzer kann man jetzt testen ob das Setup funktioniert, in dem man einen Client mit dem Drahtlosen Netzwerk verbindet und schaut ob man

  1. beim Aufruf einer beliebigen Internetseite auf die Login-Seite umgeleitet wird
  2. Sich mit unserem Test-Benutzer einloggen und danach surfen kann

Zum testen kann man das Zeitlimit auch kleiner wählen um zu sehen ob das automatische Rauswerfen auch funktioniert.

Nachbereitung

Einen funktionierenden Hotspot haben wir nun, aber was fehlt noch?
Nun zu erst fehlt natürlich ein komfortabler Weg um die Nutzerzugänge zu verwalten. Leider waren die die ich bisher getestet habe eher mäßig bis nicht zu gebrauchen. In der Richtung müsstet ihr also selbst mal suchen, oder selbst ein kleines Skript oder Interface zusammenschrauben, die SQL-Anbindung macht das ganze eigentlich ganz gut anpassbar.

Zweiter Punkt wäre eine Firewall um euren Gästen zum Beispiel nur den Zugang zu den Ports 80(http) und 443(https) zu erlauben (hier sollte man auch an Ports für VPN-Verbindungen denken), da man sonst ein nicht zu unterschätzendes Sicherheitsrisiko (z.B. durch P2P-Verkehr) eingeht. Anleitungen um das mit DD-WRT zu bewerkstelligen findet ihr im DD-WRT-Wiki.

Als letztes fehlt euch natürlich noch das passende Cafe und die zahlenden Gäste, aber dafür sorgt ihr besser selbst!

Disclaimer

Zum Schluss natürlich noch der Hinweis, das ich dieses Tutorial nach bestem Wissen und Gewissen erstellt und getestet habe, es aber natürlich Fehler enthalten kann, bzw. durch unsachgemäßen Gebrauch zu unvorhersehbaren Folgen führen kann, für die ich natürlich keine Haftung übernehmen kann. Alles auf eigene Gefahr.

105 Gedanken zu „WLAN Hotspot mit Chillispot(DD-WRT), Freeradius und MySQL unter Ubuntu

  1. BP

    Das Problem ist, wenn ich vor dem Zeit ablauf auslogge, dann hab ich die komplette Zeit nochmal. Wenn ich allerdings online bleibe bis die Zeit abläuft funktioniert es. Ich versuche grade was passiert wenn ich nicht auf logout klicke sondern einfach offline gehe.. werde berichten (:

  2. Malu

    Falls es jemanden interessiert. Mein Fehler lag daran das mein Router sich anscheinent nur mit dem radius verbindent wenn er neustartet.

  3. Thomas

    Hallo,

    hat jemand eine Anleitung, wie man in einem Internetcafe bei dem Clientrechner nach einem Neustart das Profil wieder zurücksetzt? Danke Gutes Neues allen noch

  4. Dee

    Update:
    Wenn ich 192.168.1.1 oder 192.168.182.1 als DNS angebe, kann ich keinen Namen auflösen 🙁 Wenn ich einen freien DNS Server angebe (opendns.com), dann klappt es.
    Toll! Damit funktioniert alles, aber ich frage mich, wieso mein Router als DNS nicht ausreicht?!

  5. warlock2

    moin moin

    geht es hier noch weiter beschäftigt sich wer mit problemen ich komme auch irgendwie nicht weiter habe alles nach anleitung gemacht es es tut sich nicht wirklich was habe aber sont nicht viel ahnung von w-lan kann jemand auch beschreiben was sonst so drumherum eingestellt werden muss also auch auf dem router

    danke im vorraus mfg ike

  6. warlock2

    ich habe einen rechner genommen ubuntu server version drauf 2 netzwerkkarten die erste ist im 192.168.228.0 netz mit einer festen ip aus diesem netzt will ich das internet beziehen
    die 2te netzwerkkarte hat auch fest bekommen die 192.168.50.0 das gäste w-lan soll soll ja die ip aus dem netzt verteilen 192.168.182.0 dem router habe ich die ip 192.168.50.1 gegeben und dhcp ausgemacht wenn ich jetzt mit dem laptop versuche mit dem router zu verbinden bekomme ich keine ip aus dem 182.0 netz und wenn ich die seite aufrufe bekomm ich das übliche log in fail

    hat jemand eine idee ich wäre über jede idee sehr dankbar
    mfg warlock2

  7. zero Beitragsautor

    @warlock: Sorry, aber zuerst mal muss ich dir sagen, das deine Kommentare extrem schwer zu lesen sind, da sich darin (ausser in den IP-Adressen) weder Punkt noch Komma befinden, noch auf Groß- und Kleinschreibung geachtet wird. Ich will hier sicher nicht den Rechtschreibungsnazi geben, aber es macht echt keinen Spass das zu lesen.

    So, nun zum Thema:

    Beschreibe bitte mal genau dein Setup, welche Rechner, welcher Router, wer soll was erledigen. Aus dem was du bisher geschrieben hast lese ich das du ein anderes Setup benutzt, als das im Blogpost beschriebene (sprich WLAN-AP mit integriertem Router und direktem Internet-Zugang; Authentifizierung über separaten Server).
    Das Tutorial ist wirklich nur für die oben Beschriebene Konfiguration eins zu eins anzuwenden, für andere Setups muss man da sicher nochmal an der einen oder anderen Stelle Hand anlegen.

  8. warlock2

    Danke erstmal für eure Hilfe, ich verspreche mich zu bessern was die Rechtschreibung betrifft.
    Dann zuerst warum ich das mache, irgendwie ist das ein Teil meiner Facharbeit und ich komm da von alleine nicht weiter. Deswegen kommen aber die fertiglösungen nicht so in Frage.
    Das ganze mach ich in einer Firma die ein vorhandenen Netzwerk hat aus dem ich eine feste IP bekommen habe, die zugriff auf das Internet hat die 192.168.228.247.
    Dann habe ich einen kleinen Server bekommen der als Router, Radius-, Web-, MySQL- und Samba Server fungieren soll. Das mit Samba hab ich fertig das läuft, Mysql und die anderen Programmen die in dem „How to“ vorkommen sind auch installiert und laufen soweit ich das beurteilen kann.
    Nun zu den Schwierigkeiten ich lasse sonst alles im Router auf auto, weil ich nicht viel ahnung davon habe die Einstellungen von oben konnte ich ja noch übernehmen aber was muss sonst noch so eingestellt oder ausgestellt werden.
    Auf das Netzwerk der Firma soll narürlich keinerr von ausen zugriff haben deswegen die 2te Netzwerkkarte im Server mit der IP 192.168.50.50. und der Router hat eine IP aus demselben Netzwerk damit er Zugriff drauf hat dachte ich mir.
    Die von ausen auf das Netzwerk per W-Lan zugreifen sollen ja nochmal ein eigenes Netzwerk bekommen IPs aus der 192.168.182.0, das Chilli soll das können wenn ich das richtig verstanden habe.
    Auf dem Roter selber habe ich DHCP ausgestellt da ja Chilli die IP verteilen soll woran es aber schon bei mir hapert die Tests die oben beschrieben wurden hab ich aber auch alle genau so. Die Weiterleitung auf die Anmeldeseite schein auch nicht zu funktionieren.

    Danke im Vorraus für jeden Tip
    fmg Warlock

  9. lumapu

    Hallo,

    erstmal vielen Dank für das echt gelungene Tutorial! Bei läuft alles soweit super, auch DNS klappt nachdem ich die DNS ip auf 208.67.222.222 geändert habe und danach wieder auf 192.168.1.1 gändert habe.

    Gibt es inzwischen einen Ansatz für logging? Vielleicht mit syslogd und auf dem Ubuntu-Server mit syslogd-ng als Server?
    Ich bin gerade dabei damit rumzuprobieren, leider bisher noch kein Erfolg.
    bwlog hat leider auch nicht zu Erfolg geführt.

    lg,
    lumapu

  10. Christian

    Was möchtest du denn loggen? Der radius server speichert doch schon alles was du brauchst… anmelde zeitpunkt des tickets etc.

    Auf dem Syslog würde du noch System Meldungen bekommen.

  11. lumapu

    Ich würde gerne alle URLs loggen, die angesurft wurden. Bisher habe ich einen IPCop am laufen, dort macht es die Firewall. Den IPCop würde ich mir aber gerne sparen und irgendwie von meinem WRT54GL die Ethernetschnittstelle des WAN – Ports überwachen.
    Ich hätte gerne eine Auflistung der IP-Adressen (oder noch besser der Ticketname) und deren angesurften URLs. (Vielleicht auch noch verwendetes Protokol (TCP, UDP, …) und Ports).
    Am besten sollte dieses log in der MYSQL – DB landen, sodass ich keine Speicherplatzprobleme auf dem DD-WRT bekomme und die Verwaltung übersichtlich bleibt.

    Ist sowas in dem Radius oder Chillispot schon integriert und ich habe es nicht gefunden? Das wäre natürlich am einfachsten. Die Tabelle ‚radacct‘ reicht mir nicht aus.

  12. Christian

    Ich glaube das gibt es so nicht. Auf dem IPcop. könntest du das ticket ja auch gar nicht zuordnen, oder? Bzw. es würde gehen, wenn der cop die Adressen verteilt.

    Das ganze ist blos nicht legal was du vor hast (: Datenschutz blabla… Ich hab da auch lange nach gesucht. Generell wenn eine Anzeige ins Haus kommt, muss man den gar nicht viel nachweisen.Nur welches Ticket zu der Zeit online war und man alles „gegeben“ hat um sein Netz zu sichern.. ist etwas zwiespaltig.

  13. lumapu

    Hi,

    danke für deine Antwort, da muss ich dann nochmal recherchieren. Ist das mit dem Datenschutz auch dann wirksam, wenn ich ausdrücklich darauf hinweise?

    Ich kenne das von einem Campingplatz in Italien, dort muss alles gespeichert werden, und man hat auch nur Zugriff aufs Internet wenn man diesen Datenschutzbestimmungen zustimmt.
    Dort wird alles mit einem IPCop geloggt. Dieser muss allerdings auf einem weiteren Rechner eingerichtet werden, da der IPCop zwischen dem Grünen und dem Roten Interface hängen muss (zwischen LAN und Internet), um auszuschließen, dass er mit Tricks umgangen wird.

    Momentan wird mit einem IPCop geloggt, allerdings ist das sehr umständlich weil alles über einen Proxy auf dem IPCop geleitet wird … ich hoffe ich komme bald davon los.

    Muss ich mein WLan dann verschlüsseln? Ich will es den Gästen halt möglichst einfach machen (ich baue das ganze für eine Pension auf), aber trotzdem rechtliche Sicherheit gewährleisten, man weiß ja nie was da so getrieben wird.

    lg, lumapu

  14. Christian

    Ich lasse es immer unverschlüsselt! Hast ja das captive. Das WLAN ist zwar dann nicht das sicherste für email etc., aber da müssen sich die Gäste selber drum kümmern. In der Regel snifft da ja auch nicht jemand 24/7 (:

    Ich glaube der Hinweis bringt dir nichts, aber ich lasse mich gerne belehren. Wenn du eine Lösung zum logging hast, dann poste die noch bitte.

    Ich verlasse mich generell immer auf das Logging vom radius. Man kann ja mitschreiben, wer welches Ticket bekommen hat. Ist eine schwierige Sache, aber ich glaube mit dem Gesetz wird man keine Probleme bekommen.

    Die Probleme kommen eher wenn du erzählst das du privaten Internetverkehr loggst

  15. Christian

    Moin,

    kann mir jemand sagen, warum das WLAN am wrt54gl sehr langsam wird, wenn ich den hotspot einschalte? Kann man irgendwo die Geschwindigkeit limitieren?

    gruß

  16. Christian

    Ich habe den Chilli grade mal auf die lan ports umgestellt. Da ist es auch langsam…

  17. warlock2

    Hallo nochmal kann mir auch jemand einen Tip geben was ich machen soll oder ist das so nicht machbar wie es geschildert habe.
    Vieleicht braucht ihr auch mehr Informationen, gebe gerne Auskunft.

    mfg WarlocK

  18. lumapu

    @warlock2

    also ich habe beim DD-WRT unter „Setup->Basic Setup“ bei „Network Address Server Settings (DHCP)“ den DHCP – Type auf „DHCP Forwarder“ eingestellt.
    Zudem habe ich bei „Services->Hotspot“ die „Redirect-URL“ nicht mit http:// anfangen lassen sondern auf https:// gestellt. Alle anderen Funktionen sind auf Werkstandard eingestellt.

    Was ich nicht verstanden habe:
    Du hast einen DD-WRT der mit dem Firmennetzwerk verbunden ist – richtig? Wenn jetzt keiner über das WLAN auf das Firmennetzwerk zugreifen können soll, muss du den IP-Adressbereich / die IP-Adressen des Firmennetzwerks im DD-WRT auf die Blacklist setzen, sollte über Firewalleinstellungen gehen.

    ich hoffe ich konnte damit helfen
    lg lumapu

  19. warlock2

    Teste ich gleich mal aus danke
    Erst ist mir wichtig, dass ich überhaupt Verbindung aufbauen kann, der Rest wird sich dann nach und nach ergeben hoffe ich 🙂

    Das mit dem Firmennetzwerk ist auch so ne Sache dir mir nicht passt, da das auch ein ziemlich sicheres Netz ist, ich aber sonst nicht ans Internet komme. Wenn es die Tage auch wieder nicht klappt, werde ich wohl alles mitnehmen und Zuhause mal austesten müssen.

    mfg WarlocK

  20. zero Beitragsautor

    Hi @all:

    erstmal sorry das ich nicht auf alle Beiträge antworten kann. Dies liegt zum einen daran, das Sachen schlecht nachzuvollziehen sind, wenn man gerade kein Setup zum Testen vor sich stehen hat, zweitens ist es etwas schwierig, da oft informationen fehlen, die man evtl. benötigt.

    Daher ein Vorschlag:
    Es ist wesentlich angenehmer und einfacher Fragen direkt in einem Chat auf den Grund zu gehen. Daher hab ich mir mal erlaubt einen Jabber-Chatraum einzurichten. Anleitungen zum Einrichten von Jabber auf eurem Computer (oder benutzen per Webchat) gibt es auf http://einfachjabber.de. Den Raum findet ihr unter xmpp://zeroathome.de@conference.einfachjabber.de.

    Mich selbst erreicht ihr ebenfalls per Jabber unter xmpp://ben@einfachjabber.de

    Wer weitere Ideen hat wie man die Support-Lage etwas verbessern könnte, bitte melden, bin für fast alles offen.

  21. Thomas

    Hallo alle,

    also ich habe es jetzt hinbekommen den Provider von Telekom nach Kabel Bw umzustellen. Das Problem bei Kabel BW ist das die IP Adressen und die DNS Adressen regelmässig wechseln. Deshalb ist die Konfiguration anderst als bei der Telekom (Standard 192.168.2.1)auto DHCP für WAN geht nur teilweise, aber wenn Ihr den DNS auf Google-DNS einrichtet mit der IP 8.8.8.8 funktionert es einwandfrei. Standardmässig hatte ich auch funktion-> aber ich habe WDS über 4 Etagen und 5 Router und das Problem war das der Proxy nicht aufgelöst werden konnte. Mit dem GoogleDNS 8.8.8.8 geht es jetzt
    mfG Thomas

  22. Christian

    Hallo,

    ich habe damals irgendwo einen Session Timeout eingestellt, kann mir jemand sagen wo das war ? (: Wenn jemand sich nicht ausloggt, dass er automatisch ausgeloggt wird…

    danke

  23. zero Beitragsautor

    @Christian: Das müsste der „Max-All-Session“ Eintrag in der Datenbank sein.

  24. Christian

    Danke für die schnelle Antwort! Ne, das meine ich nicht. Das war ein generelles Timeout in einer conf datei. Ich dachte zuerst es steht in der attrs, aber das war es nicht.

    Gruß

  25. Christian

    Hi zero,

    vlt. weisst du das! In vielen Konfiguration im Netz kann mal als DHCP-Interface LAN & WLAN auswählen. Das scheint es in einer neueren (unseren) Version wohl nicht mehr zu geben. Das wird wie es aussieht für WDS gebraucht. Hänge hier schon über 15 Stunden um zu Repeaten, ohne Chilli gehts und mit nur Probleme. Gibt viele Postings drüber, aber es kommt nichts vernünftiges bei raus.

    Welches ist denn LAN & WLAN

    Gruß

  26. Christian

    Nun läuft alles perfekt bei mir! (:

    nasportid <— kann mir jemand sagen wofür das in der DB ist? Da stehen nummer von 1-10.

    Ich habe die clients.conf so eingestellt, dass alle IPs erlaubt sind. Weil der server im Internet steht.

    ———————————————————————

    Für das WDS Problem muss man eine Brücke erstellen "br1" eth1 hinzufügen. Dann diese Brück als DHCP Interface im chillispot auswählen.

    Wenn man ein wds einträgt kommt der in die Brücke "br0".

    Das habe ich als startup script geändert.

    nvram set rc_startup="
    brctl delif br0 wds0.1
    brctl delif br0 wds0.2
    brctl delif br0 wds0.3
    brctl delif br0 wds0.4
    brctl addif br1 wds0.1
    brctl addif br1 wds0.2
    brctl addif br1 wds0.3
    brctl addif br1 wds0.4
    "

    Den Uni Repeater Modus braucht ihr gar nicht versuchen (: Gibt von chillispot nur ip konflikte.

  27. Christian

    Mal eine ganz andere Frage! Muss man das UAM Secret und shared secret überhaupt geheim halten? FON macht es ja auch nicht (:

    Ich versteh den Sinn vom UAM Secret eh nicht so wirklich.

  28. lumapu

    danke für die Anleitung, wie man WDS richtig konfiguriert.

    Jetzt ist aber eine Frage aufgetreten: Wie kann ich feststellen, ob WDS funktioniert? Wenn ich die Router im Haus verteile (ich habe nur zwei, einer der Internet aufbaut und einen der das WLAN „repeated“) müsste doch die Empfangsleistung wenn ich in die Nähe eines Routers komme wieder ansteigen.
    Wie muss ich das DHCP einstellen, momentan ist es auf „Forwarder“ scheint aber nicht zu funktionieren.

    LG lumapu

  29. Leachim

    Hallo zusammen,
    Eure Anleitung ist wirklich gut geschrieben.
    Ubuntu läuft ja auf einem lokalen Rechner und damit auch die Datenbanken.
    Diese fressen doch einiges an schtrom und den möchte ich wenn möglich so weit wie möglich sparen.

    Ich habe im Internet auch bei meinem Provider einen Apache VServer laufen. (leider kein gemannagter Server)
    Kann ich Freeradius (RADIUS-Server) auch dort hin Kopieren? , werscheinlich nicht.

    Hat jemend schon Erfahrungen damit gesammelt?
    Mein Problem ist, das ich nur einen FTP Zugang zum Server habe und ich keine Linux Pakete installieren kann.

    Gibt es eine andere Möglichkeit?
    HAt jemand schon eine Erfahrung mit einem Synologie server gemacht um dies darauf zu installieren?
    Hat jemand die Mögchkeit Freeradius für einige User zur Verfügung zu stellen?

    Gruß

    leachim

  30. AplasIT

    @Leachim

    Es gibt glaube die Möglichkeit freeradius auf openwrt zu installieren. Die SQL Datenbank könnte dann ja auf deinem Server laufen. Ohne root ist leider keine Installation möglich.
    Um wie viele Hotspots geht es?

  31. Volker

    Hallo,

    Schönes Tutorial, ich konnte damit auch trotz meiner eher rudimentären Linuxkenntnisse einen Hotspot aufbauen.

    Ich habe aber noch ein Problem: Am WLAN Client kann sich ein Gast (auch ohne Anmeldung an Chilliport) via Webbrowser an den Server auf dem Radius läuft anmelden.

    Da ich auf diesem Server den „Dialupadmin“ für die Benutzerverwaltung installiert habe, kann also jeder Gast diesen über http://IP-Adresse-Des-Servers/'Dialupadmin/ aufrufen. Der Gast sollte meines Erachtens nur auf das CGI-Script zugreifen können, also http://IP-Adresse-Des-Servers/hotspotlogin.cgi

    Meine Frage lautet also, wie kann ich den Zugriff auf nur dieses Script einschränken.
    Währe schön wenn jemand helfen könnte.

    Gruß
    Volker

  32. Chris

    Ich hab mal eine Frage ich hab das nun mal mit einem Debian 6 und Apache2 mit ispCP Omega gemacht bloß gibt es immer einen 500 Error doch die datei hat alle rechte. Hat einer ähnliche erfahrungen gemacht und kann mir helfen?

  33. Sandra

    Schau in die Logdateien, welcher Fehler protokolliert wird. Männer ;o)

  34. Andreas

    Also ich habe das ganze nachgebaut mit einem Linksys-Router und einem Ubuntu-Server. Jedoch habe ich das gleiche Problem wie Sasha und Marco (konntet ihr das Lösen??).

    Der WLAN-Client bekommt eine IP-Adresse, aber ich werde nicht weitergeleitet zur Login-Seite. Ich habe auch versucht IP-Adresse verteilen zu lassen, die im gleichen Subnetz sind, wie der Server. Pingen lässt sich so aber weder vom Server aus der Client, noch der Server vom Client aus (auch nicht der Router).

    Ich verzweifel noch…

    DD-WRT habe ich in der Version 2.4-SP2 installiert, Ubuntu ist in der Serverversion 11.10 installiert.

    Vielleicht kann mir ja jemand helfen, danke!

  35. lumapu

    @Andreas: also ich habe jetzt das ganze schon mindestens 5 Mal nachgebaut und es hat jedes Mal geklappt, allerdings habe ich ein paar Abänderungen:
    – die Redirekt-URL habe ich auf http://192.168.1.254/cgi-bin/hotspotlogin.cgi gändert
    – SSL deaktiviert (sudo a2dismod ssl, sudo a2dissite default-ssl, und in der hotspotlogin den Teil mit HTTPS auskommentiert.)
    – die DNS IP habe ich auf die 8.8.8.8 geändert
    – DHCP ganz normal angelassen im DD-WRT und bei Services->Hotspot->Chillispot „Separate Wifi from LAN“ aktiviert

    dann alles neustarten (nur zur Sicherheit), zuerst den Rechner, wenn der da ist schalte ich den DD-WRT ein.

    Wichtig war, dass man die IP-Adressen bei Chillispot nicht anpasst, sondern alles nach dieser Anleitung macht. Als Client solltest du dann eine IP bekommen die ungefähr diese sein dürfte: 192.168.182.1 oder 192.168.182.2

    Als Server habe ich schon die verschiendsten Versionen verwendet, zuletzt habe ich erfolgreich 10.04 LTS verwendet. Bei DD-WRT habe ich einen WRT54GL mit der aktuellsten Firmware.

    viel Erfolg!

    ——————————————————————————-

    Jetzt habe ich auch noch eine Frage:
    Ich will mein WLAN erweitern, WDS habe ich bis heute noch nicht erfolgreich hinbekommen, daher habe ich mir jetzt einen zweiten WRT54GL besorgt. Ich habe irgendwo gelesen (ich findes es aber nicht mehr), dass man den zweiten einfach identisch mit dem ersten einrichtet und dann sollten beide mit dem gleichen Radiusserver arbeiten können.

    also folgender Aufbau:

    DD-WRT1: baut Internet über PPPoE auf, ist über einen LAN Port mit dem Radius verbunden, Chillispot steht auf Separate Wifi from LAN, DHCP von DD-WRT ist aktiv

    DD-WRT2: andere IP (192.168.1.2), Internet über Autodedect DHCP, anderer WLAN name, nur ein Kabel von LAN-Port zu LAN-Port von DD-WRT1, NAS id „captive-portal2“ sonst identisch zu DD-WRT1

    beide DD-WRTs als client in die clients.conf eingetragen.

    Wenn ich jetzt mit dem WLAN von DD-WRT2 konekte, dann kann ich ohne Anmeldung ins Netz. Kann aber alle anderen Devices anpingen.

    Danke,
    lumapu

  36. AIT

    Steht der DD-WRT2 auch auf „Separate Wifi from LAN“ ?
    Du solltest bei deinem zweiten dd-wrt in den wan gehen, also von LAN (DD-WRT1) in WAN (DD-WRT2)

    Ich kann dir ein Backup fertig machen, in der du definitiv WDS betreiben kannst.
    Du musst nur das WDS interface nach dem erstellen von br0 löschen. Danach erstellst du eine neue Brücke und fügst eth1 + WDS interface hinzu. Diese Brücke ordnest du dann als interface deinem Chillispot zu.

    Universal Repeater funktioniert nicht mit Chillispot.

  37. Andreas

    Hallo lumapu!

    Danke für deine Antwort, ich werde das dann mal probieren.

    Allerdings, habe ich alles bis auf die SSL geschichte so gemacht, wie in der Anleitung und zig Dinge getestet. Was mich etwas verwirrt, ist die Tatsache, dass ich vom WLAN-Client nicht pingen kann, also weder zum Router, noch zum Server….

    Aber ich werde es mal testen 🙂

  38. lumapu

    Hi AIT,

    das muss ich mal ausprobieren, allerdings meine ich diese Konfiguration schon getestet zu haben (in WAN von DD-WRT2). Ich habe „Separate Wifi from LAN“ aktiviert im WRT2

    wäre nett wenn du mir ein WDS Backup schicken könntest, dann kann ich einfach mal durchschauen. Email ist einfach irgendwas vorm @ an die mit meinem Namen verlinkte Domain.

    Lieben Gruß,
    lumapu

  39. Andreas

    Leute ich habs hinbekommen.
    Mein Problem lag in der Konfiguration des Netzwerkes. Ich bin mit dem DD-WRT nämlich hinter einem Speedport, der wiederum ins Internet geht.

    Ich musste eine Route zum Subnetz des Speedports anlegen und hab den DD-WRT als Gateway laufen. Jetzt geht es 🙂

  40. Sterkel

    Hallo,
    Danke für die Superanleitung!
    Hier meine Anmerkungen, vielleicht nützt es jemandem.
    Einen Router haben wir schon, also muss der DD-WRT-Accesspoint als Client im Netz laufen. Der bekommt per DHCP eine feste IP zugewiesen. Das Netzwerk wird dann am WAN-Port angesteckt.
    Das interne LAN sollte man also auf ein anderes Netz konfigurieren und Konfiguration/SSH per WAN zulassen (erst dann umstecken!).
    SSL habe ich auch rauskommentiert, den Gästen auch noch erklären dass sie ein Zertifikat akzeptieren sollen nervt auf Dauer.
    Zum Schutz es internen Netzes habe ich ein paar Firewallrules eingebaut:

    # Alles ins interne Netz verbieten .66 ist das Chilli-Netz .1 das interne
    iptables -I FORWARD -s 192.168.66.0/24 -d 192.168.1.0/24 -j REJECT
    # Loginserver zulassen HTTP und HTTPS
    iptables -I FORWARD -p tcp -s 192.168.66.0/24 -d 192.168.1.117 –dport 80 -j ACCEPT
    iptables -I FORWARD -p tcp -s 192.168.66.0/24 -d 192.168.1.117 –dport 443 -j ACCEPT
    # Zugriffe vom Chilli-WLAN auf den AP verbieten
    iptables -I INPUT -s 192.168.66.0/24 -d gaesteaccesspoint -j REJECT

    Achtung! Probiert die Firewall-Rules erstmal auf der SSH-Konsole aus! Dann ist bei einer Fehlconfig nach einem kurzen Stromaus-Reboot alles wieder gut, erst dann in die Konfig eintragen.
    Dies ist alles sicherlich noch nicht der Weisheit letzter Schluß aber ein hoffentlich brauchbarer Anfang.

  41. Pingback: WLAN im Ferienhaus - Paules-PC-Forum.de

  42. Pingback: WLAN Hotspot mit OpenSource-Mitteln | Imrazor's Blog

  43. Andreas

    Hallo Leute,

    nachdem ich die Probleme alle beseitigt hatte und der Hotspot soweit einsatzfähig ist, wurde von mir und einem Kollegen eine Benutzerverwaltung in PHP/MySQL und Co implementiert.

    Wer Interesse hat, sollte dafür auf meiner Seite vorbeischauen, dort gibt es eine Anleitung in Anlehnung an diesen Beitrag hier (natürlich habe ich auf diese tolle Anleitung hier verwiesen). Inklusive aller PHP-Dateien und den Codes.

    http://www.imrazor.de/wordpress/?p=29

  44. Bierbauch

    Hallo all,

    ich brauche hilfe. habe nun alles so wie in der Anleitung beschrieben eingerichtet.
    Habe nun 2 Probleme:

    1. Werde nur umgeleitet auf die Loginpage wenn ich eine IP eingebe. Also klappt der DNS nicht

    2. Ich kann mich auch der Loginseite nicht anmelden. Nach dem eingeben der Userdaten dauert es etwa 30 sekunden und dann bin ich wieder an der anmelde Maske. Im Freeradius log sehe ich:

    root@ubuntu:~# Thu Apr 12 21:50:00 2012 : Error: Ignoring request to authentication address * port 1812 from unknown client 192.168.0.18 port 2051
    Thu Apr 12 21:50:03 2012 : Error: Ignoring request to authentication address * port 1812 from unknown client 192.168.0.18 port 2051

    Wo ist mein Fehler? Habe alles nochmal überprüft, aber sehe es nicht.
    Vielen Dank

  45. Imrazor

    Der Client ist dem freeradius nicht bekannt, von dem die Anfrage kommt.
    Das heisst, der Accesspoint hat anscheinend die IP 192.168.0.18 und du hast aber eine andere in der clients.conf von freeradius stehen.

    Zumindest hatte ich das Problem in dieser Form 😉

  46. Pingback: WLAN-Planungen in der Schule « Tech-Talk « riecken.de

Kommentare sind geschlossen.