Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 7, XP
  • Crearea unui server pe linux squid. Instalarea Squid - Hosting Encyclopedia

Crearea unui server pe linux squid. Instalarea Squid - Hosting Encyclopedia

Configurarea serverului proxy Squid

Foarte des avem nevoie de un proxy. De exemplu, aveți un IP gri sau sunteți un utilizator fericit al internetului prin satelit. Descărcarea ceva de pe site-uri precum Rapidshare este nerealistă. Aici calamarul ne va ajuta.

Pentru a instala un proxy, aveți nevoie de un server pe virtualizarea KVM. Serverele proxy nu sunt permise pe alte virtualizări.

O versiune mai avansată a articolului meu poate fi găsită pe site-ul Kursk LUG, unde am luat în considerare și posibilitatea utilizării calmarului de către utilizatorii casnici, precum și integrarea sistemului de compresie a traficului Globax sau Toonel în cascadă în calmar.

Instalați calmar

cd / usr / ports / www / squid && make BATCH = yes install

Configurare calmar

Un pic despre acl și reguli

Inima configurației de calmar este acl(lista de control acces) și reguli.
În primul rând, trebuie să înveți cum funcționează acl. ACL-urile au următorul format:

Acl<имя> <тип> <содержание>

De exemplu, acest acl descrie două mașini utilizator cu IP-uri (tip src) 192.168.0.1 și 192.168.0.2

Acl comps src 192.168.0.1/32 192.168.0.2/32

Acum să ne uităm la reguli.
Regulile sunt în următorul format:

<тип_правила> <действие>

În această etapă, trebuie să înveți că regulile unu tipurile sunt verificate înainte primul reguli de executare. Acțiunea acestei reguli va fi executată, iar verificarea altor reguli de acest tip va fi oprită. Exemplu:

Acl all src 0/0 acl vasya src 192.168.1.12/32 http_access permit vasya http_access deny all

Reguli de tip http_access acestea sunt reguli care permit sau interzice accesul prin http. Luați în considerare acțiunea pasajului de mai sus. acl all ne indică toate adresele IP. Și acl vasya indică un ip 192.168.1.12
Verificarea va avea loc astfel:
1) http_access permit vasya Dacă un utilizator de la această adresă IP se află printr-un proxy, îi vom permite accesul. Verificarea se va opri, a patra linie nici măcar nu va fi verificată.
2) dacă proxy-ul este folosit de un utilizator care nu este de pe acest IP, atunci regula de pe linia 3 nu va fi executată și vom trece la regula de pe linia 4. Deoarece orice IP este potrivit pentru acl all, această regulă va fi executată și vom bloca accesul. reguli suplimentare nu vor fi verificate... Astfel, am interzis folosirea proxy-urilor pentru toată lumea, cu excepția lui Vasya.

Să luăm în considerare o greșeală comună bazată pe exemplul anterior:

Acl all src 0/0 acl vasya src 192.168.1.12/32 http_access deny all http_access permit vasya

În acest caz, nici măcar Vasya nu va putea folosi proxy-ul. Deoarece am blocat accesul tuturor cu regula de pe linia 3, aceasta a fost executată, iar regula de pe linia 4 nici măcar nu va fi verificată. Acordați o atenție deosebită ordinii regulilor de același tip.

Creați configurația calmarului

Să începem să scriem configurația. O voi analiza folosind configurația mea ca exemplu.

Mai întâi, în folderul / etc / squid, creați folderul acls. În el am creat 3 fișiere: bannere, nobanners, 1banners
Fișierul bannere stochează expresia regulată a reclamelor și a bannerelor care vor fi tăiate. Excepțiile sunt stocate în nobanner-uri, adică acele pagini și imagini care vor fi încărcate chiar dacă există o regulă în bannere sub care se încadrează. Fișierul 1banners stochează expresii regulate care descriu bannerele care vor fi tăiate primul. Conținutul fișierelor mele de filtrare a anunțurilor va fi listat la sfârșitul articolului.

Ca root, creați fișierul /etc/squid/squid.conf și începeți să adăugați liniile la acesta:

Specificați portul pe care va funcționa proxy-ul: (ATENȚIE !! Nu setați niciodată porturi standard precum 8080 80 sau 3128 dacă nu doriți ca proxy-ul să fie ușor detectat)

Http_port 1234

Să specificăm numele nodului pe care este instalat squid. Îți poți afla numele alergând uname -n

Nume_gazdă_vizibil dimon4eg

Dezactivați icp

Icp_port 0

Folosind acl cu expresii regulate, indicăm paginile care nu vor fi stocate în cache

Acl donocache urlpath_regex cgi-bin user submit no_cache deny donocache

Creați un folder / var / spool / squid și chmod 777 / var / spool / squid
Să descriem cantitatea de cache și cache „rapidă” de pe hard disk. Se recomandă să setați cantitatea de cache rapidă la cel mult 32 de metri pentru a economisi RAM.

Cache_mem 32 MB cache_dir ufs / var / spool / squid 1000 16 256

În mod similar, creați folderele / var / log / squid și indicați unde să stocați jurnalele

Cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log

Procesați tabelul mime și pid

Tabel_mime /etc/squid/mime.conf nume_fișier_pid /var/run/squid.pid

Setări FTP prin proxy

Ftp_user [email protected] ftp_list_width 32 ftp_passive pe ftp_sanitycheck activat

Utilitate acl

Acl all src 0/0 acl SMTP portul 25

Lista de ip de la care este permis proxy-ul. Asigurați-vă că specificați 127.0.0.1 și adresa serverului însuși în LAN. În continuare, vom indica toți utilizatorii care au acces. (ATENȚIE, asigurați-vă că dezactivați accesul tuturor.)

Acl doallow src 192.128.0.2/32 127.0.0.1/32

Să setăm porturile care sunt permise

Acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 563 5190 5552 acl Safe_ports port 777

Locația fișierelor cu reguli pentru tăierea reclamelor. Comutatorul -i înseamnă a face regulile să nu țină seama de majuscule și minuscule

Acl bannere url_regex -i "/ etc / squid / acls / bannere" acl 1banners url_regex -i "/ etc / squid / acls / 1banners" acl nobanners url_regex -i "/ etc / squid / acls / nobanners"

Acum să descriem regulile

Http_access deny 1banners http_access deny bannere! Nobanners http_access deny! Safe_ports http_access deny SMTP http_access permite doallow http_access deny all

Interziceți accesul icp

Icp_access refuză tot

Aplicații

Textul complet al meu squid.conf

http_port 1234 visible_hostname dimon4eg icp_port 0 acl donocache urlpath_regex cgi-bin user submit no_cache deny donocache
cache_mem 32 MB cache_dir ufs / var / spool / squid 1000 16 256
cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log
tabel_mime /etc/squid/mime.conf nume_fișier_pid /var/run/squid.pid
utilizator_ftp [email protected] ftp_list_width 32 ftp_passive pe ftp_sanitycheck activat
acl server src 192.168.0.2/32
acl all src 0/0 acl manager proto cache_object acl localhost src 127.0.0.1/32 acl SSL_ports port 443 563 acl SMTP port 25
acl doallow src 192.128.0.2/32 127.0.0.1/32
acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 563 acl Safe_ports port 777 acl CONNECT metoda CONNECT
acl banners url_regex -i "/ etc / squid / acls / bannere" acl 1banners url_regex -i "/ etc / squid / acls / 1banners" acl nobanners url_regex -i "/ etc / squid / acls / nobanners"
http_access deny 1banners http_access deny bannere! nobanners http_access deny! Safe_ports http_access deny SMTP http_access permite doallow http_access deny all
icp_access deny all
never_direct permite totul

Regulile mele pentru tăierea reclamelor

/ etc / calmar / acls / bannere

.? (număr (\ d | er | \ .rbc) | hitbox | publicitate | linkexchange | faceți clic pe \ d | \ dcount | driver). * (/ ad (s | v) | \ .adnet \ .ru | banview | banner | driver | \ dcount | bnr | interdicții \. | / vânzare | / pagead). * exaccess \ .ru / asp /. . * (spylog | warlog \ .info | ipz.ru/cgi-bin/cm \ .cgi \? | c \ .mystat-in \ .net | c \ .bigmir \ .net | online \ .mirabilis | sus \ .winrate \ .net | vipelita \ .ru | cnews \ .ru. * / informres). *. * (brs \ .trilan \ .ru / imagini | google-analytics \ .com | / informator | bantex \ .ru | 100-100 \ .ru). *.? (Hotlog | tururi | sharereactor | & rand = | livejournal \ .com / userpic). * ^ (Www \.)? Anunț \ d? \ .. *.? Imagini \ . rambler \ .ru / upl. *. * s1 \ .adward \ .ru / \? r. *. * (bhanvad) \. com. *. * (dosugonline | blogonline | all-web | otvali | loveplanet | ziza | body \ .imho | meganame) \. ru. *.? (clx | gold-music) \. ru /.*. * (nnm.ru | rambler | realcoding | kpnemo \ .ru / advimg). * \. swf . * / ad?. *.? re (k | c) lama. *. ^ (www \.)? (1001tur | jmp \ .net | kmindex.ru /.*/ \? | kreis \ .trl \ .ru | rot \ .goup \ .ru / \? | au-au \ .ru). *.? r \ .mail \ .ru / b. * \. swf.? bs \ .yandex \ .ru / arată . *.? br \ .gcl \ .ru / cgi-bin / br. *.? m1.nedstatbasic.net/basic.js. * \. dublu clic \ .net. * an.yandex.ru / *. * / adserver / *

Astăzi vom vorbi despre serverele proxy.

Un server proxy este un astfel de lucru care oferă acces pentru mai multe computere dintr-o rețea în altă rețea (dar nu trebuie confundat cu routerele - acestea sunt lucruri complet diferite, un server proxy funcționează la nivel de aplicație). Cea mai obișnuită sarcină a unui server proxy este de a oferi acces la Internet pentru PC-urile care nu îl au printr-un PC care are acces la rețeaua globală. Să luăm în considerare această problemă în cazul utilizării unui computer Windows ca poartă de acces la Internet.

Pentru a rezolva această problemă, puteți folosi soluții proprietare cu o interfață vizuală - de exemplu, UserGate. Dar nu am putut să-l fac să funcționeze corect pe un PC cu Windows 7 și este plătit :) Prin urmare, cea mai bună soluție cred că este Calamar pe care l-am luat de la *nix. Puteți descărca această creație de la: Squid 2.7 (cea mai recentă versiune la momentul scrierii acestui articol)

Descărcați și despachetați, de preferință la rădăcina discului. Nu încercați să rulați nimic de acolo - acest program nu are GUI - și nu vă lăsați intimidați de asta :)
Apoi, deschideți consola - Win + R / сmd / mergeți la folderul cu squid-ul instalat (mai departe voi scrie pentru calea de instalare c: \ squid)

c: \
cd c: \ squid \ sbin

Acum trebuie să instalați squid ca serviciu Windows cu comanda:

squid -i -f c: /squid/etc/squid.conf -n Squid27

Unde Squid27 este numele serviciului, care în principiu poate fi oricare unul valabil.

Acum trebuie să editați fișierul de setări squid.conf, care se află în folderul c: / squid / etc /, vă sfătuiesc să faceți o copie de rezervă a fișierului original. Apoi, ștergem tot textul din acest fișier și scriem următoarele:

http_port 3128
acl localnet src 192.168.3.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
http_access permite localnet
http_access permite localhost
http_access deny all

cache_log nici unul
cache_store_log nici unul

Unde

  • http_port 3128 - numarul portului de pe server prin care functioneaza squid, adica in setarile clientului vom indica adresa serverului si acest port;
  • acl localnet src 192.168.0.0/255.255.0.0- această linie indică intervalul de adrese IP pentru care este posibil să ne conectăm la proxy-ul nostru. Masca poate fi specificată ca / ​​8, / 16, / 24 (pentru 255.0.0.0, 255.255.0.0, 255.255.255.0, respectiv), iar localnet este numele. De fapt, cu această linie declarăm o variabilă cu care vom lucra în continuare. linia următoare declară în mod similar variabila all, unde toate ip existente sunt indicate;
  • http_access permite localnet - cu această linie permitem accesul de la ip-ul specificat în variabila localnet către proxy-ul nostru;
  • http_access deny all - interzicem tuturor celorlalți să acceseze proxy-ul. Aceste permisiuni funcționează de sus în jos, așa că această linie trebuie să fie listată ultima! Altfel, nimeni nu va ajunge la proxy :)
  • cache_log none - obligatoriu, ca linia următoare, astfel încât jurnalele să nu devină gigaocteți)
De asemenea, puteți adăuga următorii parametri:
  • cache_mem 32 MB - determină dimensiunea cache-ului suplimentar al squid-ului în RAM;
  • cache_dir ufs c: / squid / var / cache 100 16 256- determină calea către folderul cache, dimensiunea acestuia în MB (100) și numărul de subdosare (de ce acestea din urmă - încă nu înțeleg :))
Acum trebuie să eliminați „.default” din numele fișierului mime.conf din același folder sau doar să creați un fișier text gol cu ​​acel nume. Acest lucru este necesar pentru a forma memoria cache. În consolă, introducem comanda (fiind în folderul sbin):

squid -z -f c: \ squid \ etc \ squid.conf

Deci, în principiu, suntem pregătiți să lansăm proxy-ul nostru. Scriem în linia de comandă (sau puteți merge la Servicii și rulați cu mouse-ul :)

net start Squid27

Stop:

net stop calmar27

Reconfigurare:

squid -n Squid27 -f cu: /squid/etc/squid.conf -k reconfigure

Puteți face în continuare multe lucruri în acest proxy, de exemplu, stabiliți restricții pentru diferiți utilizatori în timp, în viteză, interziceți accesul la anumite site-uri etc., etc. Dar acest articol nu include o descriere a tuturor acestor lucruri - cum ar fi materialul este ușor de găsit pe internet.

Materialele pentru construirea unui router bazat pe Squid sunt unul dintre cele mai populare de pe site-ul nostru. Această soluție vă permite să organizați și să simplificați accesul la Internet la întreprindere cu costuri minime (în primul rând pentru partea de software). Dar opțiunile pe care le luăm în considerare au fost destinate în primul rând lucrului ca parte a unui grup de lucru. Lipsa integrării cu Active Directory a redus drastic capacitatea de utilizare a unui astfel de router în rețelele de domenii, așa că am decis să remediam această omisiune.

În procesul de pregătire a acestui material, nu am planificat să ne oprim separat asupra pregătirii serverului, intenționând să folosim materialul deja existent pentru aceasta:. Cu toate acestea, când numărul de clarificări și diferențe a început să depășească limite rezonabile, am decis să dedicăm un articol separat acestei probleme. În același timp, presupunem că cititorul este familiarizat cu materialul de mai sus și, prin urmare, nu va explica în detaliu multe dintre setările pe care le folosim și nu se va opri asupra detaliilor minore.

Caracteristici de integrare cu Active Directory

Care este rostul integrării proxy Squid în Active Directory? Să spunem imediat că, dacă scopul tău principal este pur și simplu să distribui Internetul tuturor și fără restricții, ei bine, poate prin închiderea rețelelor sociale, atunci poți să nu mai citești, configurația deja descrisă de noi îți va satisface pe deplin nevoile. Principalul avantaj al integrării routerului în Active Directory este utilizarea unui singur punct de autentificare și controlul accesului la Internet pe baza conturilor și a grupurilor de securitate deja existente în domeniu.

De aici decurg unele particularități. Deci modul transparent nu acceptă autentificarea și va trebui să o refuzați specificând setările proxy direct în setările browserului. Acest proces este ușor de automatizat cu un server DHCP și WPAD.

Ca servere DNS, inclusiv pe un router, trebuie specificat doar DNS de domeniu; în mod implicit, fiecare controler de domeniu este serverul DNS. Din acest motiv, routerul nu ar trebui să aibă un rol de server DNS. De asemenea, pentru a oferi integrarea AD, rolul de server DHCP ar trebui, de asemenea, delegat către Windows Server, de obicei unuia sau mai multor controlere de domeniu.

Acum ajungem la punctul pentru care toate acestea au început. Autentificarea contului de domeniu permite un singur punct de intrare ( SSO, conectare unică) când utilizatorul introduce numele de utilizator și parola o dată - când se conectează la sistem. Acest lucru se realizează prin utilizarea protocolului Kerberos care este metoda implicită de autentificare AD. Spre deosebire de autorii altor ghiduri, nu vedem niciun rost în configurarea sau autentificarea de bază, în primul rând din motive de securitate. Mai mult, Kerberos este suportat de toate sistemele de operare moderne.

Următorul pas este autorizarea bazată pe grupurile de securitate existente, acest lucru este deosebit de important atunci când treceți de la În frunteTMG sau ISA Server... Acest lucru permite o dată configurarea unui server Linux pentru a controla în continuare accesul în mod obișnuit - prin grupurile Active Directory, ceea ce reduce pragul de intrare pentru administratori.

Deoarece Active Directory are o structură mai complexă și un număr mai mare de „actori”, pentru a nu vă încurca în adresele și numele de gazdă pe care le folosim, am pregătit o mică schemă:


În exemplele noastre, va fi folosit un domeniu Active Directory cu un nume FQDN interfata31.lab de care sunt responsabili doi controlori de domeniu SRV-DC01și SRV-DC02 cu adresele 192.168.31.101, respectiv 102. Ambele controlere sunt bazate pe Windows Server 2012 R2.

Routerul se bazează pe Ubuntu Server 14.04 (Debian 7/8) și are numele SRV-GW01 cu adresa 192.168.31.100. De asemenea, rețeaua are un grup de servere cu adrese statice 192.168.31.103-105 și PC-uri client ale căror adrese sunt emise de un server DHCP din intervalul 192.168.31.111-199.

Configurarea Rețelei

Rețeaua este configurată în mod tradițional, prin editarea fișierului de configurare / etc / rețea / interfețe... Să presupunem că rețeaua externă corespunde interfeței eth0 iar cel intern et1... Ca rezultat al configurării, ar trebui să obținem ceva de genul următor:

Auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
adresa 172.18.0.106
mască de rețea 255.255.240.0
gateway 172.18.0.1
dns-search interface31.lab
servere de nume dns 192.168.33.101 192.168.31.102

auto eth1
iface eth1 inet static
adresa 192.168.31.100
mască de rețea 255.255.255.0

post-up / etc / nat

Vă rugăm să rețineți că, în ciuda faptului că adresa externă și gateway-ul sunt utilizate în setările interfeței externe, adresele serverelor DNS sunt indicate ca interne. Se specifica si varianta dns-search, care definește domeniul pentru rezolvarea numelor non-FQDN. Aceasta înseamnă că domeniul specificat va fi adăugat automat la fiecare nume scurt, de exemplu, srv-dc01 va fi finalizat înainte srv-dc01.interface31.lab.

Dacă sunteți confuz de indicarea DNS-ului intern în setările plăcii de rețea externă, atunci puteți transfera aceste linii în secțiunea eth1, acest lucru nu va afecta funcționarea serverului.

Serverele DNS ale furnizorului sau DNS-urile publice ar trebui specificate în secțiune Expeditorii un server DNS intern pe oricare dintre controlerele de domeniu.

Dacă primiți setări de rețea de la furnizorul dvs. prin DHCP, atunci pentru a utiliza servere de nume interne, în loc de secțiunea DNS a furnizorului, secțiunea eth0 ar trebui să arate astfel:

Auto eth0
iface eth0 inet dhcp
dns-search interface31.lab
servere de nume dns 192.168.33.101 192.168.31.102

Astfel, setările specificate în mod explicit le vor înlocui pe cele primite de mașină de la furnizor.

Salvăm conținutul fișierului, repornim. Verificăm prezența Internetului pe server și rezoluția numelui. De exemplu, rulați comanda:

Nslookup srv-dc02

Primul server de nume de domeniu specificat, în cazul nostru 192.168.33.101, ar trebui să vă răspundă și să vă returneze numele FQDN complet al gazdei și adresa IP a acesteia.

Apoi verificați rezoluția numelor externe:

Nslookup ya.ru

De asemenea, ar trebui să primiți un răspuns de la serverul intern. Aceasta completează configurarea rețelei.

Configurarea NAT și Firewall

Configurația de bază a firewall-ului nu este în mod fundamental diferită de versiunea routerului pentru grupul de lucru, cu o singură excepție. Deoarece proxy-ul nostru este opac, este posibil să ieșim direct prin NAT dacă, dintr-un motiv oarecare, browserul nu este configurat să funcționeze cu serverul proxy. Prin urmare, vom restricționa accesul prin HTTP (portul 80) pentru toți clienții din rețeaua locală, cu excepția serverelor și a gazdelor individuale, care pot necesita acces direct.

Credem că un server proxy este necesar în primul rând pentru a controla utilizatorii, așa că nu are rost să încapsulăm pe el servere și gazde de servicii care nu oferă acces la Internet utilizatorilor.

Să creăm și să deschidem un fișier / etc / nat

atingere / etc / nat

adăugați următorul conținut la acesta:

# Activați redirecționarea pachetelor
echo 1> / proc / sys / net / ipv4 / ip_forward

# Permite traficului să se reducă
iptables -A INPUT -i lo -j ACCEPT

# Permite servere HTTP
iptables -A FORWARD -i eth1 -s 192.168.31.101 -p tcp --dport 80 -j ACCEPT
...
iptables -A FORWARD -i eth1 -s 192.168.31.105 -p tcp --dport 80 -j ACCEPT

# Dezactivează HTTP
iptables -A FORWARD -i eth1 -p tcp --dport 80 -j REJECT

# Permite accesul din rețeaua internă spre exterior
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Activați NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.31.0/24 -j MASQUERADE

# Permite răspunsuri din rețeaua externă
iptables -A FORWARD -i eth0 -m stare --state STABILIT, RELATED -j ACCEPT

# Interziceți accesul din exterior la rețeaua internă
iptables -A FORWARD -i eth0 -o eth1 -j RESPINGERE

Secțiune # Permite servere HTTP implică un set de reguli identice pentru fiecare gazdă pe care le permitem accesul la Internet ocolind proxy-ul. În cazul nostru, acestea sunt adrese de la 192.168.31.101 la 192.168.31.105, pentru a nu aglomera exemplul, am scris primul și ultimul, separându-le cu puncte de suspensie (care nu ar trebui să fie în configurația reală).

Să salvăm fișierul și să-i acordăm drepturi de execuție:

Chmod + x / etc / nat

Să repornim:

După aceea, puteți verifica internetul pe clienți, pe cei care sunt incluși în lista de excepții - va fi, pe restul nu. Alte protocoale: mail (SMTP, POP3, IMAP), FTP, HTTPS etc. ar trebui să lucreze la toți clienții.

Setare de sincronizare a timpului

Pentru a lucra cu succes cu domeniul Active Directory și pentru a trece autentificarea Kerberos, este important ca ceasul routerului să fie sincronizat cu ceasul controlerului de domeniu.

Instalați clientul NTP:

Apt-get install ntp

Apoi să deschidem fișierul de configurare /etc/ntp.confși comentați toate rândurile începând cu Server... Apoi adăugați două dintre intrările noastre:

Server srv-dc01.interface31.lab
server srv-dc02.interface31.lab

După cum probabil ați ghicit deja, am comentat înregistrările serverelor de timp terțe și am adăugat controlere de domeniu în această calitate.

Apoi adăugăm două linii la sfârșitul fișierului, limitând funcționarea clientului NTP la interfața internă:

Interfața ignoră wildcard
interfață asculta eth1

Salvați fișierul și reporniți serviciul:

Repornirea serviciului ntp

Pentru a vă asigura că NTP funcționează numai pe interfața internă, rulați:

Ss -l | grep 123

Ieșirea comenzii ar trebui să conțină numai adrese interne și adrese ale buclei locale (localhost):

Puteți verifica sincronizarea cu comanda:

În rezultat, acordați atenție coloanelor: când-timpul de la ultimul răspuns de la server, bazin- timpul de interogare a serverului, decalaj- diferenta de timp in secunde.

Dacă routerul dvs. se află într-un mediu virtual, atunci la pornire, în timp ce sistemul nu știe cu cine să sincronizeze ora, ora din interiorul mașinii virtuale este sincronizată cu cea a hipervizorului. Prin urmare, fie dezactivați această caracteristică în setările mașinii virtuale, fie sincronizați ceasul hypervisorului cu ceasul domeniului.

Configurarea Squid3 Caching Proxy

Atenţie! Dacă reconfigurați un server pentru un grup de lucru, atunci asigurați-vă că ștergeți pachet dnsmasq sau alte servere DNS și DHCP!

Instalați serverul proxy squid3 cu comanda:

Apt-get install squid3

Să deschidem fișierul de configurare /etc/squid3/squid.confși setați configurația minimă prin adăugarea sau decomentarea liniilor indicate în secțiunile corespunzătoare.

Să specificăm elementul acl pentru rețeaua locală:

Acl localnet src 192.168.31.0/24

Setul minim de liste de acces:

Http_access permite localnet
http_access permite localhost
http_access deny all

Interfețe proxy, porturi și moduri de operare:

Http_port 192.168.31.100:3128
http_port 127.0.0.1:3128

Setări cache:

Cache_mem 1024 MB
dimensiune_maximum_obiect_in_memorie 512 KB

cache_dir ufs / var / spool / squid3 2048 16 256

dimensiune_maximum_obiect 4 MB

Setări jurnal:

Daemonul Access_log: /var/log/squid3/access.log squid
logfile_rotate 31

Pentru calmar 3.1 și mai jos, prima linie ar trebui să arate astfel:

Access_log /var/log/squid3/access.log squid

Salvați și verificați configurația:

Squid3 -k verifica

Dacă nu există erori, reporniți squid:

Reporniți serviciul squid3

Reconstruirea memoriei cache:

Serviciu oprire squid3
calmar3 -z
service squid3 start

Pe serverul DNS al domeniului, adăugați o înregistrare A pentru routerul nostru:

Acum, în setările browserului, specificați FQDN-ul complet al serverului și portul 3128:

Deoarece nu au fost stabilite restricții încă, trebuie să aveți acces la Internet.

Mulți administratori se confruntă cu problema utilizării înțeleapte a timpului și a canalului pentru accesarea internetului, se gândesc la posibilitatea de a economisi timp și bani, la limitarea vitezei pentru anumite tipuri de fișiere sau persoane, până la urmă, la salvarea a tot ceea ce este asociate cu anumite aspecte ale accesării la Internet.rețea globală.

Cu ajutorul acestui articol, voi încerca să explic clar și inteligibil setările celui mai comun server proxy - serverul proxy Squid.

Setări inițiale SQUID pentru accesul utilizatorului

Nu vom intra în procesul de instalare a serverului proxy Squid, ci vom trece direct la configurarea acestuia.

Cel mai elementar lucru pe care ar trebui să-l facem după instalare este să permitem accesul utilizatorilor rețelei noastre locale. Pentru a face acest lucru, utilizați parametrii http_port, http_access. În plus, vom crea un acl (listă de control al accesului) pentru rețeaua noastră locală.

Deci, avem nevoie de http_port în măsura în care serverul nostru proxy Squid ar trebui să servească numai computere din rețeaua noastră locală și să fie invizibil pentru lumea exterioară pentru a exclude posibilitatea ca „oameni răi” din rețeaua externă să ne folosească canalul sau traficul, și dacă „găuri sunt găsite” „în codul proxy Squid, folosiți-le.

Parametrul http_access este folosit pentru a permite sau interzice accesul la anumite resurse, adrese specifice sau de la adrese specifice, către site-uri specifice, prin anumite protocoale, porturi și tot ceea ce este specificat direct folosind Acl (liste de control al accesului).

Tabelul N 1. Unele subrețele.

Gama de adrese | Formă scurtă 192.168.0.1-192.168.0.254 192.168.0.0/255.255.255.0 192.168.0.0.0/24 192.168.0.20.1-192.168.20.0/255.255.20. 192.168.254.254 192.168.20.0/255.255.0.0 192.168.20.0/16 10.0.0.1-10.254.254.254 10.0.0.0/255.0.0.0.0.0.0...

Să presupunem că aveți o rețea cu adrese de la 192.168.0.1 la 192.168.0.254, apoi adăugați un nou Acl (vezi tabelul N1):

Acl LocalNet src 192.168.0.0/24

Să presupunem că aveți un server proxy Squid situat la 192.168.0.200 pe portul 3128, apoi scrieți în fișierul de configurare:

Http_port 192.168.0.200:3128

Următoarea noastră acțiune va fi să interzicem utilizarea serverului nostru proxy, cu excepția utilizatorilor rețelei noastre locale:

Http_access permite LocalNet http_access deny all

În acest caz, cuvântul permite este o permisiune, iar cuvântul deny este o interdicție, adică permitem accesul la serverul proxy Squid de la adresele rețelei noastre locale și refuzăm accesul tuturor celorlalți.

Fiți atenți când specificați http_access, deoarece Squid le folosește în ordinea pe care o specificați.

Explorarea ACL-urilor (liste de control al accesului)

Sistemul de control al accesului Squid proxy este foarte flexibil și extins. Este format din elemente cu valori și liste de acces care specifică permit sau deny.

Formatul Acl este următorul:

Lista de articole cu numele acl

Formatul listei de acces:

Http_access specificând acl_name

Ne vom uita la câteva dintre elementele pe care serverul proxy Squid îți permite să le folosești, cu exemple desigur:

* acl name src list

Cu ajutorul acestui element (src), indicăm adresa IP a sursei, adică clientul de la care a venit cererea către serverul nostru proxy.

În următorul exemplu, vom permite lui Vasya Pupkin (Pupkin) și departamentului de programare (Progs) să acceseze serverul nostru proxy și să refuze pe toți ceilalți:

Acl Progs src 192.168.0.1-192.168.0.9 acl Pupkin src 192.168.0.10 http_access permit Progs http_access permit Pupkin http_access deny all

* lista de nume acl dst

Acest element (dst) specifică adresa IP de destinație, adică adresa IP a serverului pe care clientul serverului proxy dorește să-l acceseze.

În exemplul următor, îi vom refuza lui Vasya accesul la subrețeaua 194.67.0.0/16 (de exemplu, conține același aport.ru):

Acl Net194 dst 194.67.0.0/16 http_access deny Pupkin Net194

* acl name dstdomain list

Cu ajutorul acestui element (dstdomain) indicăm domeniul pe care clientul serverului proxy dorește să îl acceseze.

În exemplul următor, îi vom refuza lui Vasya accesul la site-urile nnm.ru și kpnemo.ru warez:

Acl SitesWarez dstdomain .nnm.ru .kpnemo.ru http_access deny Pupkin SitesWarez

Dacă trebuie să specificați domeniul sursă, atunci utilizați srcdomain.

* acl name [-i] srcdom_regex list * acl name [-i] dstdom_regex list

Aceste elemente diferă de srcdomain și dstdomain doar prin aceea că folosesc expresii regulate, pe care nu le vom lua în considerare în acest articol, dar vom da totuși un exemplu:

Acl SitesRegexSex dstdom_regex sex Acl SitesRegexComNet dstdom_regex \ .com $ \ .net $ http_access deny Pupkin SitesRegexSex http_access deny Pupkin SitesRegexComNet

În acest exemplu, i-am refuzat accesul lui Vasily Pupkin la toate domeniile care conțin cuvântul sex și la toate domeniile din zonele.com și.net.

Comutatorul -i este conceput pentru a ignora caracterele din expresiile regulate.

* acl name [-i] listă url_regex

Cu acest element (url_regex) specificăm modelul regex pentru adresa URL.

Un exemplu de specificare a fișierelor cu extensia avi care încep cu cuvântul sex:

Acl NoAviFromSex url_regex -i sex. * \. Avi $

În cazul în care doriți să specificați un model numai pentru calea URL, adică excluzând protocolul și numele gazdei (domeniu), atunci utilizați urlpath_regex.

Un exemplu pentru specificarea fișierelor muzicale:

Acl media urlpath_regex -i \ .mp3 $ \ .asf $ \ .wma $

* acl acl_name lista de porturi

Specificarea numărului portului de destinație, adică portul la care dorește să se conecteze clientul serverului nostru proxy.

De exemplu, vom interzice tuturor să folosească programul Mirc prin serverul nostru proxy:

Acl Mirc port 6667-6669 7770-7776 http_access deny all Mirc

* acl acl_name proto listă

Specificarea protocolului de transfer

De exemplu, să interzicem Vasya menționat mai sus să folosească protocolul FTP prin serverul nostru proxy:

Acl ftpproto proto ftp http_access deny Pupkin ftpproto

* lista de metode acl acl_name

Specificarea metodei de solicitare http de către client (GET, POST)

Să luăm o situație în care lui Vasya Pupkin ar trebui să i se interzică să-și vadă e-mailurile pe site-ul mail.ru, dar, în același timp, ar trebui să i se permită să se plimbe pe site fără interdicții, adică să-i refuze lui Vasya posibilitatea de a vă introduce în căsuța poștală. prin formularul de autentificare de pe site:

Acl SiteMailRu dstdomain .mail.ru acl methodpost metoda POST http_access deny Pupkin methodpost SiteMailRu

Restricții pentru utilizatori

Destul de des în țara noastră apare o situație în care nu există suficient canal de acces la Internetul global pentru toți utilizatorii și există dorința de a oferi tuturor maxim, dar în același timp să nu lăsăm canalul să se „pledeze” din cauza celor care place să descărcați fișiere.

Instrumentele proxy ale Squid vă permit să faceți acest lucru în mai multe moduri:

  • prima modalitate este de a optimiza stocarea în cache a obiectelor;
  • a doua este limita de timp pentru anumiți utilizatori, care nu este în întregime corectă;
  • a treia modalitate este de a limita viteza pentru anumite tipuri de fișiere, utilizatori și tot ceea ce definim prin Acl.

Limite de timp

Puteți limita utilizatorii în funcție de timp, după cum urmează:

Acl nume ora zile hh: mm-hh: mm

În cazul în care ziua: L - luni, L - marți, W - miercuri, H - joi, V - vineri, A - sâmbătă, S - duminică.

În acest caz, hh: mm trebuie să fie mai mic decât HH: MM, adică puteți specifica între 00: 00-23: 59, dar nu puteți specifica 20: 00-09: 00.

Să interzicem totodată lui Vasya să aibă acces la internet între orele 10 și 15 în fiecare zi:

Acl TimePupkin ora 10: 00-15: 00 http_access deny Pupkin TimePupkin

Dacă doriți să permiteți lui Vasya să folosească programul Mirc de la 13:00 la 14:00, atunci scrieți:

Acl TimePupkin ora 13: 00-14: 00 http_access permit Pupkin TimePupkin Mirc http_access deny Pupkin Mirc

Dar ce se întâmplă dacă trebuie să interziceți sau să permiteți în anumite zile ale săptămânii? Squid vă permite, de asemenea, să faceți acest lucru, de exemplu, de la 13:00 la 14:00, luni și duminică:

Acl Time Pupkin time MS 13:00-14:00

După cum puteți vedea, nu este nimic complicat.

Limite de viteza

Controlul vitezei serverului proxy Squid se realizează folosind pool-uri. Un bazin este un fel de butoi cu bere, în care berea este turnată în mod constant până la refuz, iar clienții o toarnă în pahare sau în alte recipiente pentru consumul intern ulterior, după cum este necesar, prin robinetele lor personale.

Pool-urile sunt reglementate folosind trei parametri: delay_class, delay_parameters, delay_access. Numărul de pool-uri este specificat utilizând parametrul delay_pools.

Piscinele pot fi de trei clase:

  1. Întregul flux de bere este limitat la un singur robinet (pentru întreaga rețea).
  2. Întregul flux de bere este limitat la un singur robinet, dar robinetul este împărțit în robinete (pe IP).
  3. Întregul flux de bere este limitat la un singur robinet, dar robinetul este împărțit în robinete (pe subrețele), care sunt, de asemenea, împărțite în mini robinete (pe IP).

Delay_pools number of_declared_pools delay_access pool_number acțiune acl_name

Acțiunea poate fi permisă sau respinsă. În același timp, acest bazin acționează asupra celor cărora le este permis și nu îi afectează pe cei cărora le este interzis. Dacă se specifică permiterea tuturor, apoi refuzați Pupkin, atunci această clasă va afecta în continuare Pupkin, deoarece Adresa IP a lui Pupkin declarată în acl Pupkin este inclusă în lista de adrese acl. Vă rugăm să aveți în vedere acest lucru.

Delay_class pool_number pool_class delay_parameters parametrii pool_number

opțiunile diferă în funcție de clasa piscinei:

pentru clasa I:

Delay_parameters 1 byte_per_all_network

pentru clasa a doua:

Delay_parameters 1 per_All_net per_client

pentru clasa a treia:

Delay_parameters 1 per_all_net per_subnet per_client

De exemplu, avem un canal de 128 Kbit (în medie 15 Kbytes pe secundă) și dorim ca Vasya (Pupkin) să dea doar 4 Kbytes/sec (un pahar mic pentru tot ce este legat de orice), departamentului de programare (Prog) să dea doar 10 Kb/sec și pentru fiecare doar 5 Kb/sec (doar două pahare), limitați toate celelalte la 2 KB/sec pentru fiecare și 10 Kb/sec pentru toate și limitați fișierele mp3 (media) la 3 KB/sec pentru toate (pentru tot butoiul de bere este un robinet atât de mic). Apoi scriem:

Acl Prog src 192.168.0.1-192.168.0.9 acl Pupkin src 192.168.0.10 acl LocalNet src 192.168.0.0/255.255.255.0 acl media urlpath_regex. 1 1 delay_parameters 1 3000/3000 delay_access 1 permit media delay_access 1 deny all # restriction poor Vasya delay_class 2 1 delay_parameters 2 4000/4000 delay_access 2 permit Pupkin delay_access 2 deny all # restricționare delay_class/parameters 502 delay_class/parameter 1002 delay_access 3 allow Prog delay_access 3 deny all # și acum vom restricționa restul (a doua clasă a pool-ului) delay_class 4 2 delay_parameters 4 10000/10000 2000/2000 delay_access 4 deny media delay_access 4 deny Pupkin delay_access delay_access delay_4 Delay_Local Delay_access delay_access 4 deny all

Adesea apare întrebarea, care este cea mai bună modalitate de a folosi un canal atât de mic, astfel încât să fie împărțit automat între toți cei care descarcă ceva în prezent? Există un răspuns clar la această întrebare - nu este posibil să faceți acest lucru folosind serverul proxy Squid, dar tot puteți face ceva:

Delay_class 1 2 delay_parameters 1 -1 / -1 5000/15000 delay_access 1 permit LocalNet delay_access 1 deny all

Astfel, alocăm canalul maxim pentru întreaga noastră rețea și pe subrețele (-1 înseamnă nelimitat), iar fiecărui utilizator i se acordă o viteză maximă de 5 Kb/s după ce descarcă primii 15 KB ai unui document la viteza maximă.

Astfel, clientul nu va consuma întregul canal, ci mai degrabă va primi rapid primii 15 KB.

Optimizarea memoriei cache a obiectelor în SQUID

Există multe tipuri de fișiere care nu sunt actualizate suficient de frecvent pentru a permite proxy-ului să răspundă la antetele de pe serverele web că obiectul nu poate fi stocat în cache sau tocmai s-a schimbat surprinzător. Aceasta este o situație destul de comună.

Pentru a rezolva astfel de situații, este destinat parametrul refresh_pattern din fișierul de setări al serverului proxy Squid, dar complet cu formule etc. nu o vom lua în considerare.

Refresh_pattern [-i] șir MINV procentaj MAXW parametri

Acest parametru este folosit pentru a determina vârsta obiectului (citește fișierul) din cache, dacă ar trebui actualizat sau nu.

MINV (timp minim) - timpul în minute în care un obiect din cache este considerat proaspăt.

MAXV (timp maxim) - timpul maxim în minute, când obiectul este considerat proaspăt.

Parametrii sunt unul sau mai mulți dintre următorii parametri:

  • override-expire - Ignorați informațiile de expirare a prospețimii obiectului și utilizați MINV.
  • override-lastmod - ignorați informațiile despre data modificării fișierului și utilizați MINV.
  • reload-into-ims - în loc să solicite o solicitare client „nu păstrați documentele în cache” (fără cache) trimiteți o solicitare „Dacă a fost modificat de la” (Dacă-Modificat-De la)
  • ignore-reload - ignoră solicitările clientului „nu păstrați documentele în cache” (fără cache) sau „reîncărcați documentul” (reîncărcați).

Așadar, ajungem la cel mai important lucru. Ei bine, care sunt tipurile de fișiere actualizate cel mai puțin frecvent? De regulă, acestea sunt diferite fișiere muzicale și imagini.

Să setăm prospețimea obiectelor, pentru aceasta, pentru imagini și fișiere muzicale, vom indica, să spunem de exemplu, până la 30 de zile (43.200 de minute):

Refresh_pattern -i \ .gif $ 43200 100% 43200 override-lastmod override-expire refresh_pattern -i \ .png $ 43200 100% 43200 override-lastmod override-expire refresh_pattern 200404 $0304000000000000000expire refresh_pattern -i \ .jpeg $ 43200 100% 43200 override-lastmod override-expire refresh_pattern -i \ .pdf $ 43200 100% 43200 override-lastmod override-expire override-expire -refresh $432000. -expire refresh_pattern -i \ .tar $ 43200 100% 43200 override-lastmod override-expire refresh_pattern -i \ .gz $ 43200 100% 43200 override-lastmod override-expire -refresh_mod_430.gz $0. override-expire refresh_pattern -i \ .exe $ 43200 100% 43200 override-lastmod override-expire refresh_pattern -i \ .prz $ 43200 100% 43200 override-lastmod override-lastmod override \-020% refresh_3 020 $ lastmod override-expire refresh_pattern -i \ .inf $ 43200 100% 43200 override-lastmod override-expire refresh_patt ern -i \ .swf $ 43200 100% 43200 override-lastmod override-expire refresh_pattern -i \ .mid $ 43200 100% 43200 override-lastmod override-expire refresh_pattern -i 43200 $ override-lastmod override-expire -i 140% override0v0. expiră refresh_pattern -i \ .mp3 $ 43200 100% 43200 override-lastmod override-expire

Setările prezentate mai sus sunt doar un exemplu, pentru a înțelege esența. Acum poți verifica eficiența serverului tău proxy, cu siguranță va crește.

Concluzie

Squid Proxy nu este doar un proxy obișnuit, există și alții. Dar, după cum arată statisticile, majoritatea folosesc acest server proxy, dar, în același timp, mulți începători au încă probleme cu configurarea.

Cu ajutorul acestui articol, am încercat să dezvălui măcar puțin mase mari unele dintre funcțiile serverului proxy Squid.

Următorul pas în configurare este instalarea unui server proxy pentru a oferi acces controlat la Internet.

Vom folosi serverul proxy SQUID3 pentru asta.

Instalați serverul cu comanda:

sudo apt-get install squid3

Notă: În versiunile de server Ununtu mai mici de 16, adresa folderului serverului proxy squid este / etc / calmar3, în Ubuntu Server 16 adresa folderului serverului proxy squid este / etc / calmar... Aveți grijă când prescrieți căi. Puteți verifica vizual calea corectă către folderul SQUID cu.

Fișierul de configurare SQUID3 se află la / etc / squid3 /squid.conf, deoarece acest manual este destinat începătorilor, iar fișierul de configurare este foarte mare și conține o mulțime de comentarii, vom crea un nou fișier de configurare și îl vom copia pe cel original sub un alt nume.

Când decideți să vă familiarizați mai mult cu posibilele opțiuni de configurare pentru SQUID3, puteți restaura singur fișierul original.

Redenumiți fișierul original squid3.conf la un fișier numit squid3.conf.bac

sudo mv / etc / squid3 /squid.conf / etc / squid3 /squid.conf.bac

Creați un fișier de configurare gol calmar.conf:

sudo touch / etc / squid 3 / squid.conf

Deschiderea fișierului de configurare:

sudo nano / etc / squid3 /squid.conf

Introduceți următorul text de configurare în fișier:

acl SSL_ports portul 443 acl Safe_ports 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 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl localnet src 192.168.137.0/24 acl CONNECT metoda CONECTARE http_acces refuzat! Safe_ports http_access deny CONNECT! SSL_ports http_access permite managerul localhost http_access manager de refuz http_access permite localhost http_access permite localnet http_access deny all http_port 192.168.137.1:3128 interceptare cache_dir ufs / var / spool / squid3 2048 16 256 dimensiune_maximum_obiect 4 MB dimensiune_maximum_obiect_in_memorie 512 KB cache_mem 1024 MB access_log daemon: / var / log / squid3 /access.log squid logfile_rotate 31 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 (Versiune | Pachete (.gz) *) 0 USD 20% 2880 refresh_pattern. 0 20% 4320

Ubuntu Server 15: fișierul de configurare inițială SQUID Proxy

Ce am schimbat în configurația inițială:

  • acl localnet src 192.168.137.0/24 - a indicat raza de acțiune a rețelei noastre locale;
  • http_port 192.168.137.1:3128 interceptare - a deschis un server proxy transparent pe portul 3128, în modul transparent, clienții nu trebuie să configureze adresa serverului proxy;
  • cache_dir ufs / var / spool / squid3 2048 16 256 - setări specificate de utilizare a memoriei cache. Notați calea către folderul SQUID în funcție de versiunea serverului dvs.;
  • maximum_object_size 4 MB - dimensiunea minimă a fișierului stocat în cache;
  • maximum_object_size_in_memory 512 KB - dimensiunea maximă a unui obiect în cache în RAM;
  • cache_mem 1024 MB - cantitatea de memorie permisă pentru stocarea cache-ului;
  • access_log daemon: / var / log / squid3 /access.log squid - activați înregistrarea. Notați calea către folderul SQUID în funcție de versiunea serverului dvs.;
  • logfile_rotate 31 - perioada de stocare pentru fișierele jurnal.

Toți ceilalți parametri sunt lăsați în fișierul de configurare original - neschimbați.

Să verificăm fișierul de configurare înainte de a reporni serviciul:

sudo squid3 -k verifica

Dacă comanda rulează fără ieșire, nu există erori, altfel studiem rezultatul și corectăm greșelile.

Reporniți serviciul squiid pentru a aplica modificările:

sudo service squid3 reporniți

Să deschidem fișierul creat / etc / natși specificați redirecționarea traficului http prin serverul nostru proxy squid:

sudo nano / etc / nat

Să adăugăm următoarele la sfârșitul fișierului:

# Wrap http pe un proxy iptables -t nat -A PREROUTING -i eth1! -d 192.168.137.0 / 24 -p tcp -m multiport --dport 80.8080 -j DNAT --la 192.168.137.1: 3128

Ubuntu Server: Configurarea squid

Repornim serverul.

Serverul proxy Squid a fost configurat cu succes.

Majoritatea „nu funcționează” se datorează neglijenței! Verificați cu atenție comenzile și evitați caracterele inutile în fișierele de configurare.

Top articole similare