Server proxy transparent squid3 squidguard iptables sarg. Cum să funcționeze proxy transparent? Argumente pro şi contra

Squid este un pachet puternic care implementează proxy-ul cererilor care trec prin el, are un set imens de caracteristici. LA retea locala cel mai adesea este folosit ca un proxy transparent de cache. Să configuram 3 caracteristici principale ale calmarului în ordine.

1. Mai întâi, instalați squid (pentru Debian 6)

apt-get install squid3

2. Fișierul de configurare squid.conf se află în /etc/squid3/. Conține aproximativ 5,5 mii de linii. Dar nu totul este atât de înfricoșător, cea mai mare parte a acestui fișier sunt comentarii detaliate despre setări. Depinde de dvs. să alegeți cum este mai convenabil să faceți modificări fișierului. Puteți scăpa de tot ce este de prisos în dosar în acest fel

# accesați folderul squid cd /etc/squid3 # do backup fișier cu setări cp squid.conf squid.conf_backup # obține un fișier curat cu setări fără comentarii în squid.conf de la squid.conf_backup cat squid.conf_backup | egrep -v "^#|^$" > squid.conf

și obțineți un fișier „gol” cu setarea, următorul conținut

acl manager proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl SSL_ports port 443 acl Safe_ports port 80 # http acl port acl Safe port 21_port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # porturi neînregistrate acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gsfe_ports acl_port7_https port7 # multiling http acl CONNECT method CONNECT http_access permit manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access permit localhost http_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern 0 20% 4320

Rămâne să facem doar modificările necesare în linii. A doua opțiune este să editați întregul fișier fără a-l curăța. Ceea ce este și destul de simplu dacă știi cum să folosești căutarea în editorul vi. În acest caz, veți avea multe comentarii utile despre setări care să vă ajute.

Pentru a căuta text în editorul vi, apăsați tasta „/”. Dacă sunteți în modul de editare, trebuie să părăsiți el pentru a trimite comenzi către editor apăsând „Esc”. Obținem următoarea secvență de acțiuni: „/” > „introduceți cuvântul de căutare” > „Enter”.

Acum edităm fișierul, facem setările de bază. Dacă nu există linii necesare, adăugați-le sau decomentați-le.

Vi /etc/squid3/squid.conf # Permite accesul proxy numai din rețelele găsite acl localnet src 172.16.0.0/24 http_access permit localnet http_access permit localhost # Portul proxy implicit este 3128 # Deoarece proxy-ul nostru va fi transparent - specificați și acest # ca adresa interfeței cu portul pe care va funcționa proxy-ul # cereri către iptables vor fi redirecționate către același port http_port 172.16.0.1:3128 transparent

3. Oferim memorarea în cache a cererilor

# Setarea directorului cache și configurarea lui # ufs - metodă de stocare în cache a fișierelor pe disc # /var/spool/squid3 - folderul cache # 5000 - dimensiunea cache în megaocteți # 16 - numărul de foldere de nivel 1 din cache # 256 - numărul de Dosarele de nivel 2 din cache cache_dir ufs /var/spool/squid3 5000 16 256 # limitați dimensiunea minimă a fișierului din cache pentru a ușura lucrurile hard disk# sau puteți pierde întregul punct al cache-ului dacă funcționează lent minimum_object_size 2 KB # limitați dimensiunea maximă maximum_object_size 61440 KB

4. Squid, configurat implicit, adaugă câteva dintre anteturile sale la cererea http. Totodată, în primele două anteturi se transmite ip-ul clientului (sau chiar mai multe ip, în cazul unui lanț proxy). Dacă nu avem nevoie, de exemplu, nu vrem să arătăm ip-ul intern al localului nostru, atunci este foarte ușor să facem anonimatul calmarului

Prin off forwarded_for delete

După finalizarea tuturor setărilor, merită să verificați anonimatul solicitărilor de pe pagina http://checker.samair.ru Dacă totul este făcut corect, rezultatul va fi inscripția „Reluare: utilizați un anonimat ridicat (elite) proxy”.

Aceasta completează modificările aduse fișierului. În cele din urmă, squid.conf ar trebui să arate așa

acl manager proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl localnet src 172.16.0.0/24 # RFC1918.0.0.0/24 # RFC1918. port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # porturi neînregistrate acl Safe_ports port #8 acl Safe_ports #8 port gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access permit localnet http_access deny permit localhost. http_17. http_0. 3128 transparent hierarchy_stoplist cgi-bin ? cache_dir ufs /var/spool/squid3 5000 16 256 minimum_object_size 2 KB maximum_object_size 61440 KB coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 ref_patter 4%/0|resh_patter 4%/0|resh_patter 4? 0 refresh_pattern . 0 20% 4320 prin off forwarded_for delete

Pentru a aplica setările, opriți calmarul

Serviciu oprire squid3

Se pregătește directorul cache-ului squid

Calamar3 -z

Lansarea proxy-ului

Service squid3 start

Dacă nu ați făcut nicio modificare la setările legate de cache-ul proxy, atunci puteți executa o singură comandă. Setările vor fi acceptate automat fără a reporni squid.

Squid3 -k reconfigurează

5. Rămâne doar să configurați transparența proxy-ului. Acest lucru asigură că utilizatorii din rețeaua locală pot lucra printr-un proxy, de ex. nu este nevoie să configurați utilizatorii de programe pentru a lucra cu proxy. Transparența este oferită prin simpla redirecționare a cererilor http de la portul 80 la portul serverului proxy folosind firewall-ul iptables și activând modul proxy transparent în squid însuși. Modificări ale setărilor de calmar pe care le-am făcut mai sus. Adăugați încă o linie la regulile iptables:

Iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Asigurați-vă că specificați în parametru interfata dorita pe care va lucra proxy-ul: -i eth0. Acest lucru vă va scuti de problemele legate de accesarea serverului web de pe Internet dacă există mai multe interfețe active, dacă există una în viitor pe acest server. Și, de asemenea, de dragul securității proxy.

Acest articol oferă un exemplu de configurare rapidă a unui server proxy de stocare în cache Squid Linux Debian 6. Rezultatul setărilor va fi posibilitatea de a accesa Internetul prin intermediul serverul dat protocoale: http, https și ftp.

Faceți imediat o rezervare că serverul primit nu este filtru de rețeași potențial vulnerabil la atacurile de rețea.
Configurația serverului se bazează pe sistemul de operare Linux Debian 6. Toate comenzile de mai jos trebuie executate cu drepturi de superutilizator (rădăcină).

Un avertisment important imediat: autorizarea și un proxy transparent sunt incompatibile! Va trebui să alegi unul. Al doilea avertisment: autorizarea printr-un proxy va restricționa accesul la Internet numai prin protocolul HTTP. Alte protocoale: FTP, SMTP, POP3 și altele vor continua să funcționeze în liniște prin NAT. Deși acest lucru nu este atât de critic în organizațiile mici, cel mai folosit (și abuzat) protocol este HTTP, iar una dintre sarcinile administratorului este să restricționeze accesul angajaților la Internet printr-un browser.

Dacă utilizați Apteture cu descărcarea pachetelor din rețea, vă recomand să actualizați listele de pachete reale înainte de instalare:

# apt-get update

Începem instalarea Squid:

# apt-get install squid3

După finalizarea instalării, începem editarea fișierului de configurare squid. Nu știu despre tine, personal este mai convenabil pentru mine când nu este nimic de prisos în fișierul de configurare, adică există doar parametrii de configurare direct. Pentru a face acest lucru, să facem o copie de rezervă a configurației inițiale de calmar (astfel încât să existe un loc în care să căutați descrierile tuturor parametrilor):

cp /etc/squid/squid.conf /etc/squid/squid.conf.original

și stoarceți tot ce nu este comentat din configurația originală:

pisică /etc/squid/squid.conf.original | grep -v "^\(#\|$\)" > /etc/squid/squid.conf

Ca rezultat, vom avea o configurație implicită fără nimic altceva. Dar totuși, vă sfătuiesc insistent să aruncați o privire la configurația originală și să o citiți pe îndelete - există o mulțime de lucruri interesante acolo!

Ei bine, în sfârșit, să începem editarea:

nano /etc/squid/squid.conf

După instalare, este necesară o mică configurație. Deschideți fișierul de configurare Squid în editor, care ar trebui să fie localizat în /etc/squid/squid.conf. În acest fișier găsim rândurile:

Acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16

Aceste rânduri trebuie comentate. Și adăugați propria linie cu parametrii propriei rețele locale. Ar trebui să iasă așa:

# acl localnet src 10.0.0.0/8
# acl localnet src 172.16.0.0/12
# acl localnet src 192.168.0.0/16
acl localnet src 192.168.1.0/24 # Rețea locală proprie

În ultima linie, în loc de 192.168.1.0/24, trebuie să înlocuiți parametrii rețelei dvs.

Chiar sub comentariul # TAG: http_access trebuie să găsiți linia:

http_access permite localhost
sau
http_access permite managerului localhost

Imediat după această linie, adăugați linia:

http_access permite localnet
cache_dir ufs /var/cache/squid 2048 16 256
mkdir -p /var/cache/squid
chmod 755 -R /var/cache/squid

Astfel, permițând accesul în rețea tuturor calculatoarelor din rețeaua locală. După aceea, salvați fișierul squid.conf și reporniți serverul Squid:

# /etc/init.d/squid restart

Dacă după repornirea squid primiți o eroare (AVERTISMENT cache_mem este mai mare decât spațiul total de cache pe disc!) Doar reduceți valoarea parametrului cache_mem 8 MB, l-am setat la 32

Dacă ați făcut modificări la fișierul de configurare din erori, atunci Squid ar trebui să repornească cu succes. Dacă apare o eroare, puteți afla ce a cauzat-o în fișierul jurnal: /var/log/squid/cache.log
Configurarea browserului pentru a funcționa printr-un server proxy

În această opțiune de configurare, serverul nostru nu poate direcționa automat cererile de rețea către portul serverului proxy. Prin urmare, browserele trebuie să specifice în mod explicit adresa serverului nostru.

Este important ca serverul proxy din rețeaua locală să aibă o adresă IP fixă. Să presupunem că al tău este 192.168.1.1. De exemplu, pentru a seta Internet Explorer trebuie să deschideți Instrumente-Opțiuni Internet-Conexiuni-Setări de rețea. În fereastra care se deschide, bifați Utilizați un server proxy pentru conexiuni locale. Bifați caseta Nu utilizați un server proxy pentru adrese locale. În câmpul Adresă, introduceți adresa IP a serverului nostru proxy: 192.168.1.1. În câmpul Port, introduceți portul implicit utilizat de Squid: 3128.

După aceste setări, browserul dumneavoastră va accesa rețeaua prin noul nostru server proxy. În alte browsere, setarea este similară cu cea de mai sus pentru Microsoft Internet explorator.

Portul serverului proxy poate fi schimbat după bunul plac în fișierul /etc/squid/squid.conf. Este dat în rândul:

http_port 3128 transparent

Concluzie
Instalarea și configurarea unui server proxy de cache bazat pe Squid este doar primul pas în crearea unei porți productive către Internet. Puțin mai târziu, vă voi spune cum să configurați Transparent Proxy Server, Firewall și cum puteți păstra statisticile vizitelor utilizatorilor pe site-uri de către utilizatorii rețelei locale.

Este foarte important să configurați corect iptables. A doua varianta este putin mai jos, imi place mai mult

La acest pas, vă sugerez să creați un script de configurare, deoarece va fi util ca instrument universal.1 # vim ./setiptables.sh

#!/bin/bash
LAN=1 $
WAN=2 USD
IP=3 USD
GW=4 USD
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j DNAT --to $IP:3128
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j REDIRECT --la-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A FORWARD -i $WAN -o $LAN -s $GW/24 -p tcp -m multiport --dport 443,21,22 -j ACCEPT
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf
sysctl -w net.ipv4.ip_forward=1

Avem variabile etichetate (pentru comoditate), 3 reguli pentru tabelul NAT și 1 pentru FORWARD.
Porturile 443,21,22 au permisiunea de a ocoli serverul proxy.
Pe lângă setările iptables, în acest script, activăm redirecționarea pachetelor.
Rulați așa: 1

# sh ./setiptables.sh eth0 eth1 192.168.100.1 192.168.100.0

6) Configurați încărcarea automată a setărilor iptables.
Salvați setările iptables.

# mkdir -p /usr/local/iptables && iptables-save > /usr/local/iptables/session.ipt

Adăugați o comandă de pornire automată la /etc/rc.local (îmi place Perl, dar cui îi pasă).

# perl -i -pe "print" iptables-restore< /usr/local/iptables/session.ipt\n" if $. == 2" /etc/rc.local

De asemenea, nu uitați de redirecționarea pachetelor.

# perl -i -pe "printează "sysctl -w net.ipv4.ip_forward=1\n" dacă $. == 3" /etc/rc.local

A doua opțiune pentru a configura firewall-ul iptables

Activați redirecționarea în sistem. În fișierul /etc/sysctl.conf, decomentați linia

net.ipv4.ip_forward=1

Deci, momentan am resetat complet setările paravanului de protecție (iptables).

Lanțuri de aruncare:

$ sudo iptables -F
$ sudo iptables -F -t nat
Respinge toate cele primite și permite toate ieșirile și redirecționarea:
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
Permitem să primim un răspuns la o conexiune DEJA stabilită:
sudo iptables -A INPUT -m stat --stat RELATATE,STABILIT -j ACCEPT
Permite traficul loopback:
sudo iptables -A INPUT -i lo -j ACCEPT
Permitem tot traficul din rețeaua noastră internă (să luăm subrețeaua 222):
sudo iptables -A INPUT -s 192.168.222.0/24 -i eth1 -j ACCEPT
Și, o garanție a transparenței! Redirecționați tot traficul http de ieșire (la portul 80) către portul squid 3128:
iptables -t nat -A PREROUTING -s 192.168.222.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.222.0/24 -o eth0 -j SNAT --to-source 192.168.56.39

Verificăm internetul pe client. Permiteți-mi să vă reamintesc că, dacă nu trebuie să specificați un proxy, trebuie să setați gateway-ul!
Cu toate acestea, după prima repornire, ne vom da seama că toate eforturile noastre sunt în zadar.
Să-i învățăm cum să supraviețuiască!
Deci haideți să salvăm ceea ce am făcut aici:

iptables-save > /etc/firewall.conf

Această simulare nu a funcționat pentru mine cu sudo (deși în teorie pare că ar trebui ...), așa că o puteți face logând complet la rădăcină (su) și rulând comanda, dar fără sudo.
Acum să creăm un script care face ca ifupdown să reînvie firewall-ul nostru:

nano /etc/network/if-up.d/00-iptables

Să punem următoarele în el:

#!/bin/sh
iptables restaurare< /etc/firewall.conf

Să setăm drepturile de execuție:

chmod +x /etc/network/if-up.d/00-iptables

În general, configurarea unui server proxy transparent este terminată, dar pentru ca jurnalele să poată fi citite, trebuie să dezactivăm suportul ipv6 (din cauza faptului că ipv6 nu este configurat pe adaptorul nostru, vor fi multe avertismente).

Dezactivează IPv6 dacă cineva nu folosește

Imi propun din nou sa fac un scenariu ca sa nu ma incurc.
nano ./ipv6disable.sh

#!/bin/bash
perl -i -pe "printează "alias net-pf-10 ipv6 off\n" dacă $.==17" /etc/modprobe.d/aliases.conf
perl -i -pe "printează "alias net-pf-10 off\n" dacă $.== 18" /etc/modprobe.d/aliases.conf
perl -i -pe "printează "alias ipv6 dezactivat\n" dacă $.== 19" /etc/modprobe.d/aliases.conf
ecou 1 | tee /proc/sys/net/ipv6/conf/all/disable_ipv6
echo „lista neagră ipv6” | tee -a /etc/modprobe.d/blacklist.conf
STR=$(cat /boot/grub/grub.cfg | sed -n "67p")
STR=$(STR)" ipv6.disable=1"
sed "67d" /boot/grub/grub.cfg > /boot/grub/grub.cfg.backup
cp /boot/grub/grub.cfg.backup /boot/grub/grub.cfg
sed -i 67i\ "$STR" /boot/grub/grub.cfg

În termeni generali, ce se întâmplă în acest script:
În primul rând, dezactivăm incendiul ipv6 în modulele kernelului.
În continuare, indicăm markerul în / proc să nu folosească ipv6.
Și în linia 67 din /boot/grub/grub.cfg adăugăm parametrul ipv6.disable=1.
Un astfel de joc cu tee și sed este necesar pentru a salva setările /boot/grub/grub.cfg, deoarece dispozitivele sunt indicate acolo nu prin /dev/sd* și prin UUID.
Deși totul poate fi adăugat oricând cu pixuri.
Acum trebuie să instalăm squidguard
Deci, jumătate din muncă este deja făcută, acum rămâne să instalați pachetul SquidGuard și să îl configurați. Pentru a instala, scrieți în terminal de dedesubt utilizator root (permisiuni root pe Debian GNU/Linux se poate obține cu comanda su, pe Ubuntu scriem sudo înaintea comenzilor):

apt-get install squidguard

După instalare, descărcați listele negre cu listele negre folosind comanda wget din terminal (atenție, dimensiunea fișierului este de 24 MB!):
wget -c my_blacklists.tar.gz

Și despachetați-l în directorul în care ar trebui să fie amplasate bazele de date SquidGuard (sunt necesare drepturi de administrator):

tar zxvf my_blacklists.tar.gz -C /var/lib/squidguard/db

Ca urmare a despachetării, va apărea directorul /var/lib/squidguard/db/my, care conține multe subdirectoare de diferite categorii cu liste de domenii și adrese ale site-urilor nedorite. Această listă a fost compilată de noi pe baza a trei liste negre descărcate de pe http://www.squidguard.org , http://www.shallalist.de și http://www.urlblacklist.com . Drept urmare, lista noastră conține peste 3 milioane de site-uri.

Acum trebuie să configurați o grămadă de Squid și SquidGuard și să conectați listele negre la ele. Pentru a face acest lucru, adăugați următoarele linii în fișierul squid.conf deschizând fișierul în editorul nano cu drepturi de administrator:

nano /etc/squid/squid.conf

Adăugați linii la sfârșitul fișierului:

Redirector_bypass activat
redirect_program /usr/bin/squidGuard
redirect_children 1

mv /etc/squid/squidGuard.conf /etc/squid/squidGuard.conf_original

Descărcați fișierul de configurare squidGuard.conf de pe site-ul nostru folosind comanda wget din terminal:
wget -c squidGuard.conf

Copiați-l în locul fișierului vechi (cu drepturi de administrator):

cp squidGuard.conf /etc/squid/squidGuard.conf

După copierea fișierului de configurare, inițiem conversia listelor negre de text pe care le-ați descărcat și despachetat în formatul bazei de date Berkeley DB (comanda va rula ceva timp - trebuie să așteptați să se finalizeze) executând comanda de la administrator :

squidGuard -d -C toate

Dacă totul este făcut corect, atunci după comandă din terminal vor apărea o mulțime de mesaje despre crearea de noi fișiere de bază de date, iar la sfârșitul secvenței lor veți vedea ceva de genul:

2012-03-16 12:51:53 squidGuard 1.4 a început (1331887787.768)
2012-03-16 12:51:53 db actualizare finalizată
2012-03-16 12:51:53 squidGuard oprit (1331887913.657)

Ce va spune despre finalizarea cu succes a creării bazelor de date pe lista neagră. Apoi, setați drepturile serverului Squid la fișierele bazei de date executând comanda cu drepturi de administrator:

chown -R proxy:proxy /var/lib/squidguard/db/

Și reporniți serverul Squid executând în Debian ca root:

/etc/init.d/squid3 reporniți

După repornire, ca rezultat munca în comun Squid și SquidGuard vor funcționa redirecționând de pe site-uri nedorite către . În loc de aceasta, puteți pune orice altă pagină schimbând adresa ultima linie fișierul de configurare /etc/squid/squidGuard.conf.

Modificarea intrărilor în listele de domenii și adrese URL
Exemplu. Lângă fișierul domains.db din folderul /var/lib/squiguard/db/direction, creați un fișier domains.diff. Introducem o linie sau mai multe rânduri în ea, câte una pentru fiecare intrare:

Website (ceea ce înseamnă ștergerea acestui domeniu din baza de date)
sau +sysadmin -komi.ru (ceea ce înseamnă adăugarea acestui domeniu la baza de date)

Dam comenzi:

(actualizați bazele de date db din fișierele diff. În jurnalele lui squidguard, puteți vedea cât de mult a fost adăugat/scăzut.)

$ squid3 -k reconfigurează

(Recitiți setările fără a reporni.)
Nu este nevoie să ștergeți fișierul domains.diff sau să ștergeți intrări din acesta. Acest fișier va fi util în timpul unei actualizări globale a bazei de date. Și cu actualizări multiple, nu există duplicarea înregistrărilor în baza de date.

Puteți crea propriile reguli de redirecționare adăugând sau excluzând categorii de site nedorite. Din păcate, nu se poate obține protecție sută la sută, pentru că. site-uri noi cu conținut neadecvat apar tot timpul. Chiar dacă și actualizează constant listele negre. Dacă aveți nevoie de protecție puternică, atunci SquidGuard poate fi configurat să funcționeze cu o listă albă de site-uri permise, interzicând orice altceva - dar atunci va exista un set foarte limitat de site-uri.

Și a fost un singur moment! Să punem statistici despre cine, ce, unde și de ce, numit sarg

apt-get install sarg

Va trage o grămadă de pachete împreună cu el și nu e de mirare, deoarece are nevoie de un server web pentru a afișa rezultatele.

Personalizăm configurația (/etc/squid/sarg.conf) pentru noi înșine. Iată principalele linii cărora trebuie să le acordați atenție:

Access_log /var/log/squid/access.log
...
output_dir /var/www/squid-reports
...
set de caractere UTF-8

Creați ultimul director dacă nu există.
Lansăm un twill (ar fi bine să-i împingem lansarea în cron, aici nu o voi descrie... deocamdată)

Ura! Mergem din interiorul rețelei la serverul nostru, admirăm rapoartele la http://IP_SERVER/squid-reports/
Toți băieții sunt pregătiți. Dacă aveți întrebări, vă rugăm să întrebați, vă voi ajuta în orice fel pot.

Prin natura activității mele, am auzit destul de des de la fericiții proprietari ai Cisco ASA în trusa de baza livrare (fără module suplimentare scumpe precum CSC-SSM), în principiu, precum și alte routere SOHO\SMB ale acestui producător, plângeri despre filtrarea URL destul de slabă, proxy și alte bunătăți pe care le poate face chiar și cel mai simplu server proxy.

Cu toate acestea, există o cale de ieșire din această situație și este destul de simplă. În acest articol, vă voi arăta un exemplu despre cum funcționează pachetul Cisco ASA5510 + Squid, care face față perfect sarcinilor.

Vom presupune că avem un ASA complet configurat, care este un router către lume și un server simplu pe Linux (în cazul meu CentOS 5.6) cu un Squid proaspăt instalat. Squid trebuie să funcționeze în modul proxy invizibil.

Toată această economie este conectată prin intermediul protocolului WCCP. Fără să aprofundez prea mult, voi spune pe scurt că acesta este un protocol de redirecționare a conținutului și de stocare în cache web dezvoltat de Cisco. WCCP funcționează pe firmware versiune IOS 12.1 și o versiune ulterioară și are două versiuni ale acestui protocol: WCCPv1 și WCCPv2. Vom redirecționa tot traficul direcționat către lume către portul 80, folosind doar a doua versiune a protocolului, ca una mai extinsă.

Deci, să începem.
ASA va avea adresa 192.168.1.254, Linux - 192.168.1.253.
Mai întâi, să creăm obiectele la care ACL-urile noastre se vor aplica ulterior.
Vom avea 2.
Te intrebi de ce 2?
Voi răspunde - nu vrem ca computerul de administrare să treacă printr-un proxy).

Rețea obiect admin_pc host 192.168.1.10
obiect network local_net subnet 192.168.1.0 255.255.255.0

ACL-uri relevante:

Lista de acces redirect_to_squid extins deny tcp object admin_pc any eq www
lista de acces redirect_to_squid permis extins tcp obiect local_net orice eq www

Și activăm WCCP în sine:

Wccp web-cache redirect-list redirect_to_squid parola cisco
interfața wccp din interiorul redirecționării web-cache în

Explicatii:
1. Specificăm parola pentru a utiliza autentificarea MD5 între cisco și squid
2. Asigurați-vă că specificați interfața (în interior) care va asculta WCCP.

Aceasta completează configurarea ASA.
Să trecem la Squid. Nu este mult mai greu aici.
Schimbați modul calmar în transparent:

Wccp2_router 192.168.1.254

Și setările necesare pachete:

Wccp2_forwarding_method 1
wccp2_return_method 1
wccp2_service standard 0 parola=cisco

Explicatii:
1. wccp2_forwarding_method 1 înseamnă utilizarea tunelului GRE pentru a trimite pachete între router și squid. Routere Cisco utilizați această metodă specială, în timp ce comutatoarele L2 folosesc wccp2_forwarding_method 2 - L2 Redirect.
2. wccp2_return_method 1 - practic la fel, doar că aceasta este o metodă de returnare a pachetelor către router dacă calmarul decide brusc să nu le proceseze.
3. Utilizați un cache web non-dinamic (standard 0) cu parola specificată anterior pe ASA

Asta e tot, asta completează configurarea Squid. Trecem la a doua etapă - finalizarea cu un fișier.

După cum am menționat mai devreme, trebuie să ridicăm un tunel GRE între legăturile noastre, prin care va rula traficul web-cache:

Modprobe ip_gre
iptunnel adăugați modul wccp0 gre remote 192.168.1.254 local 192.168.1.253 dev eth0
ifconfig wccp0 192.168.1.253 netmask 255.255.255.255 up

Și asigurați-vă că închegeți tot traficul care vine prin tunelul GRE către portul de calmar folosind Iptables:

A PREROUTING -p tcp -m tcp -i wccp0 -j REDIRECT --to-ports 3128

Asa#sh ip wccp Informații globale WCCP: Informații despre router: Identificator router: 192.168.1.254 Versiune protocol: 2.0 Identificator serviciu: web-cache Număr clienți pentru grupul de servicii: 1 Număr rutere pentru grupul de servicii: 1 Total pachete s/w redirecționate: 464271 Mod serviciu: Lista de acces la serviciu deschis: -none- Total pachete abandonate Închis: 0 Lista de acces redirecționare: redirect_to_squid Total pachete refuzate Redirecționare: 15217 Total pachete nealocate: 1006 Lista de acces la grup: -none- Total mesaje refuzate la grup: 0 Eșecuri totale de autentificare: 0 Total pachete ocolite primite: 0 asa#sh ip wccp web-cache detaliu: 256 (100,00%) Pachete s/w Redirecționate: 44549 Timp de conectare: 1h07m Proces de pachete ocolite: 0 Rapid: 0 CEF: 0 Erori: 0

Totul este în ordine, totul funcționează.
Și acum este deja posibil să înființați un maraton: fixați SquidGuard pentru o filtrare mai fină, SARG pentru a afișa autorităților statistici frumoase etc. cui îi place ce. Dar aceasta este o altă poveste, dacă există interes, pot descrie aceste procese.

Vă mulțumesc pentru atenție, voi încerca să răspund la toate întrebările.

Timp plăcut, dragi cititori și oaspeți! Cu acest articol, voi începe descrierea lucrării Proxy de stocare în cache SQUID. Acest articol va fi în mare parte teoretic introductiv.

Ce este un server proxy și ce este squid

Voi începe cu elementele de bază. calmar este cache server proxy pentru HTTP, FTP și alte protocoale. Server proxy pentru HTTP este un program care face cereri HTTP în numele unui program client (fie acesta un browser sau alt software). proxy poate fi stocarea în cache sau nu stocarea în cache. stocarea în cache,în consecință, salvează toate cererile într-un fel de stocare pentru o întoarcere mai rapidă către clienți și nu stocarea în cache- traduce pur și simplu HTTP, ftp sau alte solicitări. Anterior, caching-ul de trafic făcea posibilă realizarea unor economii de trafic destul de semnificative, dar în prezent, odată cu creșterea vitezei de internet, acest lucru și-a pierdut puțin din relevanță. Serverul proxyA poate fi încorporat ierarhie pentru a procesa cererile. În același timp, serverele proxy A interacționează între ele prin Protocolul ICP.

Calmar proiectat și poate rula pe majoritatea sisteme de operare(atât Unix, cât și Windows). Licențiat sub GNU GPL. Capabil să proceseze și să memoreze în cache solicitările HTTP, FTP, gopher, SSL și WAIS (eliminate în 2.6), precum și DNS. Cele mai frecvente solicitări sunt stocate în memorie cu acces aleator. Momentan există 2 versiuni stabile de calmar: 2.7 și 3.1 . Diferențele pot fi găsite în linkurile de la sfârșitul articolului. Toate dependențele la instalarea din pachete sunt aceleași. Fișierul de configurare al versiunii 2 este compatibil cu versiunea 3, dar versiunea 3 adaugă noi opțiuni. În articol voi lua în considerare versiunea squid3. De asemenea, merită remarcat faptul că, dacă instalați squid3 , atunci acesta își va păstra fișierele de configurare /etc/squid3, precum și jurnalele implicite din squid3 sunt în director /var/log/squid3/, dar nu /var/log/squid/, la fel de mulți analizoare de jurnal „le place să numere”.

De multe ori cuvântul " stocarea în cache". Și ce este, de fapt, asta - stocarea în cache? aceasta o modalitate de a stoca obiecte solicitate de pe Internet pe un server care este mai aproape de computerul solicitant decât de cel original. Un obiect Internet este un fișier, document sau răspuns la un apel către un serviciu furnizat pe Internet (cum ar fi FTP, HTTP sau Gopher). Clientul solicită un obiect Internet din memoria cache a proxy-ului; dacă obiectul nu este încă stocat în cache, atunci serverul proxy primește obiectul (fie de la gazda specificată la adresa URL solicitată, fie de la cache-ul părinte sau vecin) și îl livrează clientului.

Moduri Squid Proxy

Proxy-ul Squid poate funcționa în următoarele trei moduri principale:

modul transparent

În acest mod HTTP, conexiunea realizată de clienți este redirecționată către un server proxy fără cunoștința lor sau configurarea explicită. În acest mod, nu este necesară configurarea clientului. Defecte aceasta metoda : este necesară configurarea NAT și redirecționarea traficului, autentificarea clientului nu funcționează, cererile FTP și HTTPS nu sunt redirecționate.

Modul de autentificare

Pentru a funcționa în acest mod, clienții trebuie configurați să funcționeze cu un server proxy (adresa serverului proxy trebuie specificată în setările de conexiune). Clienții pot fi autentificați și autorizați prin Kerberos, Ldap, NTLM, IP și Radius. Este posibil să construiți interacțiune cu serverele Microsoft Director activ prin autentificarea clienților - membri ai domeniului folosind protocolul Kerberos, iar apoi autorizarea membrilor grupurilor de domenii folosind LDAP în mod transparent (utilizatorul își introduce parola doar la înregistrarea în domeniu). Pentru grupurile autorizate se poate aplica diverse setari controlul accesului și QoS (pool de întârziere).

Proxy invers

Serverul proxy memorează în cache datele de ieșire. Proxy-ul invers Squid primește date de la serverul HTTP în numele clientului și le trimite înapoi clientului (de exemplu, pe Internet). Acest mod vă permite să:

  • Utilizarea memoriei cache, care reduce sarcina pe serverul HTTP;
  • Echilibrarea sarcinii între serverele HTTP;
  • Mascarea serverelor HTTP și caracteristicile acestora;
  • Prevenirea atacurilor web pe servere.

Diagramele modului de funcționare SQUID

modul transparent

modul invers

modul de autentificare

În diagramele de mai sus, săgețile verzi indică fluxurile de trafic proxy. Mișcarea acestor fluxuri în Linux este cel mai adesea controlată de forțele și setările browserului. În plus, foarte des, funcțiile routerului și proxy-ului sunt îndeplinite de o singură mașină.

Instalarea SQUID

Înainte de a instala și configura squid, trebuie de asemenea să vă asigurați că mașina pe care va rula squid are acces la rețea externă iar clienții care vor folosi acest proxy au acces la această mașină. Este posibilă instalarea serverului proxy squid la fel ca alte software-uri pe Linux căi diferite descrise în articol. Voi atinge modul de instalare din depozitul din Debian. Deci, pentru a instala squid, trebuie să instalați pachetul squid3, pentru a face acest lucru, executați următoarea comandă:

Gw ~ # aptitude install squid3 Următoarele pachete NOI vor fi instalate: libltdl7(a) squid-langpack(a) squid3 squid3-common(a) 0 pachete actualizate, 4 nou instalate, 0 pachete marcate pentru eliminare și 0 pachete neactualizate . Trebuie să obțineți 2 157 kB arhive. După despachetare, vor fi folosiți 10,3 MB. Doriți să continuați? y Get:1 http://ftp.ru.debian.org/debian/squeeze/main libltdl7 i386 2.2.6b-2 Get:2 http://ftp.ru.debian.org/debian/squeeze/main squid- langpack all 20100628-1 Get:3 http://ftp.ru.debian.org/debian/squeeze/main squid3-common all 3.1.6-1.2+squeeze2 Get:4 http://ftp.ru.debian.org /debian/ squeeze/main squid3 i386 3.1.6-1.2+squeeze2 Obține 2.157 kB în 9s (238 kB/s) Se selectează un pachet libltdl7 neselectat anterior. (Se citesc baza de date... pe acest moment 41133 fișiere și directoare instalate.) Se despachetează pachetul libltdl7 (din fișierul.../libltdl7_2.2.6b-2_i386.deb)... Se selectează pachetul squid-langpack neselectat anterior. Pachetul squid-langpack este dezambalat (din fișierul.../squid-langpack_20100628-1_all.deb)... Selectarea unui pachet squid3-common neselectat anterior. Pachetul squid3-common este dezambalat (din fișierul.../squid3-common_3.1.6-1.2+squeeze2_all.deb)... Selectarea unui pachet squid3 neselectat anterior. Se despachetează pachetul squid3 (din fișierul.../squid3_3.1.6-1.2+squeeze2_i386.deb)... Se procesează declanșatoarele man-db... Se configurează pachetul libltdl7 (2.2.6b-2)... Se configurează squid-langpack pachet (20100628-1) ... Configurarea pachetului squid3-common (3.1.6-1.2+squeeze2) ... Configurarea pachetului squid3 (3.1.6-1.2+squeeze2) ... Crearea proxy HTTP Squid 3.x Structura directorului spool 2012/02/15 21:29:41| Crearea directoarelor de schimb Repornirea Squid HTTP Proxy 3.x: squid3Crearea Squid HTTP Proxy 3.x structura cache-ului... (avertisment). 2012/02/15 21:29:43| Crearea directoarelor de schimb.

După cum puteți vedea, la instalarea pachetului, a existat o încercare de a crea directorul cache, ci pentru că nu este configurat, avertizarea a căzut. Același fel, calmar adăugat la pornire, rulare și acceptare a conexiunilor pe toate interfețele. Dar de atunci nu este configurat, accesul la paginile de Internet prin server este limitat. Configurare calmar situat în /etc/squid3/squid.confși constă din mai mult de 5,5 mii de linii și sintaxa sa este practic aceeași cu configurația oricărui alt serviciu. Să te grăbești să schimbi unele setări într-o tăietură nu merită. Atunci nu greblați. Să ne uităm la configurația care ne este oferită implicit fără comentarii și linii goale:

Gw ~ # grep -v ^# /etc/squid3/squid.conf | grep -v ^$ acl manager proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl SSL_ports port 443 acl Safe_ports port 80_port acl Safe_ports # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # porturi neînregistrate acl Safe_ports port 280 # http-mgmt acl port Safe_ports 48_acl # port sigur 48_acl # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access permit manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access permit localhost http_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern 0 20% 4320

După cum puteți vedea, în configurația implicită, serverul proxy funcționează și permite accesul doar de la adresele 127.0.0.0/8. Ar trebui să revizuiți cu atenție întreaga listă și să comentați liniile cu porturi de servicii care nu sunt necesare sau utilizate. O înțelegere mai completă a acestei configurații va fi după citirea următoarelor secțiuni. Acea. dacă lansăm browserul consolei lunx indicând proxy-ul nostru, putem vedea pagina dată:

Gw ~ # # rulați browserul cu pagina ya.ru specificată: gw ~ # http_proxy=http://127.0.0.1:3128 lynx ya.ru Căutarea „ya.ru” mai întâi gw ~ # # în jurnal vedem o referință la pagina specificată: gw ~ # cat /var/log/squid3/access.log 1329527823.407 110 127.0.0.1 TCP_MISS/200 9125 GET http://ya.ru/ - DIRECT/93.158.134.203 text/html

Unele opțiuni din fișierul de configurare squid pot fi folosite de mai multe ori (ex. acl). Unii parametri, în special cei cu o singură valoare, pot fi utilizați o singură dată. În acest caz, atunci când utilizați acest parametru de 2 sau mai multe ori, se va folosi ultima valoare. De exemplu:

Logfile_rotate 10 # Valori multiple - finala va fi 5 logfile_rotate 5

managementul calmarilor

Parametrii cu care a fost construit squid-ul distribuției dvs. pot fi vizualizați cu comanda squid3 -v. De exemplu, pe Debian squeezy, squid este construit cu opțiunile de mai jos:

Prefix=/usr - prefix pentru alte chei: --mandir=$(prefix)/share/man - director de stocare a paginii de manual --libexecdir=$(prefix)/lib/squid3 - director cu module executabile (inclusiv ajutoare) -- sysconfdir=/etc/squid3 - director pentru stocarea configurației --with-logdir=/var/log/squid3 - director pentru stocarea jurnalelor și multe altele. alte...

Instalarea calamarului

Descrierea setărilor squid3 Voi începe cu setări de bază, pe care este de dorit să îl faceți atunci când configurați orice configurație de server proxy. Configurația squid se află în /etc/squid3/squid.conf, acesta este fișierul de configurare principal, care conține toate setările. (LA distribuții Debianși RedHat, parametrii din fișierele de configurare de pornire sunt, de asemenea, vizualizați la pornire /etc/default/squid3și /etc/sysconfig/squid3, respectiv). De asemenea, am menționat că sunt peste 5 mii de linii și că nu merită să te grăbești imediat să configurezi ceva fără să înțelegi. sintaxa de configurare squid3 clasic: liniile cu # sunt comentarii, parametrii sunt linii " valoarea parametrului", puteți utiliza . Fișierul de configurare este împărțit în secțiuni pentru comoditate, dar este important să rețineți că parametrii sunt analizați „de sus în jos” în ordinea priorității. De asemenea, folosind include parametrul puteți include fișiere de configurare externe.

În mod implicit, rezoluția numelui gazdei în care rulează Squid este realizată gethostname(),în funcție de setările DNS, uneori nu poate determina fără ambiguitate numele care va apărea în jurnalele și rezultatele de eroare „ Generat... de server.com (squid/3.0.STABLE2)". Pentru a înregistra corect numele gazdei, trebuie să introduceți acest nume (FQDN??) în parametru:

Visible_hostname myproxy

În mod implicit, squid acceptă conexiuni pe toate interfețele. Dacă serverul nostru privește lumea exterioară cu una dintre interfețele de rețea, atunci este de dorit să se limiteze conexiunile numai pe interfața LAN (de exemplu, 10.0.0.10/24). Responsabil pentru asta parametrul http_port:

Http_port 10.0.0.10:3128

Cum funcționează acești parametri poate fi văzut în următoarea listă:

Gw ~ # # testează demonul înainte de a-l configura: gw ~ # netstat -antp | grep squ tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 25816/(squid) gw ~ # # modificări făcute: gw ~ # grep ^http_port /etc/squid3/squid.conf http_port 10.0.0.80 gw:312.10 # # reîncărcați configurația gw modificată ~ # /etc/init.d/squid3 reîncărcarea fișierelor de configurare Squid HTTP Proxy 3.x. Terminat. gw ~ # # verificați funcționarea cu configurația schimbată: gw ~ # netstat -antp | grep squ tcp 0 0 10.0.0.10:3128 0.0.0.0:* ASCULTĂ 25816/(calamar)

După cum puteți vedea, acum demonul funcționează numai pe interfața rețelei specificate. De asemenea, merită remarcat faptul că noile versiuni de calmar (<3.1) поддерживают задание нескольких параметров http_port. При этом, у разных параметров могут быть указанны дополнительные ключи такие как intercept, tproxy, accel и др., например:

Gw ~ # grep ^http_port /etc/squid3/squid.conf http_port 10.0.0.10:3128 http_port 10.0.0.10:3129 tproxy

Acești parametri setează modurile de funcționare a serverului proxy. De exemplu, tproxy (sintaxa veche este transparentă) specifică . Aceste moduri merită articole separate și pot fi luate în considerare în viitor.

Acum trebuie să configurați un computer client și să utilizați Internetul. Dar, în mod implicit, accesul este permis numai de la localhost și atunci când încearcă să acceseze web, utilizatorul va primi o eroare „Acces refuzat”. Jurnalul /var/log/squid3/access.log va conține ceva de genul acesta:

1329649479.831 0 10.0.1.55 TCP_DENIED/403 3923 GET http://ya.ru/ - NONE/- text/html

Pentru ca clienții LAN să funcționeze, trebuie configura permisiunile cu liste de control al accesului.

Configurarea accesului calmarului

De fapt setare de acces se află în descrierea obiectului acces prin parametrul acl, și apoi rezoluţie sau interzicerea muncii obiect acl descris cu Parametrul „http_access”.. Cel mai simplu format de date de configurare este următorul:

Acl list_name select_type characteristics_selection_type

Unde acl- descrierea parametrilor lista de control acces, al cărui nume este dat de valoare nume_listă. Numele este sensibil la majuscule. tip_selecție specifică tipul la care este dat în continuare caracteristica tip_selecție. Această caracteristică poate lua valori utilizate frecvent precum src(de la sursă) - sursa cererii, dst- adresa de destinatie, arp- Adresa mac, srcdomainși dstdomain- numele de domeniu al sursei și respectiv al destinației, port- port, proto- protocol, timp- timp și multe altele. În consecință, valoarea caracteristici_tip_selecție se va forma in functie de tip_selecție.

Puteți specifica mai multe șiruri de caractere acl cu aceleași nume și selecție_types, caz în care datele acl vor fi combinate într-o singură listă cu o operație OR logică. De exemplu:

site acl dstdomain site.com acl site dstdomain site.org # la fel ca: acl site dstdomain site.com site.org

Cu cuvinte, sună așa: lista de acces numită site deține toate cererile trimise către site-ul site.com SAU site.org. De asemenea, escape_names sunt sensibile la majuscule și minuscule, ceea ce înseamnă că site-ul acl și site-ul acl sunt 2 liste de acces diferite.

Odată ce listele de acces au fost formate, folosind parametrul http_access permite sau interzice accesul la ACL specificat. Formatul general de apel este:

Http_access allow|deny [!]list_name

Unde, http_access- parametru care specifică regula de autorizare ulterioară ( permite) sau interdicții ( nega) acces specificat mai jos nume_listă. În acest caz, semnul exclamării opțional inversează valoarea numelui listei. Adică, cu un semn de exclamare, valoarea nume_listă va suna ca toți, cu excepția celor care aparțin acestei liste. În plus, puteți specifica mai multe liste separate printr-un spațiu, apoi accesul va fi permis dacă aparține tuturor listelor specificate. În acest caz, toate regulile de autorizare trebuie specificate înainte de toate regulile de refuz:

http_access deny all

Poate apărea o întrebare rezonabilă: de ce să setăm această regulă dacă, de exemplu, permitem doar acls selectați să acceseze calmarul? La urma urmei, restul, care nu se încadrează în acest acl, așa că „treceți”... E simplu. În mod implicit, squid folosește regula opusă de permis/refuzare. De exemplu:

# avem o singură regulă de permis pentru un utilizator acl: http_access allow user # dacă clientul nu se află în acest acl atunci când accesează squid, atunci i se va aplica acțiunea de deny. # Și dacă avem două reguli http_access allow user http_access deny user2 # și clientul nu este inclus nici în acl user sau acl user2, atunci i se va aplica allow. # Adică, acțiunea opusă ultimului utilizator http_access deny2

Aceasta, după cum se spune - fundațiile fundațiilor. Să ne uităm la un exemplu simplu. Să presupunem că avem 2 rețele 10.0.1.0/24 și 10.0.0.0/24, precum și o gazdă 10.0.4.1, cărora trebuie să li se permită accesul la Internet. Pentru a permite accesul, trebuie să creați o descriere a noii liste de acces în secțiunea „CONTROLUL ACCES” a fișierului squid.conf:

acl lan src 10.0.1.0/24 10.0.0.0/24 acl lan src 10.0.4.1

Pentru mai multă comoditate, puteți seta aceste reguli într-un fișier separat, specificând calea către el caracteristicile tipului_selecției. Aici:

Gw ~ # # creați un director separat pentru stocarea listelor de acces gw ~ # mkdir /etc/squid3/acls/ gw ~ # # puneți subrețelele și gazdele noastre într-un fișier separat gw ~ # vim /etc/squid3/acls/lan.acl gw ~ # cat /etc/squid3/acls/lan.acl 10.0.1.0/24 10.0.0.0/24 10.0.4.1 gw ~ # # descrie fișierul creat în configurație (calea trebuie inclusă între ghilimele) gw ~ # grep lan.acl /etc /squid3/squid.conf acl lan src "/etc/squid3/acls/lan.acl"

Permite accesul la Internet listei de acces lan creată și spune-i calamarului să recitească fișierul de configurare:

Gw ~ # grep lan /etc/squid3/squid.conf | grep acce http_access allow lan gw ~ # service squid3 reload Reîncărcarea fișierelor de configurare Squid HTTP Proxy 3.x. Terminat.

Pentru a rezuma această secțiune, pe scurt, acl identifică o solicitare Web, iar http_access permite sau respinge cererea identificată. Acum clienții noștri locali sunt bucuroși să folosească Internetul, având configurat anterior browserul!

Configurarea setărilor de cache pentru calmar

Un punct important în amenajarea calamarului este setarea opțiunilor de cache în squid. Locația memoriei cache este setată parametrul cache_dirîn calmar.conf. Formatul parametrului este următorul:

Mărimea căii tip cache_dir L1 L2

Unde, tip de- acesta este algoritmul de generare a memoriei cache, poate: ufs (sistem de fișiere Unix), aufs (async ufs), diskd(procese externe pentru a evita blocarea squid pe disc I/O). Se recomandă utilizarea ufs deși unele laude aufs. cale- specifică locația cache-ului în sistemul de fișiere (trebuie să existe și să aibă acces de scriere pentru utilizatorul sub care rulează squid - de obicei un proxy). Marimea- setează dimensiunea maximă după care va începe ștergerea cache-ului. Există multe holivar în rețea pentru acest parametru. Dimensiunea ideală a memoriei cache este de 2 GB până la 10 GB, în funcție de numărul de clienți. Aproximativ 1 GB cache pentru fiecare 100.000 de solicitări/zi. Eu raman cu 5 GB. În Squid, fiecare obiect în cache este localizat într-un fișier separat, fișierele în sine nu sunt aruncate într-un singur loc, dar este utilizată o ierarhie de directoare pe două niveluri. Numărul de cataloage de 1 și 2 niveluri și determinați parametrii L1 și L2. Aceste valori pot fi lăsate implicite. Dar pentru orientare în situație, voi cita din bog.pp.ru:

Experimentul a arătat că, cu un cache de 700 MB, sunt folosite doar 2 directoare de primul nivel. Adică, pentru o structură standard de directoare cache, un milion de obiecte (9 GB) se potrivesc „confortabil” în ea, dacă sunt mai multe, atunci trebuie să creșteți numărul de directoare de nivel superior

Puteți folosi mai multe cache_dir. Acest lucru are un efect pozitiv asupra performanței, mai ales dacă plasați memoria cache pe discuri diferite. Puteți accelera și mai mult memoria cache plasând memoria cache în tmpfs. Pentru fiecare parametru cache_dir posibil în secțiunea de opțiuni definiți opțiunile numai în citire (numai în citire) și dimensiunea maximă (dimensiunea maximă a obiectului).

Dimensiunea maximă a unui obiect din cache este determinată de parametrul maximum_object_size, valoarea implicită este de 4 MB. Am crescut această valoare la 60 MB, pentru că. angajații din rețeaua locală trebuie adesea să descarce fișiere de același tip până la dimensiunea specificată:

Dimensiunea_obiectului_maximum 61440 KB

De asemenea? au si parametrul minim_object_size responsabil pentru dimensiunea minimă a obiectului, implicit valoarea acestuia este „0”, adică este dezactivat. Recomand creșterea valorii acestui parametru la 2-3 KB, ceea ce va reduce sarcina de pe disc la căutarea obiectelor mici.

Berbec, folosit de calamar este instalat parametrul cache_mem, valoarea implicită este 256 MB (în versiunea 3.1). Am lăsat această valoare ca implicită. Merită să schimbați această valoare doar dacă calmarul vă întreabă despre asta în jurnalele. După aceste modificări, trebuie să reporniți squid, aceasta va crea structura de director:

Gw ~ # service squid3 start Pornirea Squid HTTP Proxy 3.x: squid3Crearea Squid HTTP Proxy 3.x structura cache... (avertisment). 2012/02/19 22:58:21| Crearea directoarelor de schimb 2012/02/19 22:58:21| /var/spool/squid3 există 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/00 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/01 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/02 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/03 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/04 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/05 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/06 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/07 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/08 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/09 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/0A 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/0B 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/0C 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/0D 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/0E 2012/02/19 22:58:21| Realizarea directoarelor în /var/spool/squid3/0F .

Sunt descrise multe întrebări interesante și răspunsuri la acestea cu privire la utilizarea memoriei și a cache-ului squid.Pe aceasta, putem considera o soluție tipică pentru configurarea unui server proxy completă.

exemplu de configurare proxy transparent squid

Ce este proxy transparent? Acesta este modul de operare al serverului proxy atunci când clientul nu este configurabil să lucreze printr-un proxy și să trimită cereri către rețea folosind protocolul HTTP, ca și cum clientul browser ar lucra direct cu serverul web. În același timp, prin forțe (în linux - ) cererile HTTP de ieșire sunt direcționate către portul pe care rulează proxy-ul. Serverul proxy, la rândul său, convertește cererile HTTP în solicitări de protocol de server proxy și trimite răspunsuri către client ca pe un server web. Acea. clientul interacționează în mod transparent cu serverul proxy.

Este important să înțelegi și să cunoști! Această metodă acceptă numai protocolul HTTP, și nu acceptă Gopher, FTP sau alte tipuri de proxy. De asemenea, Squid nu poate funcționa în modul transparent și în modul de autentificare în același timp.

Pentru a configura modul transparent, trebuie să:

1. Setați modul transparentîn setările proxy. Acest lucru se face în parametrul http_port, de exemplu:

Http_port ip:port transparent

2. Încheierea utilizatorilor regula corespunzătoare portului dorit folosind iptables:

Iptables -t nat -A PREROUTING -i incoming_interface_name -s LAN_subnet -p tcp --dport 80 -j REDIRECT --to-port squid_port, exemplu: iptables -t nat -A PREROUTING -i eth1 -s 10.0.0.0/24 - p tcp --dport 80 -j REDIRECT --la-port 3128

Toate. Este posibil să vă bucurați de utilizatorii împachetati și nebănuiți pe serverul nostru proxy.

Depanare

Pentru inceput, diagnosticarea operațiunii de calmar se află în vizualizarea jurnalelor situat în /var/log/squid3. Cele mai multe probleme sunt rezolvate în acest fel. Dacă acest lucru nu a ajutat la rezolvarea problemei, atunci treceți demonul în modul de depanare cu comanda squid3 -k depanare problema va fi mai usor de gasit. De fapt, ce este un buștean de calmar? Fișierele jurnal conțin diverse informații despre încărcarea și performanța Squid. Pe lângă informațiile de acces, /pre mai scrie în jurnal erorile de sistem și informații despre consumul de resurse, cum ar fi, de exemplu, memoria sau spațiul pe disc.

Format de fișier jurnal Squid este un șir de valori separate prin unul sau mai multe spații:

time.ms response_time ip_src Squid_req_status/HTTP_status byte_snd metoda URL utilizator squid_her_status/ip_dst MIME

  • timp- ora în format unix (număr de secunde de la 00:00 la 1970.01.01)
  • Domnișoară- milisecunde până la 3 cifre
  • timp de raspuns- timp de răspuns, milisecunde
  • ip_src- adresa IP sursă
  • squid_req_status- starea cererii squid (de exemplu, TCP_HIT pentru obiectele memorate anterior în cache, TCP_MISS dacă obiectul solicitat nu este preluat din memoria cache locală, UDP_HIT și UDP_MISS la fel pentru cererile de frați)
  • Stare_HTTP- starea protocolului http (200 pentru succes, 000 pentru cereri UDP, 403 pentru redirecționări, 500 pentru erori)
  • byte_snd- transmis, octeți ca răspuns, inclusiv antetul HTTP
  • metodă- metoda de solicitare GET sau POST
  • URL- adresa URL solicitată
  • utilizator- nume de utilizator autorizat
  • squid_her_status- starea ierarhiei calmarilor - Rezultatul solicitărilor către cache-urile fraților/părinților
  • ip_dst- adresa IP a nodului solicitat
  • MIMA de tip mimic

Să ne uităm la un exemplu:

1329732295.053 374 10.0.1.55 TCP_MISS/200 1475 GET http://www.youtube.com/live_comments? - DIRECT/173.194.69.91text/xml

După cum puteți vedea, cererea a fost făcută la 1329732295.053, răspunsul serverului la distanță a fost de 374 ms, gazda care a solicitat pagina are IP 10.0.1.55, obiectul solicitat nu a fost transferat din cache-ul local (TCP_MISS), serverul codul de răspuns a fost 200, 1475 de octeți au fost trimiși către client folosind metoda GET, a fost solicitat adresa URL http://www.youtube.com/live_comments?, numele de utilizator nu a fost definit, obiectul a fost primit direct de la server cu IP 173.194.69.91, textul a fost transmis, deoarece mime-text/xml. Aici.

Câteva puncte finale despre calmar3

În articol, am trecut în revistă principiile de bază ale serverului proxy, precum și setările de bază care vă permit să implementați cel mai simplu server de cache, precum și să organizați funcționarea squid într-un mod transparent (transparent). Squid acceptă mai multe opțiuni de autorizare (prin IP, LDAP, MySQL, NTLM etc.), capacitatea de a limita lățimea de bandă a canalului și de a controla accesul la resursele de Internet. Voi lua în considerare munca unui calmar cu diferite metode de autorizare și exemple de control al traficului în articolele următoare.

Un server proxy este un lucru foarte convenabil și extrem de util, care poate fi mai util ca niciodată într-o serie de cazuri. Serverele proxy pot fi de diferite tipuri, unul dintre cele mai populare tipuri de astfel de servere este un server proxy transparent. Un server proxy transparent este un server la care poate fi conectat fără a utiliza programe speciale și setări suplimentare ale browserului web. Această stare de lucruri poate fi atinsă printr-o setare specială de firewall, care are ca rezultat redirecționarea întregului trafic de la portul 80 către portul aparținând serverului proxy.

Ce este un server proxy transparent?

Un server proxy transparent este un server la care poate fi conectat fără a utiliza programe speciale și setări suplimentare ale browserului web. Această stare de lucruri poate fi atinsă printr-o setare specială de firewall, care are ca rezultat redirecționarea întregului trafic de la portul 80 către portul aparținând serverului proxy.

Această setare are o serie de caracteristici și efecte interesante, dintre care unul este că utilizatorii unui astfel de sistem nici măcar nu vor ști că accesează un anumit site printr-un server proxy, deoarece această setare vă permite să scăpați complet de nevoia de configurarea manuală a clienților web, ceea ce este foarte practic și convenabil. Acest efect determină în mare măsură popularitatea pe care o are un server proxy transparent în timpul nostru.

Cum să funcționeze proxy transparent?

Pentru ca proxy transparent să funcționeze corect, routerul trebuie configurat corect. După cum știți, majoritatea rețelelor moderne de computere folosesc un router pentru a conecta rețeaua locală și internetul. Esența configurării routerului în acest caz este redirecționarea întregului trafic de pe portul 80 către serverul proxy transparent squid. Există cazuri, mai ales pentru rețelele mici, când poți rula un server proxy chiar și pe un router, ceea ce este foarte convenabil.

De asemenea, atunci când configurați un server proxy transparent, este posibil să aveți nevoie de o mulțime de tabele IP firewall, care pot fi foarte utile în cazul oricăror probleme de redirecționare a traficului.

Pentru ce este un proxy transparent?

După cum am menționat mai sus, un server proxy transparent are propriile sale avantaje, care îl fac atât de utilizat. Principalul avantaj al acestui tip de proxy este că clientul care va folosi un server proxy transparent nu trebuie să configureze nimic, ceea ce este foarte convenabil și confortabil pentru clientul însuși. Tot ce trebuie făcut este să organizați corect redirecționarea traficului pe router, ceea ce trebuie să facă administratorul de rețea, după care toți participanții din această rețea se vor putea bucura de toate beneficiile pe care le are un server proxy. În ceea ce privește avantajele serverelor proxy și capacitățile acestora, se pot distinge următoarele:

  • Anonimat. Un server proxy vă permite să vă ascundeți propria adresă IP atunci când vizitați un anumit site, ceea ce este foarte convenabil dacă sunteți interzis pe orice site sau nu doriți să vă arătați prezența dintr-un alt motiv.
  • Comprimarea datelor. Înainte de a transmite informații către utilizatorul final, serverul proxy le comprimă, ceea ce vă permite să economisiți destul de bine traficul de rețea.
  • Limitarea accesului. Serverul proxy oferă și opțiuni foarte bune pentru restricționarea accesului, de exemplu, vă permite să refuzați accesul la unele site-uri sau să restricționați traficul către anumiți utilizatori dacă este necesar.

După cum puteți vedea, proxy-urile, și în special proxy-urile transparente, au o serie de avantaje și puncte forte, așa că, dacă doriți să le utilizați și pe acestea, proxy-ul transparent al lui Squid ar putea fi o alegere foarte bună pentru dvs.