Ik ben de laatste paar dagen eens bezig geweest met een hotspot met Captive Portal op OpenWRT Attitude Adjustment 12.09. Ik had dat gezien bij m'n zwager (daar zit 't standaard in z'n Cisco router) en dat moest ik gewoon hebben
Voor de geïnteresseerden een klein stappenplan.
De onderstaande stappen zijn allemaal beschreven vanuit de interface (tenzij anders aangegeven). Het is natuurlijk ook mogelijk dit vanuit een SSH sessie te doen.
Om een captive portal aan te kunnen maken, maak ik gebruik van de package
nodogsplash. Deze kun je alvast installeren, maar ik zou 'm nog niet starten.
Allereerst maak je een nieuwe firewallzone aan. Ik heb deze ingesteld zoals beschreven op [urlhttp://wiki.openwrt.org/doc/recipes/guest-wlan-webinterface]OpenWRT Wiki pagina[/url], maar daar ben je natuurlijk vrij in.
Daarna maak je een nieuw WLAN station aan. Uiteraard vul je hier een ESSID in. Kanaal heb ik hetzelfde gehouden. Stel geen security in. Dat kan natuurlijk wel, maar dan streef je het doel van een captive portal voorbij. Disable dit station, anders heb je een onbeveiligd netwerk waar iedereen gebruik van kan maken!
Daarna moet je een nieuwe interface aanmaken met Static IP als protocol. Geef bij het aanmaken de zojuist aangemaakte WLAN als interface op en sla de nieuwe interface op.
Geef deze interface een IP in (bij voorkeur) een ander subnet als je normale WLAN/LAN. Mijn LAN is bijvoorbeeld 172.16.0.0/24, m'n hotspot 172.16.1.0/24. Maak ook meteen een nieuwe instantie van de DHCP server aan voor deze interface.
Onder tab Firewall selecteer je de zojuist aangemaakte firewallzone.
Nu wordt het tijd om nodogsplash te gaan configureren. Dit gebeurt vanuit een SSH sessie. Dus open een SSH sessie.
Indien je het nog niet gedaan hebt, installeer nodogsplash:
code:
1
2
| opkg update
opkg install nodogsplash |
Vervolgens moeten we weten welke interface we moeten gaan gebruiken. Hoewel we in de webinterface een naam hebben opgegeven voor het nieuwe Wifi station en de interface, wijken deze waarschijnlijk af van de echte interfacenaam. Dus even met ifconfig kijken wat de juiste naam is.
Of in de webinterface, onder Wifi, edit het nieuwe station. De juiste naam staat dan tussen haakjes achter in de header van de pagina.
Nu gaan we de configuratie van nodogsplash aanpassen. De configfile is /etc/nodogsplash/nodogsplash.conf
Deze config file is er uitgebreid voorzien van commentaar. Loop dus eens door de opties heen om te kijken wat je echt wil. Een aantal zaken zal ik uitlichten.
Vrijwel bovenaan de file moet je de GatewayInterface opgeven. Dit is de interface die nodogsplash zal gebruiken. Vul hier de interface in die we eerder hebben gevonden via ifconfig.
Het is belangrijk om de gebruikers van de hotspot niet teveel rechten te geven. Hiervoor is het stukje FirewallRuleset authenticated-users. Hierin kun je opgeven wel subnetten een geauthenticeerde gebruiker niet mag benaderen. Ook kun je opgeven welke poorten een geauthenticeerde gebruiker kan gebruiken. Standaard staan poort 53 (DNS), 80, 443 en 22 open, maar dat is in dit gedeelte dus naar believen aan te passen.
In de FirewallRuleset users-to-router kun je aangeven welke poorten richting de router open staan voor geauthenticeerde gebruikers. Standaard staat 53 (DNS) en 67 (DHCP) open, maar ook 22, 80 een 443. Die laatste 3 poorten zorgen ervoor dat gebruikers van je hotspot via zowel web als SSH/telnet toegang kunnen krijgen tot de router. Persoonlijk vond ik dat niet zo'n prettig idee, dus ik heb die laatste drie poorten dichtgezet door ze uit te commentariëren.
Mocht je een andere naam willen geven aan je portal, dan kun je dat doen door de GatewayName aan te passen.
Dan de beveiliging. Er kan voor een aantal opties gekozen worden: alleen wachtwoord of usernaam/wachtwoord. Ook kun je toegang o.b.v. MAC adres toelaten of juist blokkeren. Hoe dit allemaal in te stellen valt, staat uitgebreid beschreven in de config file.
Ook de splashpagina kun je helemaal aanpassen. Deze is te vinden in /etc/nodogsplash/htdocs/splash.html. Een voorbeeld van een splashpagina voor alleen password authenticatie:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <html>
<head>
<title>$gatewayname Entry</title>
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
</head>
<body bgcolor="#DDDDDD" text="#000000">
<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tr>
<td align=center>
<h2>$gatewayname</h2>
</td>
</tr>
<tr>
<td align=center height="120">
<form method='POST' action='$authaction'>
<input type='hidden' name='tok' value='$tok'>
<input type='hidden' name='redir' value='$redir'>
password: <input type='password' name='nodogpass' value='' size=12> <br>
<input type='submit' value='Enter'>
</form>
</td>
</tr>
</table>
</body>
</html> |
Na het aanpassen alles opslaan. Vervolgens eerst het WiFi station enablen en vervolgens nodogsplash starten. En natuurlijk aangeven dat ie automatisch moet starten bij opstarten van de router.
code:
1
2
| /etc/init.d/nodogsplash start
/etc/init.d/nodogsplash enable |
Gebruikte bronnen:
http://wiki-robin.meshroo...aptive_Portal/NoDogSplash
http://wiki.openwrt.org/d...eless.hotspot.nodogsplash
Toevoeging 10-07-2013:
Sinds Attitude Adjustment zit IMQ niet meer in de OpenWRT. NoDogSplash gebruikt dit voor traffic control, maar kan ook perfect zonder werken. Traffic control kun je dan laten doen door b.v. QoS of wshaper.
Om NoDogSplash toch te laten werken op AA of trunk versies, dien je 3 regels uit te commentarieren in /etc/init.d/nodogsplash. Het gaat om de laatste 3 regels van /etc/init.d/nodogsplash en het staat er zelfs als commentaar in:
code:
1
2
3
4
| # you can comment out the following 3 lines:
#do_module_tests "imq" "numdevs=2"
#do_module_tests "ipt_IMQ"
#do_module_tests "sch_htb" |
[
Voor 6% gewijzigd door
RvL op 10-07-2013 22:14
. Reden: Firewall aangepast ]