SQUID : DAI SORGENTI AL CONTENT-FILTERING
Analisi delle funzioni base e add-on per la gestione
Andrea Gozzi¹
asgozzi@gbhtech.com
Daniele Benincasa¹
dany.metal@gmail.com
Francesco Picciati¹
piccio85@gmail.com
Valerio Romeo¹
rom121@gmail.com
¹CdL Informatica, Università di Modena e Reggio Emilia
"
If the Internet turns out not to be the future of computing, we're toast. But if it is, we're golden.
"
Larry Ellison (CEO Oracle), 1999
1.1 Obiettivo:
Con il lavoro si è cercato di definire una configurazione del server proxy Squid Cache ottimizzata per un possibile utilizzo in ambienti diproduzione, nel rispetto di una serie di requisiti (in ordine di importanza):
1.
Garantire la stabilità del sistema anche sotto carichi di lavoro medio-alti.
2.
Ottenere il massimo numero di HIT e quindi migliorare i tempi di risposta.
3.
Bloccare gli accessi di utenti non autorizzati.
4.
Impedire la visualizzazione di determinate risorse Web.
5.
Distribuire equamente la connettività di rete tra gli utenti e contemporaneamente bloccare certi tipi di download.
1.2 Modalità:
Data la natura di Squid è stato indispensabile utilizzare calcolatori con sistema operativo
UNIX-like
.
Ogni applicazione fondamentale per lo svolgimento del progetto è stata compilata manualmente, spesso con
direttive particolari, in mododa ottenere la migliore configurazione possibile
.
Versione del software utilizzata:
Squid 2.5-STABLE12
Principali caratteristiche hardware delle macchine utilizzate:CPU: AMD Turion64 [1800Mhz – 1024KByte Cache]RAM: 1024 MBHD: IDE 5400 RPMOS: Debian GNU/Linux “Etch”GCC: 4.1CPU: Sun Microsistems UltraSPARC IIi 333Mhz (2048 Kbyte Cache)RAM: 256 MBHD: SCSI HP ST34573W 4.2 GBOS: FreeBSD 6.1-BETA4GCC: 3.4.4 [FreeBSD] 20050518CPU: Intel Pentium II 400Mhz (512KByte Cache)RAM: 192 MBHD: SCSI SAMSUNG WN34324U 4.3 GBOS: Debian GNU/Linux “Sarge” 2.6.15 i686GCC: 3.3.5 (Debian 1:3.3.5-13)
NB: Le funzionalità di Squid sono state testate all'interno della LAN dell'Università di Modena e Reggio
Emilia oltre che su una linea FastWeb
.
Data la tipologia delle due reti (NAT) alcuni risultati potrebbero presentare un certo margine di inattendibilità
.
2.1 Squid: concetti fondamentali
Squid è un
proxy
server per sistemi
Unix
e
Unix-like
utile per migliorare la gestione delle connessioni di reti locali ad Internet. La funzioneprincipale di Squid è quella di ottimizzare i collegamenti ad Internet di una rete: il
proxy
infatti si farà carico di memorizzare tutte le richiesteweb effettuate dai computer ad esso connessi in modo da restituire le stesse pagine in maniera più efficiente e veloce.Il
proxy
(lett. "procura") è dunque una sorta di grande contenitore dei dati più utilizzati dalla rete cui è connesso. Ma le funzioni non sifermano qui: un
proxy
può essere utile anche a selezionare i contenuti vietati e quelli permessi alla visione, può essere utile per controllarel’attività della rete interna e per vietare l’utilizzo di alcuni programmi. Attualmente Squid è in grado di gestire i seguenti protocolli: HTTP,SSL, FTP, GOPHER.Squid è uno dei principali software utilizzati per queste funzioni. La complessità del prodotto e la sua estrema configurabilità ne fannoun ottimo software adatto anche a utilizzi in ambiente professionale. Attraverso l’utilizzo di Squid sarà possibile una riduzione dellabanda consumata e il controllo pressoché totale delle connessioni.Squid è rilasciato sotto licenza GPL ma proprietaria del copyright è la UCSD (University of California, San Diego) dove il progetto havisto la luce.Alcuni dati riguardanti Squid:Dimensione dei sorgenti (compressi con gzip): 1'394'653 bytes.Numero di righe nel file squid.conf: 4434.
Sviluppatori 5.Processi creati quando in esecuzione: 1.
3.1 Fase 1 -Compilazione
Alcune funzionalità di Squid, che ne modificano radicalmente il comportamento in specifiche situazioni,
devono essere attivate utilizzandolo script di configurazione (./configure) al momento della compilazione dei
codici sorgenti
.
Qui di seguito si riportano i parametri utilizzati al momento dell'esecuzione di tale script, scelti in modo da
ottimizzare le prestazioni dellacache e la velocità della risposta
:
--prefix= /home/squid/squid/
Per ragioni di sicurezza è preferibile specificare una destinazione alternativa (che verrà in seguito
chrootata
) nella quale troverà postol'albero delle cartelle.
--enable-dlmalloc
Considerando che alcuni test hanno dimostrato la lentezza delle funzioni C quali
malloc()
,
free()
e
realloc()
, si è preferito compilare Squidcon il supporto per le
dlmalloc
in modo da incrementarne le prestazioni.
--enable-xmallocs-statistics
Mostra le statistiche delle funzioni malloc() e free() all'interno dell'interfaccia Web.
--enable-delay-pools
Mentre è possibile limitare la velocità di una singola connessione HTTP ma è invece possibile limitare la
banda per singole workstation oper intere subnet utilizzando i delay pools
.
Questa opzione permette inoltre una limitazione della banda per singoli utenti o gruppi di utenti
.
--enable-async-io --with-pthreads
Volendo preparare una configurazione Squid da utilizzare in situazioni di alto carico è stato abilitato il supporto per libreria di thread POSIXaffinchè che le operazioni di I/O vengano gestite in modalità asincrona.
--enable-useragent-log
Questa opzione permette di registrare in un
logfile
separato il tag identificativo del software utilizzato dagli utenti.
--enable-referer-log
Questo parametro, analogamente al precedente, consente a Squid di memorizzare il percorso fatto dall'utente nel Web attraverso ireferer.
--enable-snmp
SNMP (Simple Network Management Protocol): e’ il protocollo utilizzato per comunicare informazioni di
carattere amministrativo all’internodella rete
.
In questo caso è stato abilitato per permettere la creazione delle statistiche con il supporto del software
MRTG
.
Premia la tua curiosità
Tutto ciò che desideri leggere.
Sempre. Ovunque. Su qualsiasi dispositivo.
Nessun impegno. Annulla in qualsiasi momento.