Squid non è solo un servizio proxy e cache, può fare molto di più: gestire acl (elenchi di accesso), filtrare i contenuti, può persino eseguire il filtraggio ssl anche in modalità trasparente (metodo proxy - senza dover configurare nelle impostazioni proxy dal tuo browser, è come se fosse un uomo al centro, nessuno sa che c'è). Quindi vedo comunemente come il pieno potenziale di questa applicazione viene sprecato non sapendo come configurare ciascuna delle sue parti.
Ora la cosa interessante che fa squid è la cache (secondo me). Mi dirai perché la cache? Il motivo è semplice, gestisci meglio l'uso della tua velocità e larghezza di banda, è la cosa principale. Pensa attentamente, 1000 persone nella tua azienda si consultano ogni 5 minuti, pagine comuni, Google, Hotmail, Gmail, ecc ... in modo da scaricare immagini, banner, pubblicità, contenuti html più e più volte, tutte queste sono cose statiche, no cambiano così frequentemente, meglio averli memorizzati nella tua rete locale e consegnare una copia che consideri recente all'interno delle configurazioni che hai considerato.
Come si fa Semplice con la seguente frase:
refresh_pattern [-i] regex min percent max [options]
Come dico sempre, non credere a tutto, quindi ti invito a leggere dalla fonte ufficiale. Ti consiglio di leggere il manuale di questa frase QUI
Frase modello_aggiornamento Sarà sempre la nostra etichetta ad aggiungere nuovi parametri alla cache.
Importante, gli elenchi della cache devono essere sequenziali, perché una volta che corrisponde al primo che corrisponde all'oggetto, non continuerà a leggere le altre regole.
Le espressioni regolari fanno distinzione tra maiuscole e minuscole, quindi flv non è la stessa cosa di FLV, ma puoi evitarlo se lo desideri utilizzando l'opzione -i . Allora sarebbe simile a questo modello_aggiornamento -i
'Min': è il tempo (minuti) in cui un oggetto sarà considerato "recente o fresco" e se non ha un'etichetta esplicita di "scaduto". Per impostazione predefinita squid consiglia che sia 0, per motivi che alcune applicazioni dinamiche possono comportarsi in modo strano, puro blah blah blah, in realtà questo valore dovrebbe essere un numero che consideri utile ed efficace per gli elementi che vuoi memorizzare nella cache, esempio: jpg, 1440 minuti (al giorno) mi sembrano a posto, non è come se le immagini di un post cambiassero ogni 5 minuti su una pagina.
'Per cento' È la percentuale dell'età di un oggetto (dall'ultima modifica) che sarà considerata «recente o fresca». Mi spiego meglio, magari facendo una ricarica o un aggiornamento costante per vedere le ultime modifiche che sono state apportate a una pagina web, squid potrebbe considerare se ha già, diciamo, il 50% del tempo verbale y max, scarica nuovamente quell'oggetto da Internet e ti do una nuova copia.
"Max" è il limite superiore o uguale a 'Min' per quanto tempo un oggetto è considerato «recente o fresco», supponiamo che un'immagine di qualche pagina sia stata consultata una sola volta da un utente, quell'oggetto ha già raggiunto il suo tempo verbale, ma non il max, quindi quando viene nuovamente interrogato, verrà consegnata una copia cache.
Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale
Queste opzioni sono state realizzate principalmente per ignorare comportamenti prestabiliti in linguaggi e protocolli, al fine di garantire un utilizzo efficace della cache.
override-expire
Impone il tempo minimo di un oggetto, anche se il server ha inviato un tempo di scadenza più breve (cose come header o Cache-Control: max-age). Se lo facciamo, apparirà un "avviso" che dice cose come questa "VIOLA lo standard HTTP", ma si tratta solo di avvisi che possiamo ignorare. Ora, se il tempo che un server invia è più lungo, squid prenderà il tempo (scadenza) del server
override-lastmod
Rafforza il tempo minimo di un elemento, anche se l'elemento è stato modificato di recente.
reload-into-ims
La breve spiegazione è che impedisce che quando si preme il pulsante di aggiornamento o si effettua una richiesta senza cache, squid fornirà la cache se non è stata "modificata da" e / o se non ci sono "intestazioni" nella pagina.
ignore-reload
Ignora l'azione degli utenti per premere il pulsante di ricarica o di aggiornamento della pagina
ignore-no-store
Ignora qualsiasi regola nelle intestazioni da non memorizzare nella cache, ad esempio dei video
ignore-private
Ignora le regole nelle intestazioni dei contenuti privati che non devono essere memorizzate nella cache, ad esempio: contenuto di Facebook.
refresh-ims
Squid contatta il server, per garantire se l'oggetto è l'ultimo. Se lo è, fornirà la cache
store-stale
Squid salverà tutte quelle risposte, anche se non hanno una data di scadenza, questo è molto poco pratico in quanto di solito non possono essere riutilizzate. Se decidi di abilitarlo devi dichiarare max-stale = NN
max-stale=NN
Se hai abilitato quanto sopra, devi dichiarare una durata massima per quella risposta o fattore. Squid non fornisce oggetti di questo stile ma può convalidarlo con l'origine
Ecco una tabella di come funziona lo stato "FRESH" in base ai valori che abbiamo discusso:
- FRESCO se scade> adesso, altrimenti STALO
- STALE se età> max
- FRESCO se fattore lm <percentuale, altrimenti STALE
- FRESCO se età <min altrimenti STALO
Di seguito è riportato un esempio di configurazione per un'azienda specifica con molto spazio su disco, buone apparecchiature e buona larghezza di banda
refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB
Ora la cache non è solo sul disco rigido, possiamo anche memorizzare nella cache la memoria ram, questo valore è per ogni processo squid, quindi devi prenderlo in considerazione quando usi redirector come squid Guard
maximum_object_size_in_memory 1024 KB
La dimensione massima dell'oggetto in memoria che squid salverà nella RAM. Puoi anche dichiarare un minimo.
memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF
Come puoi vedere, una è la politica per la sostituzione della cache nella memoria RAM e un'altra nell'hard disk. Ci sono 2 politiche GDSF e LFUDA. Il primo cerca di migliorare la percentuale di accessi alla cache, avendo molti piccoli oggetti a portata di mano, il secondo cerca il contrario, mantiene gli oggetti nella cache indipendentemente dalla loro dimensione.
La domanda che immagino tu mi stia ponendo in questo momento è: che uso ne uso? Bene, se consideri che nel tuo ambiente fanno molte query e pochi download usano GDSF se al contrario fanno molti download e poche query LFUDA. Che se raccomando LFUDA quando lo farai, non so, cache in 1 TB di disco, è più efficiente.
maximum_object_size 4 MB
La dimensione massima che un oggetto può avere per essere memorizzato
cache_dir aufs /media/proxy249/cache 100 16 256
Dove verrà memorizzata la cache, attenzione qui, l'importante è che se usi ufs, aufs o diskd, tutti e 3 funzionano più o meno allo stesso modo, la differenza è che aufs e diskd funzionano con processi separati per eseguire le operazioni di I / O sul disco rigido e evita che i processi squid si blocchino durante queste operazioni, inoltre diskd puoi specificare il numero di thread che avrai per questa attività. Consiglio aufs se hai una buona squadra.
Dimensione 100 (megabyte), puoi mettere 100000 è quasi 100 GB dipende dalla tua disponibilità. 16 è il numero di cartelle e 256 è il numero di sottocartelle. Puoi giocare con entrambi i valori a seconda della velocità dei tuoi dischi e di quante risorse hai.
cache_swap_low 90
cache_swap_high 95
Queste opzioni sono i valori di sostituzione dell'oggetto, è il valore minimo e massimo come filigrana secondo squid, dove questi numeri sono in percentuale (%), e in una cache molto piccola, il 5% come questo in questo momento sarebbe diciamo 300 oggetti al secondo , ma in cache molto grandi si parlerebbe di migliaia di MB
Bene, non vi lascio, questo per ora, commento e prendi in considerazione anche chi mi ha detto che non poteva memorizzare nella cache e filtrare le pagine https (SSL) in squid 3.5 o superiore, te le porterò presto, resta sintonizzato su questo blog.
Ottimo complemento alla prima parte!
C'è molta letteratura su Squid a riguardo, ma arrivare al punto nelle sue opzioni più pratiche con i rispettivi chiarimenti e possibili scenari di utilizzo reale non è sempre a portata di mano!
Come sempre, non vedo l'ora che arrivi la terza parte!
Grazie per il tuo commento. È corretto, una spiegazione concisa di tutti gli elementi rilevanti e una configurazione delle migliori pratiche. Tuttavia, sono sempre attento ai tuoi commenti e alle tue esperienze.
Ciao, ho un problema con gli aggiornamenti di Windows e l'antivirus. Ho circa 120 PC nel mio istituto. Potresti darmi un'idea di come migliorare questa situazione. Grazie per il tuo aiuto e congratulazioni per l'articolo.
Ciao, grazie per aver partecipato .. beh se posso aiutarti, ma spiegami bene qual è il tuo problema, non riesci a scaricare gli aggiornamenti? Hai inserito il proxy nelle opzioni Internet e lo stesso nelle opzioni proxy del tuo browser? Hai controllato le porte? O vuoi memorizzare nella cache quegli aggiornamenti?
Quello di cui ho bisogno è che ogni volta che un computer scarica un aggiornamento di Windows o antivirus, rimanga nella cache per un periodo di circa un mese, in questo modo vorrei risparmiare banda, poiché ogni mattina ogni volta tutti i computer iniziano a scaricare gli stessi aggiornamenti ciascuno e la connessione si satura.
Grazie per il vostro aiuto.
Un server con Squid funziona, poiché si tratta di semplici download http non crittografati. Altre soluzioni per la cache sono WSUS e Altiris, normali nelle aziende.
Grazie Mario lo terrò a mente.
ok pronto, ho capito, controlla questo link. http://wiki.squid-cache.org/SquidFaq/WindowsUpdate. per memorizzare nella cache l'antivirus, devi sapere da dove vengono scaricati gli aggiornamenti e sotto quale estensione (esempio .exe) e metterlo nella cache ...
Grazie per il vostro aiuto.
Buongiorno amici, potreste sostenermi con il mio caso. Dato che ho squid 2.7 .STABLE9 su una Debian 6 e ho tutto configurato e quando lo monto in un ambiente 10 pc, ricevo la posta normale, il problema sta quando lo monto per 90 pc, dura solo pochi secondi funzionando e da lì tutti sono vengono lasciati senza Internet. Potresti sostenermi?
Ottima spiegazione, essenziale ma molto chiara e precisa. Personalmente la migliore spiegazione che ho potuto leggere.
Ho una domanda, è possibile memorizzare nella cache applicazioni Android come apk e xapk?
E quale sarebbe il modo corretto per configurare la cache dinamica qualunque sia l'origine dei file?
Io uso pfSense 2.4.5.