[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


213. Cache proxy

Nella terminologia utilizzata per le reti, una cache proxy è un servizio di memorizzazione locale delle risorse della rete richieste più frequentemente. Con il termine «risorsa» si deve intendere un oggetto a cui si accede attraverso un URI.

L'utilizzo di un proxy offre due vantaggi principali: l'accesso rapido a risorse già accumulate nella memoria cache e la riduzione del traffico nella rete che precede il proxy stesso.

213.1 Schema essenziale

Il servizio di cache proxy può essere collocato in posizioni differenti nella rete, a seconda delle esigenze o delle particolarità delle situazioni. Generalmente, lo scopo è quello di servire un segmento di rete, indifferentemente dal fatto che questo segmento utilizzi indirizzi privati o sia accessibile dall'esterno.

213.1.1 Servire un segmento di rete

Quando un proxy viene utilizzato per servire un segmento di rete rispetto alla rete esterna, e non vengono fatte altre considerazioni, è sufficiente che l'elaboratore su cui viene collocato il servizio sia accessibile da questo segmento di rete e che a sua volta sia in grado di accedere all'esterno.

Rete esterna <--------------+
                            |
			    |            segmento di rete da servire
- - - -+-------------+------+------+-------------+---- - - -
       |             |             |             |
  +----+----+   +----+----+   +----+----+   +----+-----+
  | cliente |   | cliente |   | cliente |   | SERVENTE |
  |  proxy  |   |  proxy  |   |  proxy  |   |   proxy  |
  +---------+   +---------+   +---------+   +----------+

Figura 213.1: In questa situazione, il servente proxy è collegato come tutti gli altri elaboratori al segmento di rete da servire.

A questa situazione appartiene anche il caso limite in cui il proxy serve solo se stesso, quindi la stessa macchina è servente e anche cliente.

213.1.2 Proxy a più livelli

Un proxy potrebbe servirsi di altri proxy quando si tratta di accedere a determinate reti, alleggerendo in questo modo il carico della rete anche in altri punti, e non solo nel tratto immediatamente precedente.

Rete esterna <-------//---+
                    (A)   |
                          |        +----------+
			  |        | SERVENTE |
      +------------+      |        |   proxy  |   +---------+
      |  SERVENTE  |      |        |  locale  |   | cliente | ...
      |   proxy    +------+        +----+-----+   +----+----+
      | principale |      |  (B)        |              |                 
      +------------+      +---//--------+--------------+----------------- - - -
		          |                                segmento di rete
			  |
                          // (C)
			  |
			  |            segmento di rete
- - - -+-------------+----+--------+-------------+---- - - 
       |             |             |             |
  +----+----+   +----+----+   +----+----+   +----+-----+
  | cliente |   | cliente |   | cliente |   | SERVENTE |
  +---------+   +---------+   +---------+   |   proxy  |
                                            |  locale  |
                                            +----------+

Figura 213.2: Ogni collegamento ha un proprio proxy locale che però si avvale di un proxy principale prima di raggiungere la rete esterna.

La figura 213.2 mostra il caso di un collegamento a una rete esterna, (A), condiviso da due segmenti di rete, che si collegano a questa attraverso i collegamenti B e C. A valle del collegamento A si trova un proxy il cui scopo è quello di ridurre il più possibile il traffico attraverso quel tratto; a valle dei collegamenti B e C si trovano altri proxy locali il cui scopo è quello di ridurre il traffico attraverso i collegamenti rispettivi. In questa situazione, i proxy locali utilizzano a loro volta il servente principale, e tutto quello che viene accumulato nei proxy locali, viene conservato anche in quello principale.

213.1.3 Proxy come filtro verso l'esterno

Il servente proxy, se si trova in un elaboratore che è connesso simultaneamente, attraverso interfacce di rete differenti, a una rete interna con indirizzi privati (cioè esclusi da Internet) e alla rete esterna, può essere utilizzato per permettere ai clienti della rete privata di avere accesso all'esterno attraverso il proxy stesso.

Questo accesso si limita ai protocolli gestiti dal proxy; spesso si tratta solo di HTTP e FTP.

Rete esterna <-------//---+
                          |
                    +-----+------+
                    |  SERVENTE  |
                    |   proxy    |
                    |   filtro   |
                    +-----+------+
		          |
			  |    rete con indirizzi IP privati
- - - -+-------------+----+--------+-------------+---- - - -
       |             |             |             |
  +----+----+   +----+----+   +----+----+   +----+----+
  | cliente |   | cliente |   | cliente |   | cliente |
  +---------+   +---------+   +---------+   +---------+

Figura 213.3: Come caso estremo, il proxy può ricoprire anche un ruolo di filtro e inoltro di pacchetti tra una rete privata e la rete esterna.

213.2 Dal lato del cliente

I clienti come Netscape, vanno configurati per poter sfruttare il servizio della cache proxy. Per prima cosa, se nella stessa macchina risiede il servizio proxy, è probabile che convenga annullare la memoria cache interna al cliente stesso, quindi si può configurare il servente proxy in modo manuale.

178.jpg

Figura 213.4: La configurazione del cliente Netscape per l'utilizzo della cache proxy. Si osservi il fatto che per usare la porta 8080 occorre che il servente sia in ascolto sulla stessa.

Il proxy risponde alle richieste dei clienti attraverso una porta particolare, che dipende dalla configurazione del servizio. Apparentemente, ogni tipo di proxy ha una sua impostazione predefinita differente, mente la tendenza generale è quella di utilizzare la porta 8080. È necessario fare attenzione a questo particolare quando si configura il proxy, per non creare confusione inutile agli utenti del servizio.

Se si vuole usare il proxy nel modo indicato nella sezione 213.1.3, si possono usare solo programmi che prevedono espressamente la presenza di questo, e solo per i protocolli serviti effettivamente dal proxy stesso.

213.3 Apache

Il servente HTTP Apache incorpora delle funzionalità di proxy elementare. In queste sezioni viene valutato solo ciò che è necessario fare per configurare il servizio attraverso il file `httpd.conf' (collocato normalmente nella directory `/etc/httpd/conf/'). Per il resto che riguarda Apache conviene consultare i capitoli 106 e 197.

213.3.1 Attivazione e collocazione

La configurazione predefinita di Apache non prevede la gestione del proxy. Di solito sono presenti alcune direttive di esempio, debitamente commentate, in modo da facilitare il lavoro dell'amministratore.

ProxyRequests {on|off}

La direttiva `ProxyRequests' permette di attivare o meno la gestione della cache proxy. L'esempio seguente mostra la sua attivazione.

ProxyRequests on

CacheRoot <directory-cache>

La direttiva `CacheRoot' permette di definire la directory da utilizzare per contenere la memoria cache. La directory in questione deve risultare accessibile in scrittura all'utente e gruppo specificati con le direttive `User' e `Group' (nella maggior parte dei casi si intende `nobody').

CacheRoot /var/cache/httpd/proxy

213.3.2 Caratteristiche della memoria cache

CacheSize <n-Kbyte>

La direttiva `CacheSize' specifica la dimensione in Kbyte dello spazio su disco da utilizzare per la memoria cache. Questo valore può essere superato, ma periodicamente viene eseguito un controllo con l'eliminazione dei file più vecchi che eccedono tale limite. L'esempio mostra la dichiarazione di una memoria cache di 16 Mbyte.

CacheSize 16384

CacheGcInterval <n-ore>

In questo modo può essere definito l'intervallo tra una ripulitura e l'altra della memoria cache, alla ricerca di file troppo vecchi e di quelli che eccedono il limite di dimensione stabilita. L'esempio mostra la dichiarazione di un intervallo di controllo orario (una sola ora).

CacheGcInterval 1

CacheMaxExpire <n-ore>

I documenti HTTP vengono conservati per un massimo di ore stabilito con questa direttiva. Superato tale tempo, alla richiesta di un cliente, viene fatta una verifica dall'origine. Questo limite di tempo è imposto anche se il documento originale indica una data di scadenza superiore. L'esempio mostra una scadenza massima di 24 ore. Aumentare questo tempo oltre le 24 ore, è generalmente poco opportuno.

CacheMaxExpire 24

CacheDefaultExpire <n-ore>

Quando il tipo di protocollo non prevede l'indicazione di una scadenza, si utilizza il tempo indicato attraverso la direttiva `CacheDefaultExpire'.

CacheLastModifiedFactor <fattore>

Questa direttiva definisce un «fattore» utilizzato per calcolare un tempo di scadenza quando il documento originale non lo fornisce. In pratica si applica la formula x=t*f, dove f è il fattore, t è il tempo trascorso dall'ultima modifica, e x è il tempo di scadenza (il periodo di validità).

La logica sta nel fatto che è più probabile che una pagina venga modificata ancora entro breve tempo se la sua data di modifica è recente. Infatti, minore è il tempo trascorso dall'ultima modifica, minore sarà la durata di validità risultante dalla formula. L'esempio mostra un fattore di 0.1, pari al 10% del tempo trascorso dall'ultima modifica.

CacheLastModifiedFactor 0.1

213.3.3 Esclusione dalla memoria cache

Ci sono situazioni in cui non è opportuno che il proxy accumuli nella sua memoria cache informazioni riferite a determinati domini o sottoreti. Di sicuro non è conveniente farlo per la propria rete locale, a meno che non ci siano delle buone ragioni.

NoCache <dominio>...

Per escludere alcuni nodi o domini interi dalla memoria cache basta elencare i nomi, separati da uno spazio, con la direttiva `NoCache'.

NoCache roggen.brot.dg mehl.dg

L'esempio esclude dalla memoria cache il nodo `roggen.brot.dg' e il dominio `mehl.dg'.

213.3.4 In pratica

Per attivare effettivamente il servizio, oltre alla configurazione del file `httpd.conf', occorre predisporre la directory utilizzata per la memoria cache. Questa deve essere accessibile in scrittura da `httpd', nelle condizioni in cui si trova normalmente, quando cioè ha solo i privilegi dell'utente `nobody'.

L'esempio seguente mostra le direttive del file `httpd.conf' per una configurazione tipica. Ciò che può valere la pena di modificare è la dimensione della memoria cache.

ProxyRequests On

CacheRoot /var/cache/httpd/proxy
CacheSize 16384
CacheGcInterval 1
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
Listen 80
Listen 8080

L'esempio mostra in particolare la direttiva `Listen', usata per fare in modo che `httpd' stia in ascolto sia della porta 80 che della porta 8080, perché quest'ultima è quella utilizzata convenzionalmente dai clienti per interpellare un servente proxy, e per mantenere la possibilità di accedere al servizio normale si lascia aperto anche l'ascolto della porta 80.

213.3.5 Protezione contro l'utilizzo indesiderato

In generale, un servizio proxy dovrebbe essere accessibile solo dalla rete (o sottorete) per la quale è stato attivato. Qualunque altro utente non ne potrebbe trarre vantaggio, e un utilizzo improprio servirebbe solo a intasare inutilmente il collegamento che invece si vuole alleggerire.

Per la protezione del servizio di cache proxy si può utilizzare una sezione `Directory' nel file `access.conf', come nell'esempio seguente:

<Directory proxy:*>
	order deny,allow
	deny from all
	allow from .brot.dg
</Directory>

In questo caso si concede solo al dominio `brot.dg' di accedere.

213.4 Squid

Squid è un programma specifico per la gestione di un proxy e per questo anche molto potente. Il difetto di Squid è la carenza di documentazione; in pratica, tutte le indicazioni disponibili si trovano all'interno del file di configurazione, `/etc/squid.conf', in forma di commenti.

213.4.1 Avvio

squid [<opzioni>]

Squid viene avviato normalmente attraverso la procedura di inizializzazione del sistema, in uno script, attraverso un comando che lo mette esplicitamente sullo sfondo, per esempio come nel modo seguente:

squid &

Le prime volte, l'avvio di Squid può riservare delle sorprese. È importante sapere che all'avvio Squid tenta di risolvere l'indirizzo di alcuni nodi, attraverso il DNS. Nella maggior parte dei casi, se Squid viene avviato in una rete chiusa, il servizio non parte perché questa richiesta fallisce.

Pertanto, se si avvia Squid quando si è isolati dall'esterno, occorre evitare che venga eseguito questo controllo, e per questo si utilizza l'opzione `-D' della riga di comando.

Le distribuzioni GNU/Linux che prevedono Squid tra i pacchetti standard, dovrebbero avere organizzato uno script per il suo avvio automatico attraverso la procedura di inizializzazione del sistema; come già accennato. Se si intende avviare Squid quando non è presente uno sbocco verso Internet, è necessario modificare tale script in modo da inserire l'opzione `-D'. Nel caso della distribuzione Red Hat, questo script si trova nella directory `/etc/rc.d/init.d/', mentre nel caso di Debian, si tratta della directory `/etc/init.d/'.

squid -D &

Per verificare che Squid funzioni correttamente, può essere sufficiente osservare l'albero dei processi attivi attraverso `pstree'. Si dovrebbe ottenere qualcosa come il pezzo seguente:

squid---squid-+-5*[dnsserver]
              |-pinger
              `-squid---16*[squid]

Come si può osservare, il binario `squid' pilota altri programmi che fanno parte dello stesso pacchetto.

Alcune opzioni

Le opzioni, quando si riferiscono a elementi che possono essere definiti attraverso il file di configurazione, prendono il sopravvento su questa.

-a <n-porta>

Permette di specificare il numero della porta attraverso la quale i clienti devono connettersi per accedere al servizio. Il valore predefinito, salvo altra indicazione nel file di configurazione, è 3128.

-f <file-di-configurazione>

Permette di definire un file di configurazione alternativo a `/etc/squid.conf'.

-k {reconfigure|rotate|shutdown|interrupt|kill|debug|check}

Permette di inviare un segnale al servente Squid attivo. La parola chiave utilizzata come argomento dell'opzione determina l'effetto che si ottiene. In particolare vanno considerate quelle seguenti.

  • `reconfigure'

    Fa in modo che venga riletta la configurazione.

  • `rotate'

    Ruota i file delle registrazioni contenuti nella directory `/var/log/squid/'.

  • `shutdown'

    Chiude correttamente l'attività di Squid.

  • `check'

    Verifica il funzionamento di Squid, e in particolare controlla la correttezza formale del file di configurazione.

-s

Abilita l'inserimento di informazioni nel registro del sistema.

-u <porta-icp>

Specifica la porta ICP, cioè quella utilizzata per comunicare con gli altri proxy.

-z

Svuota la memoria cache.

-D

Disabilita il controllo iniziale del DNS, attraverso il tentativo di risoluzione di alcuni indirizzi.

-F

Ricostruisce il sistema di directory in cui si articola quella che deve contenere la memoria cache. Di solito, si utilizza assieme a `-z', per essere sicuri che vengano cancellate eventuali tracce precedenti.

Esempi

squid -z -F

Avvia `squid' in primo piano per azzerare e rigenerare le directory che compongono la memoria cache.

squid -D &

Avvia `squid' sullo sfondo, in modo da attivare il servizio di proxy, senza però eseguire il controllo DNS.

squid -k check

Verifica il funzionamento di Squid, in particolare anche la correttezza della configurazione attraverso il file `/etc/squid.conf'.

squid -k shutdown

Invia un segnale di spegnimento al servente Squid già attivo.

213.4.2 RunCache

`RunCache' è uno script aggiuntivo usato per avviare Squid e per controllare che non «muoia» accidentalmente. In pratica, serve a garantirne il funzionamento. Vale la pena di citarne la sua esistenza, anche se non è necessario il suo utilizzo, perché può capitare che la distribuzione GNU/Linux che si utilizza sia organizzata in modo da avviare Squid attraverso questo meccanismo.

Lo script potrebbe trovarsi nella directory `/usr/lib/squid/'.

213.4.3 Registrazione degli eventi

Squid utilizza file specifici per la registrazione degli eventi, anche quando si utilizza l'opzione `-s' per inviare informazioni al registro del sistema. Questi file si trovano nella directory `/var/log/squid/'. Quando si invia al servente il segnale `rotate' (attraverso l'opzione `-k'), si ottiene l'archiviazione dei file, aggiungendo loro un'estensione numerica che ne indica il livello. Per esempio, `cache.log.0' rappresenta l'archivio più recente di `cache.log'.

213.4.4 Configurazione

La configurazione di Squid avviene attraverso il file `/etc/squid.conf', o un altro file se viene usata l'opzione `-f'. Questo file è già configurato in modo da permettere a Squid di funzionare in quasi tutte le situazioni, tuttavia sarebbe bene ritoccare qualcosa; per esempio il numero di porta del servizio e il dominio o il gruppo di indirizzi a cui concedere di poterlo utilizzare.

La sintassi del file è molto semplice: ciò che è preceduto dal simbolo `#', viene trattato come un commento fino alla fine della riga; le righe bianche e le righe vuote sono ignorate; il resto sono le direttive, composte nel modo seguente:

<direttiva> [<argomenti>]
Alcune direttive

http_port <n-porta>

Permette di modificare la porta predefinita per l'ascolto delle richieste dei clienti. La porta predefinita è 3128, e può essere modificata anche attraverso l'opzione `-a', che prende il sopravvento anche su quanto dichiarato nel file di configurazione.

icp_port <n-porta>

Definisce il numero di porta attraverso cui Squid riceve e invia le richieste ICP da e verso i cache proxy prossimi. Il valore predefinito è 3130.

cache_peer <host> <tipo> <porta-proxy> <porta-icp> [<opzioni>]

Permette di definire l'indirizzo e le caratteristiche di un altro proxy. Il tipo e le opzioni sono rappresentati da diverse parole chiave che permettono di regolare situazioni diverse, ma non ben descritte nella poca documentazione. In generale, dovrebbe andare bene una forma semplificata come quella seguente:

cache_peer <host> parent <porta-proxy> <porta-icp>

Il numero di porta proxy è lo stesso usato dai clienti per connettersi a quel servente. Trattandosi di Squid potrebbe essere il numero 3128, ma se questo valore è stato modificato nella configurazione di quel servente, occorre ricordarsene anche qui. Il numero della porta ICP è solitamente 3130 (sempre se si tratta di Squid).

hierarchy_stoplist <parola>...

Permette di indicare un elenco di parole (stringhe) che potrebbero essere contenute in un URI. In presenza di tali URI, non vengono interpellati i proxy vicini. Questa direttiva viene proposta nel file di configurazione predefinito nella forma `hierarchy_stoplist cgi-bin ?', per escludere tutti gli URI che potrebbero essere riferiti a programmi CGI.

no_cache deny <nome-acl>...

Permette di indicare una serie di casi in cui, gli oggetti riferiti a URI identificati dai nomi posti come argomento non vengono salvati nella memoria cache. Questa direttiva si affianca a `hierarchy_stoplist', e solitamente vengono usate entrambe con gli stessi argomenti.

I nomi indicati come argomenti di questo comando sono definiti attraverso la direttiva `acl' (Access List). Generalmente si utilizzano le due direttive seguenti per impedire la memorizzazione di oggetti che contengono nel percorso dell'URI le stringhe `cgi-bin' e `?':

acl INTERROGAZIONE urlpath_regex cgi-bin \?
no_cache deny INTERROGAZIONE</sintassi>

cache_mem <memoria-ram>

Definisce la quantità di memoria RAM (espressa in Mbyte) ideale che deve essere utilizzata per la parte di memoria cache utilizzata più frequentemente. Questa direttiva non definisce il valore massimo; dà solo un'indicazione a Squid, il quale ne può utilizzare in pratica molta di più. Il valore predefinito è di 8 Mbyte.

maximum_object_size <dimensione> <unità-di-misura>

Permette di definire la dimensione massima, espressa secondo l'unità di misura indicata, di ogni oggetto che viene conservato nella memoria cache. Gli oggetti di dimensione maggiore, non vengono accumulati. Le sigle che si possono usare sono: `KB' per Kbyte e `MB' per Mbyte.

cache_dir <directory-cache> [<dimensione> <primo-livello> <secondo-livello>]

Permette di dichiarare una directory da utilizzare per la conservazione della memoria cache (ne possono essere dichiarate anche più di una). La dimensione è un numero che esprime una quantità in Mbyte; il primo e il secondo livello sono la quantità di directory e sottodirectory in cui deve articolarsi la memoria cache.

Se non viene specificata alcuna direttiva `cache_dir', ne viene definita una in modo predefinito, che dovrebbe corrispondere a `/var/spool/squid/'.

cache_access_log <registro-degli-accessi>

Permette di definire il percorso assoluto del file utilizzato per accumulare le registrazioni degli accessi. Di solito si tratta di `/var/log/squid/access.log'.

cache_store_log <registro-dell'accumulo>

Permette di definire il percorso assoluto del file utilizzato per accumulare le registrazioni delle operazioni di accumulo e di eliminazione di oggetti della memoria cache. Di solito si tratta di `/var/log/squid/store.log'.

cache_log <registro-della-cache>

Accumula informazioni diagnostiche in base al livello stabilito attraverso la direttiva `debug_options'.

debug_options <sezione>,<livello>

Permette di definire il tipo e la quantità di informazioni diagnostiche da annotare. In generale, si utilizza l'argomento `ALL,1', dove il numero uno rappresenta il livello minimo, che potrebbe arrivare a un massimo di nove.

acl <nome> <tipo> <stringa>

acl <nome> <tipo> "<file>"

Questa direttiva permette di definire un nome attraverso cui identificare un «controllo di accesso». La cosa si può articolare in modo molto complesso, e inizialmente è meglio concentrarsi su alcuni tipi di utilizzo.

acl <nome> src <indirizzo-IP>/<maschera-IP>

Il tipo `src' permette di identificare un gruppo di indirizzi IP, attraverso la coppia indirizzo/maschera. A questo gruppo viene attribuito un nome che può essere usato con la direttiva `http_access', per controllare l'accesso da parte di quel gruppo di indirizzi.

http_access {deny|allow} [!]<nome>...

Permette o vieta l'accesso al servizio da parte dei clienti identificati attraverso i nomi indicati come argomento; nomi che si riferiscono a quanto dichiarato con la direttiva `acl'.

La parola chiave `deny' vieta l'accesso, mentre `allow' lo consente. Se un nome viene indicato preceduto immediatamente da un punto esclamativo, allora si intende esprimere il gruppo corrispondente a tutto ciò che non rientra nella classificazione di quel nome.

Nella configurazione standard di Squid si concede a qualunque indirizzo di utilizzare il servizio di proxy, mentre sarebbe opportuno fare in modo che questo fosse accessibile solo al segmento di rete per il quale viene attivato.

cache_effective_users <utente> <gruppo>

Permette di definire per nome l'utente e il gruppo che vengono utilizzati dal processo che gestisce i file della memoria cache. Di conseguenza, tali file saranno di proprietà di questo utente e gruppo. Di solito si tratta di `nobody' e del gruppo relativo; in alternativa, viene usato anche l'utente e il gruppo `proxy'.

dns_testnames <nome>...

Permette di indicare i nomi di nodi da verificare attraverso un'interrogazione DNS prima di attivare il servizio. Per disattivare questo comportamento, si utilizza l'opzione `-D'.

Esempi

http_port 8080

Definisce la porta 8080 per l'accesso al servizio.

icp_port 3130

Definisce la porta 3130 per le comunicazioni ICP con i cache proxy vicini.

cache_peer 192.168.77.7    parent    8080  3130

Indica un nodo da trattare come «vicino» ai fini della funzione di cache proxy (potrebbe trattarsi della cache proxy del proprio ISP). In questo caso si tratta del numero IP 192.168.7.7, a cui si accede attraverso la porta 8080 e si comunicano i messaggi ICP tramite la porta 3130.

cache_mem 4

Riduce a 4 Mbyte la dimensione ottimale per la RAM utilizzata come memoria cache (altrimenti verrebbero usati 8 Mbyte in modo predefinito).

cache_dir /var/spool/squid 200 16 256

Indica la directory da usare per lo scambio su disco, specificando che possono essere usati al massimo 200 Mbyte, strutturando la directory in 16 livelli che si suddividono ulteriormente in 256 sottolivelli.

maximum_object_size 2048 KB

Riduce a 2 Kbyte la dimensione massima degli oggetti accumulati nella memoria cache (altrimenti questa sarebbe di 4 Kbyte in modo predefinito).

#acl all src 0.0.0.0/0.0.0.0
acl all src 192.168.0.0/255.255.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

Quelle mostrate nell'esempio sono le direttive `acl' che appaiono nel file `/etc/squid.conf' standard, tranne quella che descrive il nome `all', che è stata modificata per rappresentare soltanto gli indirizzi a cui si vuole concedere l'accesso al servizio (la sottorete 192.168.*.*).

Questo dovrebbe essere il modo più conveniente di intervenire per limitare l'accesso al servizio, perché il nome `all' viene usato in altre direttive successive, per fare riferimento agli utenti del servizio.

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow all
http_access allow localhost

icp_access allow all
icp_access allow localhost

miss_access allow all
miss_access allow localhost

I nomi definiti con le direttive `acl' vengono usati particolarmente con le direttive `http_access', ma anche in altri casi. L'esempio mostra quello che potrebbe essere l'impostazione predefinita del file di configurazione, con l'aggiunta di direttive che permettono l'accesso in modo particolare anche a quanto definito come `localhost'. Si osservi il nome `all', richiamato più volte per consentire l'accesso ai servizi normali; nell'esempio precedente si è mostrato come ridurne l'ambito ai soli nodi per i quali viene attivato il servizio proxy.

213.4.5 Binari accessori

Squid si compone del binario `squid' e di altri accessori, con funzioni specifiche, avviati da questo. Si tratta di `dnsserver', `pinger' e `unlinkd', che potrebbero trovarsi nella directory `/usr/lib/squid/', proprio perché non sono fatti per essere usati direttamente.

`dnsserver' viene usato per le interrogazioni DNS, e solitamente ne vengono avviate diverse copie per accelerare le operazioni.

`pinger' viene usato per il protocollo ICMP, e in particolare deve funzionare con i privilegi dell'utente `root'. Per questo motivo, è normale che appartenga a `root' è che abbia il bit SUID attivato (SUID-root).

`unlinkd' è un programma molto semplice che serve a cancellare file: cancella di volta in volta i file i cui nomi gli vengono forniti attraverso lo standard input. L'utilità di un tale programma sta nel non dover avviare ogni volta un nuovo processo per la cancellazione di ogni singolo file.

213.4.6 Interrogazione CGI

Squid fornisce un programma CGI per l'interrogazione del servizio proxy da parte dell'amministratore. Si tratta di http://localhost/cgi-bin/cachemgr.cgi. La configurazione predefinita di Squid dovrebbe escluderne l'utilizzo da parte di utenti che accedono da nodi differenti da `localhost'.

179.jpg

Figura 213.5: La maschera di `cachemgr.cgi'.

Come si vede dalla figura 213.5, è necessario indicare almeno il nome del servente e il numero di porta del proxy.

213.5 Riferimenti

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]