Commentare: 23:10 venerdì, aprile 27 2007
Dopo aver completato per intero il progetto qui a casa e aver montato tutto allo STESSO IDENTICO modo a scuola, qualcosa (ovviamente) non ha funzionato.
Il problema non e' dovuto al progetto, ma bensi' alla struttura della rete scolastica che prevede che tutte le macchine debbano AUTENTICARSI al proxy su serlinux1.
Da un attenta analisi (troppa rottura di balle autenticarsi due volte) abbiamo deciso che il traffico web proveniente dal nostro server centralizzato del wireless e diretto verso il mondo esterno non debba necessitare di autenticazione. In fondo, ogni utente viene gia' autorizzato con nome utente e password per usare l'hotspot, non dovrebbe bastare?
Pensavamo bastasse utilizzare squid in cache_peer, ma non c'e' stato modo di farlo andare. Lo abbiamo sostituito temporaneamente allora con tinyproxy, che e' un semplice transparent proxy che per fare le cose in 2 secondi va benissimo. Ma non c'e' stato modo di togliere l'autenticazione, nessun proxy a noi noto permette di impostare al suo interno username e password con cui comunicare con un upstream proxy.
E qui comincia la saga (troppe saghe non fanno male, cit.) dal titolo "Please remove this f*****d AUTH". I protagonisti siamo io e il professor Ferroni, che mi segue nella creazione del progetto (in quanto root@maxplanck). Non sto qui a raccontarvi passo passo cosa abbiamo fatto pero' vi elenco in linea di massima 4 probabili soluzioni che abbiamo provato e che si sono rivelate non funzionanti:
- aggiungere una acl per serlinux7 e relativa http_access prima della voce http_access deny !password (vieta l'accesso al www senza password)
acl serlinux7 172.16.200.157
(....)
http_access allow serlinux7
http_access deny !password - modifica dell'http_access dicendo di permettere l'accesso a serlinux7 senza password
http_access allow serlinux7 !password
http_access deny !password - cambio del deny !password con un allow password (permetti a quelli con password) seguito da un deny all (nega a tutti gli altri)
http_access allow serlinux7 !password
http_access allow password
http_access deny all - rimozione dell'http access delle password
http_access allow serlinux7
http_access allow all
Naturalmente, NESSUNA DI QUESTE HA FUNZIONATO
La soluzione, che e' piu' scema del solito, era proprio dietro l'angolo e MI e' balenata alla mente grazie a questa parte dello SquidBook:
quando viene impostata un qualsiasi tipo di ACL del tipo proxy_auth tramite le regole http_access, tutte le ACL successive alla regola proxy_auth non verranno più considerate da Squid in quanto o l'accesso sarà stato consentito oppure verrà generato un errore di acceso negato alla cache. Se si deve configurare un proxy in maniera granulare è quindi necessario portare molta attenzione nell'applicazione delle regole http_access. In buona sostanza, una volta che ci si è autenticati su un sistema Squid è tutto permesso tranne quello che è stato esplicitamente negato nelle regole http_access precedenti alla regola http_access proxy_auth
Insomma la soluzione si e' rivelata piu' stupida del normale:
prima di
acl password proxy_auth REQUIRED
ho inserito
acl serlinux7 172.16.200.157
http_access allow serlinux7
Questa regola, trovandosi prima del proxy auth fa si che non sia richiesta l'autenticazione quando ci si connette.
Semplice no? In fondo quanto piu' grave e' il problema, quanto piu' stupida e' la soluzione.



