Come promesso un paio di settimane fa , ho pronto l’howto secco e come al solito step by step per approntare un sistema di hotspot fai da te per un albergo , una struttura comunitaria , un centro uffici e chi più ne ha più ne metta.
Come al solito è un pippone tecnico , quindi consiglio la lettura solo a chi è veramente interessato
Per una migliore visualizzazione clicca sulla foto
Requisiti :
- una macchina 386 in disuso
- tre schede di rete
- due switch da n porte per quanti client e quanti access point intendete collegare
- n access point a seconda dell’area da coprire
- matassa di cavo di rete cat5 per cablare dallo switch fino agli access point
- eventuali moduli POE (non trattati in questo howto)
Per prima cosa procuriamoci il computer che trasformeremo in router , firewall , server radius/mysql e gestore dei vouchers prepagati.
Procuriamoci un disco di installazione di ubuntu server . Questo howto è stato compilato prendendo in esame la 8.10 , ma credo che non ci siano particolari differenze se usiamo l’ultima 9.04.
Installiamo ubuntu server , scegliendo la configurazione LAMP in modo da avere al termine , già funzionanti il server web Apache , mysql e PHP5. E’ buona pratica scegliere anche il demone ssh per poter amministrare l’installazione tramite un client di rete. Per installare ssh
sudo aptitude install ssh
Preparativi post installazione:
Appena terminata l’installazione occupiamoci delle interfacce di rete che andremo a configurare come segue :
eth0 => WAN
eth1 => rete locale
eth2 => hotspot
Ecco il file /etc/network/interfaces
[sourcecode language=’cpp’]
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0
[/sourcecode]
Abbiamo bisogno di un server dhcp dal momento che scollegando il router internet dalla lan i client si ritrovano privi di indirizzo IP .
Installiamo l’helper dns e server dhcp dnsmasq con
sudo aptitude install dnsmasq
ed editiamo il file di configurazione /etc/dnsmasq.conf come segue :
[sourcecode language=’cpp’]
server=208.67.222.222 #aggiungere questa riga che indica il server dns esterno a cui appoggiarsi
dhcp-range=eth1,192.168.0.50,192.168.0.150,12h
[/sourcecode]
Editiamo il file /etc/resolv.conf
[sourcecode language=’cpp’]
nameserver 127.0.0.1
[/sourcecode]
Facciamo ripartire dnsmasq con
sudo /etc/init.d/dnsmasq restart
e proviamo a pingare un host esterno ( google?) e diamo temporaneamente accesso ad internet alla rete locale con
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
A questo punto facciamo partire il demone ssh con
sudo /etc/init.d/ssh restart
Colleghiamo lo switch1 alla nostra rete locale e all’interfaccia eth1 e dovremo essere in grado sia di uscire su internet che di collegarci in ssh all’host 192.168.0.1.
Se qualcosa andasse storto fate ripartire tutti i demoni sopra menzionati
sudo /etc/init.d/networking restart
sudo /etc/init.d/dnsmasq restart
sudo /etc/init.d/ssh restart
e poi da ultimo
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Configurazione Apache:
Spostiamoci ora su un host della rete locale con ip 192.168.0.0/24 e colleghiamoci via ssh all’indirizzo 192.168.0.1 per una migliore gestione del nostro router .
Per prima cosa verifichiamo che Apache ci risponda sulla porta 80 , facendo puntare il nostro browser di fiducia all’indirizzo http://192.168.0.1 .
Per il nostro setup però , avremo bisogno di attivare ssl in Apache.
Entriamo nella directory /etc/apache2/mods-available e verifichiamo l’esistenza di ssl con
sudo ls | grep ssl
Se tutto è a posto dovremmo avere ssl.conf e ssl.load come risposta al comando precedente.
Attiviamo i moduli ssl con
sudo a2enmod ssl
sudo /etc/init.d/apache2 force-reload
Generiamo certificati e chiavi per il server Apache.
[sourcecode language=’cpp’]
cd /etc/apache2
sudo openssl genrsa -des3 -out server.key 1024
sudo openssl req -new -key server.key -out server.csr[/sourcecode]
Ci verranno richieste la nostra località di lavoro , una challenge password etc etc. Completiamo e rispondiamo ai form nella maniera che riteniamo più opportuna.
Per finire generiamo ed installiamo il certificato vero e proprio
[sourcecode language=’cpp’]
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private[/sourcecode]
Ricordiamo la password che abbiamo inserito quando abbiamo generato la chiave , ci verrà richiesta per firmare il certificato e al primo riavvio di Apache.
A questo punto dobbiamo completare la configurazione in /etc/apache2/sites-available.
Con il nostro editor di testo preferito diamo un’occhiata al file default-ssl che dovrebbe essere già completamente configurato. Accertimoci che queste voci siano decommentate.
[sourcecode language=’cpp’]
sudo nano default-ssl
SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key[/sourcecode]
A questo punto ci basta solo attivare il default SSL site con
sudo a2ensite default-ssl
e far ripartire Apache con
sudo /etc/init.d/apace2 force-reload
Verifichiamo il corretto funzionamento , facendo puntare il nostro browser a https://192.168.0.1.
Il browser ci avviserà che il sito non è attendibile , ma forzando l’acquisizione del certificato aggireremo il problema e ai prossimi collegamenti non verremo più disturbati da questi avvisi.
Per fare in modo che lo script di init di Apache non ci richieda sempre la password del certificato dobbiamo rimuovere la crittatura della chiave RSA.
Posizioniamoci in /etc/ssl/private e diamo
[sourcecode language=’cpp’]
sudo mv server.key server.key.temp
openssl rsa -in server.key.temp -out server.key[/sourcecode]
Installazione Freeradius, i preliminari:
Sfortunatamente il nostro sistema di hotspot a voucher non funziona con freeradius 2.x , o meglio , il gestore degli accessi a tempo phpmyprepaid non ha ancora rilasciato la versione per le nuove tabelle di freeradius 2.x.
Le moderne Ubuntu dalla 8.10 in poi hanno adottato giustamente la nuova versione di freeradius quindi non potremo installare il demone semplicemente con
sudo aptitude install freeradius
Niente paura , preleviamo i sorgenti di freeradius e compiliamoli.
Per prima cosa scarichiamo la distribuzione sorgente all’indirizzo ftp://ftp.freeradius.org/pub/radius/freeradius-1.1.7.tar.gz ( ho anche approntato un mirror nel caso remoto freeradius decidesse di non rendere più disponibile la versione 1.1.7 in quanto non più mantenuta)
Otteniamo i privilegi di superutente con sudo su , posizioniamoci nella nostra directory root con cd e poi diamo
wget ftp://ftp.freeradius.org/pub/radius/freeradius-1.1.7.tar.gz
Esplodiamo l’archivio con
tar zxvf freeradius-1.1.7.tar.gz
A questo punto dobbiamo compilare i sorgenti a la debian way ecco i passi :
[sourcecode language=’cpp’]
aptitude install debhelper dpatch autotools-dev libtool libltdl3-dev libpam0g-dev libgdbm-dev libldap2-dev libsasl2-dev libiodbc2-dev libkrb5-dev libperl-dev snmp libsnmp9-dev libsnmp5-dev libsnmp4.2-dev libpq-dev postgresql-dev libssl-dev
aptitude install build-essential linux-headers
cd /root/freeradius-1.1.7
dpkg-buildpackage -rfakeroot[/sourcecode]
Questo processo creerà i pacchetti .deb di cui avremo bisogno per installare freeradius 1.1.7 nel nostro server.
Al termine di dpkg-buildpackage , troveremo in /root i seguenti pacchetti .deb : freeradius_1.1.7-0_i386.deb
freeradius-dialupadmin_1.1.7-0_all.deb
freeradius-iodbc_1.1.7-0_i386.deb
freeradius-krb5_1.1.7-0_i386.deb
freeradius-ldap_1.1.7-0_i386.deb
freeradius-mysql_1.1.7-0_i386.deb
freeradius-postgresql_1.1.7-0_i386.deb
Troppa grazia Sant’Antonio ! A noi servono solo i pacchetti freeradius_1.1.7-0_i386.deb e freeradius-mysql_1.1.7-0_i386.deb.
Installiamoli con
dpkg -i freeradius_1.1.7-0_i386.deb
dpkg -i freeradius-mysql_1.1.7-0_i386.deb
Avremmo finito con l’installazione preliminare di freeradius , lo riprenderemo in mano più tardi , una volta installato coova-chilli e phpmyprepaid e sistemato i parametri di mysql.
Per evitare che un aggiornamento di Ubuntu ci rimpiazzi la versione 1.1.7 di freeradius dobbiamo bloccare la versione del pacchetto in apt .
Andiamo in /etc/apt e creiamo un file di testo chiamato preferences e copiamo questo contenuto :
[sourcecode language=’cpp’]
Package: freeradius
Pin:version 1.1.7-0
Pin-Priority: 1001
Package: freeradius-mysql
Pin:version 1.1.7-0
Pin-Priority: 1001[/sourcecode]
In questo modo saremo sicuri che anche se aggiorneremo il nostro server non avremo problemi di rimpiazzamento di freeradius in versione 2.x 🙂
Coova-chilli:
Siamo giunti all’installazione di coova-chilli . Questo demone ci fornirà il captive portal , una pagina web che ci permetterà di inserire le nostre credenziali per il login e autenticarci presso freeradius e in buona sostanza fornirci l’accesso ad internet.
Sempre come superutenti posizioniamoci nella directory /root e scarichiamo il pacchetto precompilato per debian
wget http://ap.coova.org/chilli/coova-chilli_1.0.13-1_i386.deb
dpkg -i coova-chilli_1.0.13-1_i386.deb
In questo modo abbiamo immediatamente il demone chillispot per l’autentifica pronto per essere lanciato con il comando
/etc/init.d/chilli start
Facciamo il tuning del sistema . Posizioniamoci in /etc ed rinominiamo il file di configurazione chilli.conf in chilli.conf.orig. Sostituiamo completamente il contenuto del file di configurazione originale con il seguente contenuto:
[sourcecode language=’cpp’]
dns1 192.168.182.1
domain mydomain
dhcpif eth2
radiusserver1 127.0.0.1
radiusserver2 127.0.0.1
radiussecret myradiussecret #vedremo più tardi dove inserire la passwdord di radius
uamallowed www.google.com,gmail.com,mail.google.com,1.gravatar.com,s3.wordpress.com,demablog.wordpress.com,192.168.182.1
uamserver https://192.168.182.1/cgi-bin/hotspotlogin.cgi
uamsecret demahotspot[/sourcecode]
Per ultima cosa scarichiamo lo script cgi che ci permetterà il login tramite pagina web
[sourcecode language=’cpp’]
cd /usr/lib/cgi-bin
wget http://files.demaitalia.com/radius/hotspotlogin.cgi
chmod +x hotspotlogin.cgi[/sourcecode]
Chilli è a posto ora , lasciamolo da una parte per ora ed andiamo ad interessarci di phpmyprepaid
Phpmyprepaid:
Dobbiamo installare uno script php per la gestione delle login del nostro captive portal. Mica vorremo riempire le tabelle di mysql a mano !!!
Procuriamoci l’ultima versione di phpmyprepaid .
Ecco lo step by step
[sourcecode language=’cpp’]
sudo su
password:
cd
wget http://dfn.dl.sourceforge.net/sourceforge/phpmyprepaid/phpmyprepaidRC3.tgz
tar xvf phpmyprepaidRC3.tgz
cp phpmyprepaid /var/www/prepaid
chown -R www-data:www-data /var/www/prepaid
[/sourcecode]
A questo punto colleghiamoci con il browser all’indirizzo http://192.168.0.1
Seguiamo passo passo questi screenshots:
Ora giusto un paio di chiarimenti . Nelle schermate qui sopra non ci sono bisogno di spiegazioni . Gli unici campi che possono generare confusione sono :
- schermata 3 php memory limit:
Ci si puo’ presentare un errore (scritta in rosso) dicendo che abbiamo settato il limite di memoria nei nostri settaggi di PHP. Per correggere editiamo il file /etc/php5/apache2/php.ini , cerchiamo il parametro memory_limit e portiamolo a 16M (memory_limit = 16M) - schermata 5 parametri radius:
Controlliamo per bene i path che ci vengono proposti di default e cambiamoli se necessario. Una nota speciale per Freeradius secret. Finora non abbiamo toccato nessun file di configurazione di /etc/freeradius e la secret di default di freeradius è testing123. E’ una buona idea cambiarla in /etc/freeradius/clients.conf (lo vedremo anche più tardi)
- schermata 6 User interface administration:
Inseriamo i valori che desideriamo per l’accesso dell’amministratore dell’interfaccia di phpmyprepaid. - schermata 7 database configuration:
Quando abbiamo installato Ubuntu Server ed abbiamo scelto la configurazione LAMP ad un certo punto ci è stata richiesta una password di amministratore per il database mysql ricordate ? Ebbene quella è la password da inserire nei campi di questa schermata.
Nel caso non vi ricordiate più la password inserita
sudo dpkg-reconfigure mysql-server-5.0
una volta installato e settato il tutto facciamo pulizia con
sudo rm -R /var/www/prepaid/www/install
Possiamo già creare i nostri coupons e stamparli . Questo è il risultato
Verifichiamo che le tabelle del database vengano create correttamente
[sourcecode language=’cpp’]
mysql -uroot -p phpmyprepaid
Enter password:
mysql>select * from radcheck;
+—-+———-+——————-+—-+———————————————+
| id | UserName | Attribute | op | Value |
+—-+———-+——————-+—-+———————————————+
| 1 | lztudl | User-Password | := | wmf |
| 2 | lztudl | Max-All-Session | := | 86400 |
| 3 | lztudl | WISPr-Location-ID | := | isocc=IT,cc=39,ac=,network=chiavari/myhotel |
| 4 | lztudl | Expiration | := | 5 May 2009 18:11:45 |
+—-+———-+——————-+—-+———————————————+
4 rows in set (0.00 sec)[/sourcecode]
Evviva , ci siamo quasi 🙂
Configurazione Freeradius:
I file di configurazione della distribuzione di freeradius sfortunatamente non sono così semplici da configurare . Potrei dirvi di cambiare questo e quel parametro in authorize , instantiate e così via.
Ho preferito rendere disponibili i file di configurazione già pronti , in modo che li possiate scaricare e mettere direttamente nella vostra /etc/freeradius.
[sourcecode language=’cpp’]
cd /etc/freeradius
wget http://files.demaitalia.com/radius/sql.conf
wget http://files.demaitalia.com/radius/radiusd.conf
[/sourcecode]
Editiamo il file /etc/freeradius/clients.conf e cambiamo la default secrect testing123 in una password che andremo ad inserire anche nel valore radiussecret del file chilli.conf
Editiamo il file sql.conf appena scaricato e cambiamo le credenziali di accesso al database
[sourcecode language=’cpp’]
sql {
# Database type
# Current supported are: rlm_sql_mysql, rlm_sql_postgresql,
# rlm_sql_iodbc, rlm_sql_oracle, rlm_sql_unixodbc, rlm_sql_freetds
driver = “rlm_sql_mysql”
# Connect info
server = “localhost”
login = root
password = MYPASS
# Database table configuration
radius_db = phpmyprepaid[/sourcecode]
Ultimo tocco editare il file /etc/freeradius/dictionary e inserire la seguente linea
ATTRIBUTE Max-All-Session 3000 integer
Firewalling:
Il fido shorewall si prenderà cura del firewalling .
[sourcecode language=’cpp’]
sudo aptitude install shorewall
sudo cp /usr/share/doc/shorewall-common/examples/three-interfaces/* /etc/shorewall
sudo cd /etc/shorewall[/sourcecode]
Editiamo i seguenti files :
- /etc/shorewall/interfaces [sourcecode language=’cpp’]
###############################################################################
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect dhcp,tcpflags,routefilter,nosmurfs,logmartians
hot tun0 detect dhcp
loc eth1 detect dhcp
#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE[/sourcecode] - /etc/shorewall/masq [sourcecode language=’cpp’]
###############################################################################
#INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARK
eth0 tun0
eth0 eth1
#LAST LINE — ADD YOUR ENTRIES ABOVE THIS LINE — DO NOT REMOVE[/sourcecode] - /etc/shorewall/policy [sourcecode language=’cpp’]
###############################################################################
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
hot net ACCEPT
hot $FW ACCEPT
hot all REJECT info
loc net ACCEPT
loc $FW ACCEPT
loc all REJECT info
$FW net ACCEPT
$FW hot ACCEPT
$FW all REJECT info
$FW loc ACCEPT
net $FW ACCEPT
net hot DROP info
net all DROP info
all all REJECT info
#LAST LINE — ADD YOUR ENTRIES ABOVE THIS LINE — DO NOT REMOVE[/sourcecode] - /etc/shorewall/rules [sourcecode language=’cpp’]
#############################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ $
# PORT PORT(S) DEST LIMIT GROUP
#
DNS/ACCEPT $FW net
SSH/ACCEPT loc $FW
Ping/ACCEPT loc $FW
Ping/DROP net $FW
ACCEPT $FW loc icmp
ACCEPT $FW net icmp
#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE[/sourcecode] - /etc/shorewall/zones [sourcecode language=’cpp’]
###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
hot ipv4
loc ipv4
#LAST LINE – ADD YOUR ENTRIES ABOVE THIS ONE – DO NOT REMOVE[/sourcecode] - Cambiare il parametro STARTUP_ENABLED=Yes in shorewall.conf
- Editare il file /etc/default/shorewall e impostare il parametro startup=1.
Restart di tutti i demoni coinvolti :
/etc/init.d/networking restart
/etc/init.d/dnsmasq restart
/etc/init.d/freeradius restart
/etc/init.d/apache2 force-reload
/etc/init.d/mysql restart
/etc/init.d/chilli stop
/etc/init.d/chilli start
/etc/init.d/shorewall restart
Collegamento Access Point:
A questo punto possiamo collegare tanti access point quante porte abbiamo disponibili nello switch2 .
Controlliamo con un notebook ed un netstumbler le aree di copertura radio e piazziamo gli access point nelle aree più consone per una copertura ottimale.
Possiamo usare qualsiasi access point , io per le prove ho usato dei d-link dwl-g700ap
Conclusioni:
Credo di essere stato sufficientemente chiaro e lineare in questo howto. Questa guida è stata compilata in quanto non ho trovato in rete nulla che trattasse il tema di hot spot in maniera passo a passo.
Vi invito a provare sul campo questo setup e di segnalarmi problemi , inesatezze e magari suggerire migliorie e aggiornamenti.
[…] poi realizzato, per vari motivi, ma ci ha pensato il buon Dema. Ecco il suo ottimo “Wifi in Hotel: howto tecnico“! Ti è piaciuto l’articolo, eh? OFFRIMI UNA BIRRA! (è sufficiente essere iscritti a Paypal […]
@hikari
Grazie del commento Luca.
I log di inizio e fine sessione vengono conservati in /var/log/radius/radacct/127.0.0.1.
Si potrebbe senza fatica inserire un transparent proxy e loggare anche il traffico.
Nello scenario tipico di un albergo basterebbe adattare il sistema informatico di gestione degli ospiti inserendo una tabella per associare login ad affituario della camera.
E poi speriamo che questa assurda Pisanu venga cancellata al più presto.
Mica si puo’ continuare a colpi di mille proroghe? 🙂
Veramente ottimo howto, manca solo il sistema di gestione delle identità e dei log.
Purtroppo per la legge pisanu il tuo sistema è uguale ad un access point lasciato lasciato aperto e attaccato al router.
Però tecnicamente il sistema di pagamento è ben fatto.
Presto pubblicherò la mia soluzione al problema delle identità.
Sempre begli articoli Anton, complimenti!
Ora non ti rimane che completarla con la gestione delle identità e dei log, come indicato da Luca. Forza!
Fantastico, i tuoi how-to sono sempre ben fatti, ma questo arriva proprio come il cacio sui maccheroni, io dovrei agganciarlo ad una base utenti su LDAP anzichè su Radius,
tu che mi consigli?
@Giorgio
Ora mi riposo un po’ e poi ci penso 🙂 Grazie del commento
@Archimedix
Radius funziona di sicuro anche con LDAP. La chiave sta nell’edit corretto di radiusd.conf. Non l’ho mai provato , ma di sicuro ci butto un occhio appena possibile. Grazie del commento e dei complimenti.
Ciao, davvero un ottimo articolo come al solito, complimenti! Non vorrei sembrare fuori luogo con la domanda, ma mi piacerebbe sapere se esiste un software (e quindi eventualmente qual è) per disegnare diagrammi di rete come quello posto all’inizio dell’articolo. Grazie mille!
@Giuseppe
I grafici sono generati con l’ottimo Gliffy (http://gliffy.com)
Ciao e grazie del commento.
[…] Wifi in Hotel: howto tecnico […]
[…] il file /etc/network/interfaces view plaincopy to […]
IMPORTANTE.
Su Ubuntu va specificato in /etc/php5/apache2/php.ini il seguente parametro :
short_open_tag = On
Altrimenti phpmyprepaid non puo’ funzionare 🙂
UPDATE:
Il problema di un php.ini malconfigurato puo’ generare molti malfunzionamenti , incluso il non funzionamento delle classi fpdf per la stampa dei coupons.
Il php.ini in /etc/php5/apache2/ il 99% delle volte è Ok , basta solo incrementare il valore di memoria da usare.
Come la mettimo con il freeradius obsoleto? Ci sono bug di sicurezza? A questo punto non si potrebbe trovare una soluzione piu’ affidabile, magari gia’ inserita nei repository di ubuntu, al posto di phpmyprepaid?
Te ne do pienamente atto : il flaw è in freeradius non più mantenuto.
Purtroppo non ho trovato ancora nessuna interfaccia php/mysqsl per
gestire facilmente i coupons 🙁
Complimenti per l’articolo…
Una sola cosa: come configurare gli acces point? Dando a ciascuno un ip statico 192.168.182.x?
Grazie
Ciao.
Basta attestarli allo switch , prenderanno il loro ip in automatico 🙂
Un how-to veramente grandioso, che ho utilizzato come spunto per integrare l’autenticazione di una rete basata su apparati mesh che integrano chillispot al loro interno…
Purtroppo ho un errore su freeradius che suppongo sia dovuto ad un problema di compilazione, perchè non trova rlm_sql_mysql.so, e cercando qui e là ho letto che potrebbe trattarsi di un problema di compilazione.
Installando phpmyprepaid ho visto la possibilità di interfacciarlo con freeradius 2.x, come mai non procedere con questa versione?
Ciao Antonio , riguardo all’errore di compilazione , non ti saprei dire . Puoi provare a compilare freeradius nella maniera tradizionale dando un occhio all’output di ./configure . rlm_sql_mysql.so viene compilato dai sorgenti di freeradius , quindi dai un occhio .
Per quanto riguarda phpmyprepaid , io ho provato a farlo funzionare con la versione 2.x di freeradius ma non c’è stato verso.
Grazie dei complimenti e un saluto
incredibile… adesso stavo tentando di risolvere il problema sopra menzionato ed ora non esiste più il componente openssl….. e mai possibile! inizio a rimpiangere il vecchio windows…
ok, ora ci sono. Il server è in piedi, mi autentica e mi reindirizza verso internet…
Solo che se vado a controllare lo stato d’uso degli account su phpmyprepaid mi rendo conto che qualcosa non sta funzionando, perchè gli utenti sono sempre nella tabella unused, ed anche quando navigo autenticato non risulto nelle sessioni aperte…
Considerate che il chillispot non è a bordo del server ma direttamente sui router… suppongo sia una consigurazione fra phpmyprepaid e freeradius… idee?
In effetti il mio setup non tiene conto delle statistiche di uso come il tempo , la banda etc etc. Per mia pigrizia una volta riuscito a validare i ticket ed attivato il countdown mi sono fermato nel setup. Puoi spingerti più in profondo dando un’occhiata ai files di configurazione di phpmyprepaid in /var/www/phpmyprepaid/configfiles/radius . Antonio , se vuoi provare mi dai un feedback così integriamo la documentazione ?
Ciao e grazie.
Gran bel lavoro.. Tuttavia non sono riuscito neanche io a far andare la parte di statistiche… vedo sempre tutte le card com non utilizzate!
Penso di aver trovato la soluzione (dalle prime prove).. il problema è che il freeradius non era configurato per scrivere i dati di accounting in sql. Per fare ciò è sufficiente decommentare la voce “sql” presente nella sezione accounting del file radiusd.conf…
Spero di essere utile a qualcuno…
Ciao
statistiche avviate…. occorre modificare il file radiusd abilitando i sql-log… e dopo funge tutto alla grande…
Invece ho un problema con chillispot che mi rallenta tantissimo il collegamento… Se esco libero, senza captive tutto ok… mentre se esco tramite autenticazione gira malissimo.
dimenticavo, malgrado questa strana lentezza il log di freeradius è pulito da errori ed i file nel radacct sono correttamente creati…
Non capisco, sembra che chillispo stia facendo una limitazione a pallino, perchè pingando il dns passano sei pacchetti e ne vengono scartati 4 con cadenza praticamente perfetta…
Per le statistiche pocanzi ho detto una fregnaccia, configurate il file sql.conf così:
nano -w /etc/freeradius/sql.confsql { driver = “rlm_sql_mysql” server = “localhost” login = “radius” password = “mysqlsecret” radius_db = “radius” […] # Set to ‘yes’ to read radius clients from the database (‘nas’ table) readclient = yes ###change manually}nano -w /etc/freeradius/radiusd.conf $INCLUDE ${confdir}/sql.confauthorize { preprocess chap suffix eap #files sql}authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } eap}accounting { detail radutmp sql ###change manually}session { sql ###change manually}
istruzione originaria presa da:
http://www.open-mesh.com/activekb/questions/25/Using+your+own+RADIUS+server
anche se la loro soluzione non funziona manco ad ammazzarla, con queste modifiche andrete a cannone…
niente da fare… ci sto lavorando come un ossesso, ma stranamente chillispot non mi fa lavorare correttamente… denoto anche una certa lentezza dal momento in cui faccio la login a quando effettivamente hotspotlogin.cgi mi conferma l’avvenuta login.
Se consideriamo che il server e la macchina chillispot sono collegati in lan a cosa è molto strana
🙁 non saprei come aiutarti , da queste parti tutto normale e veloce
immagino, purtroppo infatti temo che il problema risieda nel fatto che chillispot gira sul’access point gateway della rete, che regolarmente mi interfaccia con apache e con la hotspotlogi.cgi, ma dopo che vengo autenticato incredibilmente la navigazione diventa lenta, per non dire praticamente ferma… mi viene in mente un errore nella limitazione della banda, tipo 1kbps… solo che ricordo di non aver variato alcun parametro e di aver posizionato i vari dictionary in tutte le posizioni corrette. Hai provato ad abilitare le statistiche? PHPmyprepaid è veramente molto potente sotto quel punto di vista, a mio avviso sufficiente per soddisfare il garante privacy… non certo il caro pisanu…
Ciao a tutti,
ho una configurazione con sei access point (attestati sullo switch con indirizzi del tipo 192.168.182.x e con DHCP diasbilitato). E fin qui tutto ok: ogni PC wireless che si collega ad un access point riceve il suo indirizzo e, previo login, naviga correttamente.
Ora, avendo la necessita’ di ripetere il segnale di uno degli access point, ho aggiunto un repeater configurandolo per ripetere il segnale dell’acces point interessato (da setup ho specificato che andava ripetuto il segnale della rete che veniva correttamente indivuduata).
Tuttavia i PC che si agganciano al repeater, vedono la rete ma connettendosi non ricevono alcun indirizzo.
Qualche suggerimento?
Grazie.
Eureka! Funziona tutto!
Su phpmyprepaid tutti i contatori e la pagina statistiche sono perfettamente funzionanti, ed anche l’interfacciamento con la rete mesh è perfetto.
Ho voluto esagerare customizzando il portale “portal2” integrato in Daloradius e sostituendolo al fin troppo essenziale hotspotlogin.cgi ottenendo un risultato estetico veramente notevole!
Mi rimane solo un piccolo dubbio che credo abbia crato qualche magagna anche ad altri utenti, ovvero che quanto crei un utente di tipo Subscribers Timers con una billing policy da esempio un ora, occorre inserire anche il time limit perchè la billing policy funziona solo con i Voucher, e nello specifico applica solo i limiti di up/download…
Fin qui non è un gran problema, ma quando l’utente attiva il proprio account, in automatico il valore dell’expiry date si modifica in ora attuale+1h, quindi facendo scadere prematuramente l’account che magari ha navigato solo 1 minuto.
Avete qualche suggerimento?
Presto tenterò di crare una integrazione al già ottimo how-to sopra scritto 🙂
x Mimz
Controlla i log degli access point e dei repeater, probabilmente la funzione di repeater sta mandando in Broadcast l’SSID corretto ma che di fatto non è collegato alla tua rete principale.
Ottimo howto!
E una buona base per la creazione dei hotspot. Personalmente sono riuscito creare un mio software di gestione hostspot (senza usare phpmyprepaid) con freeradius2 ma ce solo un problema: Visto che di solito AP sono dei route, una volta autenticato almeno un utente sullo stesso AP, altri utenti possono navigare liberamente perche freeradius vede MAC address del AP e non del singolo client (clienti stanno dietro una rete NAT). Installando un stupidissimo e molto economico AP (non router) funziona a meraviglia. Esiste una possibilita di dire a Radius o chilli di interprettare richieste provenienti da router in modo corretto ?
Ancora una volta complimenti per HowTo.
A me non funziona, arrivo fino allla instalazione Coova-chilli, cuando lo attivo mi blocca, il dnsmasq, non mi da dhcp.
PS: Scusate il mio italiano non vivo in italia e non lo scrivo molto.
Aiuto aiuto…
la procedura di installazione è andata bene…
quando però inizio la navigazione inizia la redirezione verso il server coova ma non viene aperata la schermata dove eseguire il login…in poche parole mi ridireziona all’indirizzo https://uam_ip/uam/…/…
Ringrazio per l’how-to veramente ben fatto…. volevo chiedere se si potrebbe integrare zeroshell con phpmyprepaid e se si potrebbe creare un discorso con server remoto… e se si potrebbe installare il tutto su un sever remoto…
Ciao, sul discorso di integrare zeroshell ed phpmyprepaid ci avevo già fatto un pensierino… ma purtroppo il radius integrato in zeroshell non consente l’interfacciamento con il captive portal integrato in zeroshell.
Oltretutto PHP my prepaid non lavora non freeradius 2.0 malgrado nel log di installazione chieda se usare tale versione, e se non ricordo male quando ho fatto l’esperimento notai proprio questo ulteriore problema.
Zeroshell sta aspettando un modulo di accounting tutto suo, che il buon Fulvio sta ancora sviluppando.
SAluti
Buon 2010 a tutti, e a tutti mi rivolgo ma in particolare ad Antonde quale vanno i miei complimenti per fattura tecnica dell’articolo.
Quello che vorrei chiedere a tutti è come posso imparare un pochino di cose come quelle trattate in queste righe,da dove inizio, quali libri o riviste, non posso frequentare corsi, il mio lavoro non me lo permette, sono un tecnico elettronico specializzato in alta frequenza determinato a capire e apprendere un pò di questo Vs mondo, ringrazio veramente tutti.
Ciao a tutti… inutile dire quanto questo how-to mi sia stato utile e di ispirazione diretta per sviluppare la soluzione qui proposta.
http://www.digitosrl.it/wififacile.html
Essa è totalmente basata su tecnologie open-source, sia per ciò che concerne i sw installati sul server che per i firmware delle antenne…
Non voglio fare spam o pubblicità, ma mi metto nei panni di come noi ha tante volte accrocchiato soluzioni di diversi produttori ottenendo un pseudo frankestein che faceva un passo dritto ed uno rovescio… Dopo diversi mesi di sperimentazione e modifiche ai codici abbiamo ottenuto questa soluzione, la quale è in continua evoluzione ed allo stato attuale è quanto di meglio io abbia trovato sul mercato per la gestione ed installazione di reti complesse.
Saluti a tutti
Antonio
Inutile dire, Antonio, che il fatto che questo mio post ti sia servito da ispirazione mi riempie di orgoglio.
Ti saluto e ringrazio.
Anton
ottima guida, ben fatta e lineare vorrei solo chiedervi se secondo voi è posibile fare un installazione di prova su Virtualbox o altro sistema di virtualizzazione?
Non sono un esperto di Virtualbox, ma in linea teorica non ci dovrebbe
essere nessun problema. L’unico ammattimento potrebbe derivare dalle
interfacce di rete (virtuali) da usare per il setup.
Ciao!
se a qualcuno servisse, posso confermare che sono riuscito ad effettuare una corretta installazione e configurazione di freeradius2 con coovachilli 1.2.2, freeradius 2.1.8 e phpmyprepaid0.4RC3 (su ubuntu lucid).
L’unico problema che ho avuto è stato un “errore” durante la configurazione di phpmyprepaid, in quanto mancava il pacchetto php5-mysql (e non era configurato il file php.ini per caricare l’estensione) e quindi si bloccava allo step7 senza dare segni di vita. Segnalo inoltre che la configurazione di coovachilli è leggermente cambiata rispetto a quella proposta in questo articolo.
Ogni tanto phpmyprepaid non sembra funzionare correttamente (pertanto ho provveduto a creare un programma ad-hoc per la gestione degli account)
Grande Permalink, sto cercando anche io di mettere in piedi il server con Lucid, volevo chiederti se in uno sprazzo di magnanimità potevo contattarti per e-mail durante il mio tentativo, dato che sicuramente mi bloccherò in qualche errore che mi porterà il cervello a spasso nei giorni a venire……
Grandissimo how-to!! Anche io devo sviluppare la rete wireless con apache, freeradius, coova,… e sono sicuro che questa guida sarà utilissima.
Archimedix, alla fine hai fatto l’instalazione con ldap? Perche devo farlo similame, ma usando openldap.
Grazie mille antonde per condivire la tua esperienza! 🙂
Ottimo articolo.
Anche io sono alle prese con l’installazione di phpmyprepaid su lucid e Freeradius 2.x
X Stefano: come mai dici che ogni tanto phpmyprepaid si blocca? per fare l’installazione hai dovuto utilizzare procedure particolari? ho visto nel forum di Prepaid che ci sono dei consigli per usarlo con freeradius 2.x te hai usato quelli?
come hai realizzato il programma ad-hoc per la gestione degli account? posso chiederti qualche consiglio?
–
Grazie per questo interessante howto, mi è servito come punto di partenza per configurare un paio di hotspot.
Ho peraltro risolto il problema dei counter con phpmyprepaid e freeradius2. Ho innanzitutto provveduto modificare le tabelle di phpmyprepaid come indicato sul forum di phpmyprepaid, cosa che però porta ad avere alcuni errori in phpmyprepaid, tipo quando si cancella un utente.
Una modifica che non è riportata sul forum di phpmyprepaid ma che è risultata necessaria (con freeradius su debian stable) è stata accettare il campo NULL su radacct per quanto riguarda il campo stopacctime.
Ho poi attivato l’accounting su sql in freeradius, facendo attenzione ad includere in radiusd.conf il file counter.conf (non incluso di default) ed ho seguito le istruzioni trovate qui: http://wiki.freeradius.org/Rlm_sqlcounter
Et voilà il conteggio funziona perfettamente.
Spero serva a qualcuno.
Grazie per la bellissima guida.
Una domanda.Come devono essere configurati gli access point? Se li imposto con un ip statico, come gateway devo impostare l’ip del server ubuntu o del router che connette ad internet?
L’acces point deve fare l’access point, non serve settare il gateway. Basta solo settare l’ssid, tutto il resto avviene in automatico.
Ciao!