DHCP-Splash

Der DHCP-Splash ist ein Captive Portal, mit dem Gästen im Freifunknetz beim ersten Zugriff aufs Internet eine Begrüssungsseite angezeit werden kann.

Splash kann ausserdem die Bandbreite im Up- und Download pro Nutzer limitieren. Zudem ist es möglich, einzelne Clients dauerhaft zu erlauben (Whitelist) oder dauerhaft zu sperren (Blacklist).

Gründe Splash einzusetzen sind

  • Nutzer auf Freifunk aufmerksam machen und zum mitmachen auffordern
  • Nutzer über Risiken aufklären (Netzwerk ist unverschlüsselt)
  • Nutzungsbedingungen anzeigen und den Nutzer akzeptieren lassen. “Mach nix verbotenes”. Dies ist in rechtlicher Hinsicht sinnvoll.
  • Indem man durch den Splash eine regelmässige Zwangstrennung hat wird das Freifunknetz für Filesharer eher uninteressant.
  • Hinweis auf den Knotenbetreiber
  • Lokalitätsbezogene Informationen anzeigen
  • Manche nennen den Splash auch “Nervseite”. Indem reine Nutzer mit dem Splash genervt werden, sollen sie ermutigt werden, sich aktiv am Netz zu beteiligen.

Gegen einen Einsatz von Splash spricht

  • Nutzer werden genervt. Man kann dies aber auch wie oben als Vorteil sehen.
  • Aus technischen Gründen funktioniert nur eine Umleitung von HTTP-Requests. Daher können sowohl HTTPS als auch alle anderen Protokolle nicht aufs Internet zugreifen, solange der Splash nicht akzeptiert wurde indem zumindest einmal eine HTTP-Seite aufgerufen wird.

Warnung

Splash darf nicht andere aktive Teilnehmer/Knoten im Freifunknetz behindern. Daher Splash nur auf Schnittstellen betreiben, die nur für Clients (Gäste) benutzt werden.

Splash Status anzeigen

Statusinformationen zum Splash (verbundene Clients, Blacklist, Whitelist) können entweder in LuCi oder auf der Shell angezeigt werden.

Splash Status in LuCI anzeigen

Gehe zu Administration ‣ Status ‣ Client-Splash. Es werden alle derzeit verbundenen Clients angezeigt:

Splash Status in LuCI (Admin)

Richtlinie zeigt den aktuellen Status des Clients. Dieser kann dort auch geändert werden.

Richtlinie Beschreibung
erlaubt Client ist auf der Whitelist.
gesplasht Client hat den Splash akzeptiert und ist freigeschalten
vorübergehend geblockt Lease des Clients entfernen. Er kann sich jedoch erneut freischalten.
gesperrt Client dauerhaft auf die Blacklist setzen. Er kann den Splash dann nicht mehr akzeptieren und bekommt stattdessen eine Meldung angezeit, dass er geblockt wurde.

Hinweis

Statusinformationen zu Splash-Clients sind in teilweise anonymisierter Form auch im öffentlichen Teil des Webinterfaces sichtbar: Freifunk ‣ Status ‣ Splash.

Hinweis

Mit dem Paket collectd-mod-splash-leases können Grafiken über verbundene Clients erstellt werden.

Splash Status auf der Shell anzeigen

Informationen zu verbundenen Clients erhält man auf der Shell mit:

luci-splash list

Allgemeine Einstellungen für Splash

Hier können die Freigabezeit, Up-/Downloadlimit und ein Weiterleitungsziel eingerichtet werden.

Option LuCI Option Shell Beschreibung
Freigabezeit leasetime Die Freigabezeit in Stunden. So lange kann der Gast das Netz benutzen, bevor er den Splash erneut akzeptieren muss.
Ziel für Weiterleitung redirect_url Auf diese Seite wird der Nutzer nach Akzeptieren des Splashs weitergeleitet. Wird die Option leer gelassen, dann wird der Nutzer direkt auf die Seite weitergeleitet, auf die er ursprünglich zugreifen wollte.
Upload-Begrenzung limit_up Upload-Limit in KByte pro Sekunde. Die Limitierung gilt pro Client. Ein Wert von 0 deaktiviert die Begrenzung. Clients die auf der Whitelist stehen sind von der Begrenzung ausgenommen.
Download-Begrenzung limit_up Download-Limit in KByte pro Sekunde. Die Limitierung gilt pro Client. Ein Wert von 0 deaktiviert die Begrenzung. Clients die auf der Whitelist stehen sind von der Begrenzung ausgenommen.

In LuCI

Öffne Administration ‣ Dienste ‣ Client-Splash. Ganz oben siehst du gleich die allgemeinen Einstellungen für Splash:

Allgemeine Einstellungen von LuCI Splash

Auf der Shell

Um diese allgemeinen Einstellungen auf der Shell vorzunehmen kann entweder /etc/config/luci_splash direkt bearbeitet werden:

config core 'general'
     option leasetime '1'
     option limit_up '20'
     option limit_down '50'
     option redirect_url 'http://www.freifunk.net'

oder die selben Einstellungen mit uci gemacht werden:

uci set luci_splash.general.leasetime=1
uci set luci_splash.general.limit_up=20
uci set luci_splash.general.limit_down=50
uci set luci_splash.general.redirect_url='http://www.freifunk.net'
uci commit luci_splash

Anchliessend muss Splash mit:

/etc/init.d/luci_splash

neu gestartet werden damit die Änderungen wirksam werden.

Interfaces zum Splash hinzufügen

Um ein Interface zum Splash hinzuzufügen (damit also Clients über dieses Interface den Splash akzeptieren müssen), muss der Name des Netzwerks sowie die Firewallzone zu der das Netzwerk gehört bekannt sein.

Interface unter LuCI hinzufügen

Öffne Administration ‣ Dienste ‣ Client-Splash. In der Interface-Sektion sieht man bereits Konfigurierte Schnittstellen:

Interface Einstellungen von LuCI Splash

Durch einen Klick auf Hinzufügen können weitere Schnittstellen hinzugefügt werden.

Interface auf der Shell hinzufügen

Interfaces die Splash benutzen soll werden konfigguriert in /etc/config/luci_splash. Um ein neues Interface zum Splash hinzuzufügen kann dort direkt am Ende eine neue interface-Sektion eingefügt werden:

config iface 'wireless0custom'
      option network 'wireless0custom'
      option zone 'freifunk'

Alternativ kann dieser Eintrag auch mit uci erstellt werden:

uci set luci_splash.wireless0custom=iface
uci set luci_splash.wireless0custom.network=wireless0custom
uci set luci_splash.wireless0custom.zone=freifunk
uci commit luci_splash

In beiden Fällen muss anschliessend der Splash mit /etc/init.d/luci_splash restart neu gestartet werden, damit die Änderungen wirksam werden.

Whitelist - Clients dauerhaft erlauben

Clients deren MAC-Adresse auf der Whitelist steht werden dauerhaft freigeschaltet, d.h. sie müssen nicht den Splash akzeptieren bevor sie ins Internet dürfen. Ausserdem unterliegen sie nicht dem Bandbreitenlimit für normale Clients falls die Bandbreite für diese limitiert wird (siehe Allgemeine Einstellungen für Splash).

Um Clients zur Whitelist hinzuzufügen wird deren MAC-Adresse benötigt. Clients die verbunden sind können auch anhand ihrer IP-Adresse zur Whitelist hinzugefügt werden.

Clients whitelisten in LuCI

Clients können auf der Statusseite von Splash (siehe Splash Status in LuCI anzeigen gewhitelistet werden.

Alternativ ist dies auch möglich über die Splash Einstellungen unter Administration ‣ Dienste ‣ Client-Splash.

Clients whitelisten in LuCI

Clients whitelisten auf der Shell

Um Clients auf der Shell auf die Whitelist zu setzen:

luci-splash whitelist 00:11:22:33:44:55

Ist der Client verbunden und die IP-Adresse bekannt (siehe Splash Status auf der Shell anzeigen) dann kann der Client auch anhand der IP freigeschalten werden:

luci-splash whitelist 1.2.3.4

Blacklist - Clients dauerhaft sperren

Clients deren MAC-Adresse auf der Blacklist steht werden dauerhaft gesperrt, d.h. sie können den Splash nicht mehr akzeptieren und bekommen stattdessen eine Hinweisseite, dass sie geblockt wurden.

Um Clients zur Blacklist hinzuzufügen wird deren MAC-Adresse benötigt. Clients die verbunden sind können auch anhand ihrer IP-Adresse zur Blacklist hinzugefügt werden.

Clients blacklisten in LuCI

Clients können auf der Statusseite von Splash (siehe Splash Status in LuCI anzeigen geblacklistet werden.

Alternativ ist dies auch möglich über die Splash Einstellungen unter Administration ‣ Dienste ‣ Client-Splash.

Clients blacklisten in LuCI

Clients blacklisten auf der Shell

Um Clients auf der Shell auf die Blacklist zu setzen:

luci-splash blacklist 00:11:22:33:44:55

Ist der Client verbunden und die IP-Adresse bekannt (siehe Splash Status auf der Shell anzeigen) dann kann der Client auch anhand der IP gesperrt werden:

luci-splash blacklist 1.2.3.4

Bestimmte Ziele allgemein erlauben

Einzelne Zielrechner bzw -netzwerke können generell erlaubt werden. Verbindungen zu diesen sind immer möglich, es muss nicht zuerst der Splash erlaubt werden.

Hinweis

Zugriff auf die im Communityprofil definierte Community-Homepage (siehe Community Profile) wird automatisch erlaubt. Der Server, der diese Webseite bereitstellt muss hier also nicht extra eingetragen werden.

In LuCI

Gehe zu Administration ‣ Dienste ‣ Client-Splash. Dort kannst du unter Erlaubte Rechner/Netzwerke durch einen Klick auf Hinzufügen Ziel-Netzwerke hinzufügen, die vom Splashvorgang ausgenommen sein sollen.

Zielrechner und -netzwerke generell erlauben in LuCI

Soll nur ein einzelnen Zielrechner erlaubt werden, dann reicht es, dessen IP-Adresse anzugeben. Um ein ganzes Ziel-Netzwerk zu erlauben ist zusätzlich die Angabe einer Netzmaske in der dotted decimal Schreibweise (z.B. 255.255.255.0) notwendig.

Speichere deine Änderungen mit Speichern & Anwenden.

Auf der Shell

Die Einstellungen sind in der Datei /etc/config/luci_splash gespeichert. Um ein weiteres Ziel-Netzwerk, wir wollen es hier allowednet nennen, zu erlauben, füge in diese Datei eine neue Sektion ein:

config subnet 'allowednet'
      option ipaddr '1.2.3.4'
      option netmask '255.255.255.255'

Alternativ geht das auch mit uci:

uci set luci_splash.allowednet=subnet
uci set luci_splash.allowednet.ipaddr=1.2.3.4
uci set luci_splash.allowednet.netmask=255.255.255.255

In beiden Fällen muss anschliessend der Splash mit /etc/init.d/luci_splash restart neu gestartet werden, damit die Änderungen wirksam werden.

Splash-Seite individualisieren

Es ist möglich, die Splash-Seite, die Benutzern angezeigt wird nach eigenen Vorstellungen anzupassen. So können z.B. ein prominenterer Hinweis auf den Betreiber oder Sponsor des Freifunkknotens eingefügt oder lokalitätsbezogene Informationen angezeigt werden.

Es kann entweder die komplette Splash-Seite ersetzt werden oder nur eigener Text in die Standardseite eingefügt werden.

Die Texte sollten in gültigem HTML geschrieben sein. Es können einige Marker verwendet werden, die bei der Ausgabe ersetzt werden:

Marker Beschreibung
###COMMUNITY### Name der Community
###COMMUNITY_URL### URL zur Webseite der Community
###CONTACTURL### URL zur lokalen Seite mit Kontaktinformationen
###LEASETIME### Freigabezeit
###LIMIT### Hinweis auf UP- und Downloadlimitierung
###ACCEPT### Einbinden der Akzeptieren und Ablehnen Buttons

Splash Seite anpassen in LuCI

Die Splash-Seite kann im LuCI-Webinterface unter Administration ‣ Dienste ‣ Client-Splash ‣ Splash-Text angepasst werden.

Soll der komplette Text des Splash angepasst werden dann gib ihn im oberen Textfeld Bearbeiten des kompletten Splash-Textes ein. Es ist wichtig, den Marker ###ACCEPT### einzufügen damit die Buttons angezeigt werden können.

Willst du eigenen Text zum Splash hinzufügen dann benutze das untere Textfeld Einbinden von eigenem Text in die Default-Splashseite.

Splash Seite anpassen auf der Shell

Um den kompletten Text des Splash zu ersetzen bearbeite die Datei /usr/lib/luci-splash/splashtext.html und füge dort deinen eigenen Text (gültiges HTML) ein.

Um nur eigenen Text zusätzlich zum Standardtext des Splashs anzuzeigen bearbeite /usr/lib/luci-splash/splashtextinclude.html und füge dort deinen eigenen HTML-Text ein.

Splash dauerhaft deaktivieren

Auf der von Meshkit installierten Firmware wird Splash üblicherweise automatisch installiert und eingerichtet. Will man den Splash dauerhaft deaktivieren geht das mit:

/etc/init.d/luci-splash stop
/etc/init.d/luci-splash disable