Captive portal
DNS
Alcune indicazioni utili per la creazione di captive portal, queste indicazioni risultano utili soprattutto nella fase di startup della rete quando i link tra nodi non sono attivi.
Per catturare le richieste di utenti che si agganciano per qualsiasi motivo alla rete NinuxBo e dare disponibilita' di una pagina di bevenuto si puo' usare un captive portal, cioe' una sistema per redirigere tutte le richieste verso ad esempio una pagina web espicativa.
Ci sono vari modi per farlo ad esempio usando dnsmasq che e' il dhcp gia' presente in lime e che svolge anche le funzioni di dns si puo' creare una regola di risoluzione universale.
Qui facciamo il caso di una macchina collegata alla rete e che si occupa di risolvere i nomi per tutta la rete.
Basta aggiungere al file /etc/dnsmasq.conf la seguente riga
address=/#/10.51.xx.yy
e ricaricare dnsmasq
/etc/init.d/dnsmasq restart
Ora va fatta una modifica sugli access point lime in modo che vadano a chiedere alla nostra macchina dns come risolvere i nomi, per farlo basta modificare il file:
/etc/resolv.conf
La riga da modificare è
nameserver 127.0.0.1
e va modificata con l'ip della macchina con il dns
nameserver 10.51.x.x
oppure modificare
/etc/dnsmasq.d/lime-proto-anygw-10-ipv4.conf
aggiungendo
address=/#/10.51.xx.yy
verificare se la modifica ha avuto effetto
nslookup ninux.org nslookup wikipedia.it
dovrebbe arrivarci sempre come risposta l'inidirizzo ip del captive portal
il cancelletto e' usato come carattere jolly da dnsmasq (qualsiasi richiesta di risoluzione dei nomi) e 10.51.xx.yy e' l'indirizzo del captive portal (puo' essere l'antenna stessa oppure un altro pc sulla rete)
è usato in dnsmasq come carattere jolly è l'equivalente del carattere * in questo modo tutte le richieste che richiedono il dns vengono risolte con l'indirizzo del router. quindi chi cerca ad esempio http://www.wikipedia.org/ finsice su 10.51.xx.yy.
Esempio:
Un utente si aggancia alla rete NinuxBo e digita sul browser http://www.wikipedia.org/, il dns gli risponde che l'indirizzo ip di wikipedia e' 10.51.xx.yy (10.51.xx.yy e' l'indirizzo del captive portal) se sulla macchina e' presente un server web l'utente verra' rediretto sulla home page del captive portal che avra' una pagina di benvenuto/esplicativa.
Apache/Apache SSL
La cosa si complica un po' se l'utente digita http://www.wikipedia.org/pagina/, questo va comunque gestito nella configurazione del server web.
Prima di proseguire sulla configurazione del captive portal va precisato che questo mostra una copia di questo wiki quindi la home page da analizzare si troverà in http://10.51.x.y/mediawiki/index.php, ed è presente anche una cartella speedtest.
Nella cartella principale del webserver (apache), creare un file .htaccess con il seguente contenuto:
RewriteEngine On # Turn on the rewriting engine RewriteRule ^mediawiki/(.*)$ - [R,L] RewriteRule ^speedtest/(.*)$ - [R,L] RewriteRule ^(.*)$ http://10.51.0.12/mediawiki/ [R,L]
La prima riga attiva il modulo rewrite engine che analizza gli indirizzi richiesti al server e li modifica prima di mandarli in esecuzione.
Si passa all'analisi dell'indirizzo richiesto se l'indirizzo contiene la stringa mediawiki dopo l'ip richiesto, viene inoltrato l'url senza modifica al server web (questo va fatto anche per evitare loop sull'ultima riga, quindi le due righe devono essere aggiornate in modo speculare).
La terza riga inoltra la richiesta diretamente anche al server web se viene richiesto l'indirizzo http://10.51.x.y/speedtest/ in questo modo oltre al captive portal è possibile configurare altri servizi, ovviamente è consigliabile che l'indirizzo di questi servizi sia segnalato in home altrimenti è difficile trovarli.
L'ultima riga è quella che effettivamente redirige tutte le richieste verso la splash page reindirizzando tutto sulla home effettiva sel server web (mediawiki).