Capitolo 29. Il server proxy Squid

Sommario

29.1. Alcune informazioni sulle cache proxy
29.2. Requisiti di sistema
29.3. Avvio di Squid
29.4. Il file di configurazione /etc/squid/squid.conf
29.5. Configurazione di un proxy trasparente
29.6. cachemgr.cgi
29.7. squidGuard
29.8. Generazione di rapporti sulla cache con Calamaris
29.9. Ulteriori informazioni

Estratto

Squid è una cache proxy ampiamente usata per le piattaforme Linux e UNIX. Questa cache viene usata per salvare gli oggetti Internet richiesti, come i dati sul Web o su un server FTP, su un computer più vicino alla workstation richiedente rispetto al server. Questo capitolo illustra la configurazione e le impostazioni che devono essere specificate per avviare il proxy, spiega come acquisire le statistiche sull'uso della cache con speciali programmi come Calamaris e cachemgr, e fornisce istruzioni su come filtrare i contenuti Web con squidGuard.

Squid funge da cache proxy. In altre parole, reindirizza le richieste dei client (in questo caso specifico dei browser Web) al server. Appena gli oggetti richiesti arrivano al server, li trasmette al client e salva una copia nella cache del disco rigido. Uno dei vantaggi del caching risiede nel fatto che è possibile usare la cache del disco rigido per fornire le informazioni richieste a più client contemporaneamente. Ciò permette ai client di ricevere molto più rapidamente i dati da Internet. Inoltre, questa procedura riduce significativamente il traffico in rete.

Oltre alla funzione di caching, Squid offre numerose altre funzioni che consentono, ad esempio, di distribuire il carico su gerarchie intercomunicanti di server proxy, definire elenchi per il controllo degli accessi specifici per tutti i clienti che accedono al proxy, consentire o rifiutare l'accesso a pagine Web specifiche con l'ausilio di altre applicazioni, e generare statistiche sulle pagine Web visitate più frequentemente per valutare le abitudini degli utenti. Squid non è un proxy generico perché può normalmente usato solo con le connessioni HTTP. Supporta i protocolli FTP, Gopher, SSL e WAIS, ma non supporta altri protocolli Internet come Real Audio, le news o le funzioni di videoconferenza. Squid non supporta molti programmi multimediali perché utilizza solo il protocollo UPD per le comunicazioni tra le diverse cache.


29.1. Alcune informazioni sulle cache proxy

In qualità di cache proxy, Squid può essere usato in molti modi. Se usato in combinazione con un firewall, permette di migliorare la sicurezza. Inoltre, consente di usare più proxy contemporaneamente e permette di specificare gli oggetti che devono essere salvati nella cache nonché per quanto tempo deve essere conservati nella cache.

29.1.1. Squid e sicurezza

Squid può essere usato con un firewall per proteggere le reti interne dall'esterno utilizzando una cache proxy. In questo caso il firewall rifiuta l'accesso a tutti i client eccetto Squid. Tutte le connessioni Web devono essere avviate dal proxy. In questa configurazione Squid consente di controllare integralmente l'accesso al Web.

Se la configurazione del firewall comprende un DMZ, il proxy deve operare all'interno di questa zona. La Sezione 29.5, "Configurazione di un proxy trasparente" spiega come implementare un proxy trasparente. Questa operazione semplifica la configurazione dei clienti perché in questo caso non sono necessarie informazioni sul proxy.

29.1.2. Cache multiple

È possibile configurare più istanze di Squid per consentire lo scambio di oggetti. Questo accorgimento riduce il carico totale del sistema e aumenta la probabilità di trovare un oggetto esistente nella rete locale. È possibile anche configurare gerarchie di cache in modo che una cache possa inoltrare le richieste degli oggetti ad altre cache figlio o alla cache genitore. Ciò permette di ottenere gli oggetti da un'altra cache della rete locale o direttamente dall'origine.

È naturalmente molto importante scegliere la topologia appropriata per la gerarchia delle cache anche per evitare di incrementare il traffico della rete. Nelle reti di grandi dimensioni, è preferibile configurare un server proxy per ciascuna sottorete e collegare ciascun server proxy al server proxy figlio, che a sua volta sarà connesso alla cache proxy dell'ISP.

Tutte le comunicazioni vengono gestite da ICP (Internet Cache Protocol) che viene eseguito sul protocollo UPD. I trasferimenti di dati tra le cache vengono gestiti tramite il protocollo HTTP (Hypertext Transmission Protocol) basato su TCP.

Per trovare il server più adatto per l'acquisizione di oggetti, una cache invia una richiesta ICP a tutte le cache sorelle. Queste rispondono alla richiesta con risposte ICP contenenti un codice HIT se l'oggetto è stato rilevato oppure con un codice MISS se l'oggetto non è stato rilevato. Se vengono trovate più risposte HIT, il server proxy decide da quale server eseguire il download sulla base di numerosi fattori, ad esempio in base alla cache che ha risposto per prima o che è situata a minore distanza. Se le risposte ricevute non sono soddisfacenti, la richiesta viene inviata alla cache genitore.

[Tip]Suggerimento

Per evitare la duplicazione di oggetti nelle varie cache della rete, vengono utilizzati altri protocolli ICP, come CARP (Cache Array Routing Protocol) or HTCP (Hypertext Cache Protocol). Più oggetti vengono archiviati in rete e maggiore è la probabilità di trovare quello desiderato.

29.1.3. Caching di oggetti interni

Non tutti gli oggetti disponibili in rete sono statici. Vi sono infatti molte pagine CGI generate dinamicamente, contatori di visitatori e documenti con contenuto SSL cifrato. Questi oggetti non vengono salvati nella cache perché cambiano ad ogni accesso.

Naturalmente è necessario decidere anche per quanto tempo gli oggetti devono essere mantenuti nella cache. Per facilitare il compito, vengono assegnati più stati a tutti gli oggetti della cache. I server Web e proxy rilevano lo stato di un oggetto aggiungendo intestazioni agli oggetti stessi; ad esempio "Data dell'ultima modifica" o "Scade il" seguiti da una data. Vengono però usate anche altre intestazioni che specificano se l'oggetto in questione deve essere salvato o meno nella cache.

Gli oggetti nella cache vengono normalmente sostituti per liberare spazio sul disco rigido utilizzando algoritmi come l'algoritmo LRU (Last Recently Used). In altre parole, il proxy elimina gli oggetti che non sono stati richiesti da più tempo.