Limitarea latimii de banda
Cuprins
1. Introducere
Scopul acestui ghid este de a furniza o solutie simpla pentru limitarea traficului, prevenind astfel consumarea in totalitate de catre utilizatorii retelei a intregii latimi de banda a legaturii la internet.
Acest lucru este folositor cand avem o legatura la internet lenta sau utilizatorii retelei download-eaza tone de mp3-uri sau cele mai noi distributii linux in format iso.
1.1 Versiuni noi ale acestui document
Intotdeauna poti citi ultima versiune a acestui document pe internet la adresa www.linuxdoc.org. Versiuni noi ale acestui document vor fi upload-ate pe diferite site-uri www si FTP, incluzand site-ul LDP aflat la www.linuxdoc.org.
1.2 Disclaimer
Nici autorul si nici distribuitorul, sau oricare alta persoana care a contribuit la realizarea acestui document, nu sunt in nici un fel responsabili pentru distrugeri fizice, financiare, morale sau orice alt fel de distrugeri aparute prin urmarea sugestiilor din acest document.
1.3 Copyright si licenta
Drepturile de autor asupra acestui document ii apartin lui Tomasz Chmielewski, si este distribui in termenii GNU Free Documentation Licence.
1.4 Feedback si corecturi
Daca aveti intrebari sau comentarii despre acest document, fiti liberi sa trimiteti un email lui Tomasz Chmielewski la [email protected]. Orice sugestii si critici sunt bine venite. Daca gasiti o greseala, fie ea si de ortografie (si o sa gasiti multe, deoarece Engleza nu este limba mea nativa), va rog sa ma anuntati pentru a le putea corecta in urmatoarea versiune. Multumesc.
2.Inainte sa incepem
Sa ne imaginam urmatoarea situatie:
2.1 De ce avem nevoie
Credeti sau nu, modelarea traficului care vine este o treba usoara si nu este nevoie sa citesti o gramada de carti despre rutare sau algoritmi de administrare a cozii de asteptare.
Pentru a functiona avem nevoie de cel putin server-ul Squid; daca vrem o setare mai complexa, va trebui sa devenim familiari cu ipchains sau iptables si CBQ.
Pentru verificari putem instala IPTraf.
2.2 Cum functioneaza?
Squid-ul este probabil cel mai avansat server proxy HTTP disponibil sub linux. Ne poate ajuta sa salvam latimea de banda in doua moduri:
Bineinteles, internetul nu este folosit doar pentru a download-a fisiere prin intermediul paginilor web (http sau ftp). Mai incolo, ne vom ocupa si de limitarea latimii de banda pentru Napster, Realaudio, si altele.
3. Instalarea si configurarea programelor necesare
Aici voi explica cum se instaleaza programele necesare pentru a limita si testa utilizarea latimii de banda.
3.1 Instalarea Squid-ului cu 'delay pools'
Cum am mentionat si mai inainte, Squid are o trasatura numita 'delay pools', care ne permite sa controlam latimea de banda pentru download. Din pacate, in majoritatea distributiilor linix, linux-ul nu are aceasta trasatura activata.
Deci, daca ai deja Squid-ul instalat, trebuie sa te dezamagesc -- trebuie sa il dezinstalezi si sa-l instalezi din nou cu 'delay pools' activata in modul in care explic mai jos:
Pentru a obtine performanta maxima de la server-ul nostru de proxy Squid, cel mai bine este sa-i creem o partitie separata pentru cache-ul sau, numita /cache/. Marimea sa ar trebui sa fie in jur de 300 megaocteti, depinzand de necesitati.
Daca nu sti cum sa faci o partitie separata,poti crea directorul /cache/ in partitia principala, dar performantele Squid-ului vor suferi putin.
Adaugam un utilizator 'squid':
|
Nimeni nu se poate loga ca squid, nici macar root-ul.
Download-am sursele Squid-ului de la www.squid-cache.org.
In momentul scrierii acestui document ultima versiune era 2.4 stable 1 (www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE1-src.tar.gz
Dezarhivam totul in /var/tmp:
|
Compilam si instalam Squid (totul este pe o singura linie):
# ./configure --prefix=/opt/squid --exec-prefix=/opt/squid
--enable-delay-pools --enable-cache-digests --enable-poll
--disable-ident-lookups --enable-truncate --enable-removal-policies |
3.2 Configurarea Squid-ului sa foloseasca 'delay pools'
Configurarea fisierului squid.conf (aflat in /opt/squid/etc/squid.conf):
#squid.conf |
OK, dupa ce am configurat totul, trebuie sa ne asiguram ca tot ce se afla in /opt/squid si /cache apartin utilizatorul 'squid':
# mkdir /var/log/squid/ |
Acum totul este pregatit pentru a lansa Squid-ul. Cand o facem pentru prima data, va trebui sa ii crem directoarele de cache:
|
Lansam Squid-ul in executie si verificam daca totul functioneaza. Un utilitar bun pentru acest lucru este IPTraft; il puteti gasi la freshmeat.net. Aveti grija sa setati proxy-ul in browser-ele web (192.168.1.1, portul 8080, din exemplul nostru):
|
Daca totul functioneaza, adaugam linia /opt/squid/bin/squid la sfarsitul script-urilor de initializare. De obicei, se afla in /etc/rc.d/rc.local
Alte optiuni folositoare in Squid pot fi:
# /opt/squid/bin/squid -k reconfigure (reconfigureaza Squid-ul
daca am facut vre-o modificare in fisierul squid.conf) |
De asemenea puteti copia cachemgr.cgi in directorul cgi-bin al server-ului www, pentru a utiliza un foarte folositor manager de cache.
3.3 Rezolvarea problemelor ramase
Ok, am instalat server-ul Squid si l-am configurat sa foloseasca 'delay pools'. Pun pariu ca nimeni nu vrea sa fie restrictionat, mai ales utilizatorii retelei noastre. Ei mai mult ca sigur ca vor incerca sa ocoleasca limitarile noastre, numai sa download-exe mp3-urile lor favorite un pic mai repede (astfel creandu-ti dureri de cap).
Presupun ca folosesti IP-masquerade (mascarea IP-ului) in reteaua ta, astfel incat utilizatorii ei sa poata folosi irc, icq, email, etc. Este ok, dar trebuie sa fim siguri ca utilizatorii retelei vor folosi server-ul Squid pentru a accesa paginile web si sa foloseasca ftp-ul.
Putem rezolva majoritatea acestor probleme utilizand ipchains (kernel linux 2.2.x) sau iptables (kernel linux 2.4.x).
3.3.1 Kernel linux 2.2.x (ipchains)
Trebuie sa ne asiguram ca nimeni nu va incerca sa ne pacaleasca si sa foloseasca un alt server proxy. Server-ele proxy publice folosesc de obicei porturile 3128 si 8080:
/sbin/ipchains -A input -s 192.168.1.1/24 -d !
192.168.1.1 3128 -p TCP -j REJECT |
De asemenea, trebuie sa ne asiguram ca nimeni nu va incerca sa se conecteze la internet direct pentru a download-a pagini web:
|
Daca totul functioneaza, adaugam aceste linii in scripturile de initializare. De obicei se afla in /etc/rc.d/rc.local.
Ne-am putea gandi sa blocam traficul ftp (porturile 20 si 21) pentru a forta utilizatorii sa foloseasca Squid-ul, dar nu este o idee buna din cel putin doua motive:
Squid este un server proxy http cu suport ftp, nu un server proxy ftp adevarat. Poate download-a de pe ftp, poate si upload-a pe unele servere ftp, dar nu pooate sterge/schimba numele fisierelor de pe servere ftp.
Cand blocam porturile 20 si 21, nu vom mai putea sterge/schimba numele fisierelor de pe servere ftp.
IE 5.5 are un bug - nu foloseste un proxy pentru a accesa foldere prin ftp. El se conecteaza direct prin intermediul IP-masquerade. Cand blocam porturile 20 si 21, nu vom mai putea accesa foldere prin ftp utilizand IE 5.5.
Prin urmare vom bloca download-urile excesive prin ftp utilizand alte metode. Ne vom ocupa de acest lucru in capitolul 4.
3.3.2 Kernel linux 2.4.x (iptables)
Trebuie sa ne asiguram ca nimeni nu va incerca sa ne pacaleasca si sa foloseasca un alt server proxy. Server-ele proxy publice folosesc de obicei porturile 3128 si 8080:
/sbin/iptables -A FORWARD -s 192.168.1.1/24 -d
! 192.168.1.1 --dport 3128 -p TCP -j DROP |
De asemenea, trebuie sa ne asiguram ca nimeni nu va incerca sa se conecteze la internet direct pentru a download-a pagini web:
|
Daca totul functioneaza, adaugam aceste linii in scripturile de initializare. De obicei se afla in /etc/rc.d/rc.local.
Ne-am putea gandi sa blocam traficul ftp (porturile 20 si 21) pentru a forta utilizatorii sa foloseasca Squid-ul, dar nu este o idee buna din cel putin doua motive:
Squid este un server proxy http cu suport ftp, nu un server proxy ftp adevarat. Poate download-a de pe ftp, poate si upload-a pe unele servere ftp, dar nu pooate sterge/schimba numele fisierelor de pe servere ftp.
Cand blocam porturile 20 si 21, nu vom mai putea sterge/schimba numele fisierelor de pe servere ftp.
IE 5.5 are un bug - nu foloseste un proxy pentru a accesa foldere prin ftp. El se conecteaza direct prin intermediul IP-masquerade. Cand blocam porturile 20 si 21, nu vom mai putea accesa foldere prin ftp utilizand IE 5.5.
Prin urmare vom bloca download-urile excesive prin ftp utilizand alte metode. Ne vom ocupa de acest lucru in capitolul 4.
4. Tratarea altor protocoale consumatoare de latime de banda utilizand CBQ
Trebuie sa tinem minte ca utilizatorii retelei noastre ne pot strica tot ce am facut noi in capitolul 3 daca folosesc Napster, Kazaa sau Realaudio. Trebuie sa ne aducem aminte de asemenea ca nu am blocat traficul ftp in sectiunea 3.3.
Vom obtine acest lucru printr-o alta modalitate - nu prin a limita direct download-urile, ci mai degraba indirect. Daca dispozitivul nostru de conectare la internet este ppp0 si adaptorul LAN este eth0, vom limita traficul care iese prin interfata eth0, si astfel limitam traficul care intra prin ppp0.
Pentru a face aceasta, ne vom familiariza cu CBQ si script-ul cbq.ini. Il poti obtine de la ftp.equinox.gu.net/pub/linux/cbq/. Download-eaza cbq.init-v0.6.2 si pune-l in /etc/rc.d/.
Vei avea nevoie sa fie instalat si iproute2. Acesta vine cu orice distributie linux.
Acum uita-te in directorul /etc/sysconfig/cbq/. Acolo trebuie sa fie un fisier exemplu, care ar trebui sa lucreze cu cbq.ini. Daca nu se afla acolo, probail ca nu il ai compilat in kernel sau nu este prezent ca modul. Ei bine, in orice caz, fa acel folder, pune fisierele exemplu de mai jos, si vezi daca functioneaza pentru tine.
4.1 FTP
In capitolul 3 nu am blocat ftp-ul din doua motive: - ca sa putem face upload-uri, si ca utilizatorii care folosesc IE 5.5 sa poata accesa foldere prin ftp. In concluzie, toate browser-ele web si clientii ftp vor face download-uri folosind server-ul proxy Squid si upload-urile/redenumirile/stergerile prin ftp vor fi facute prin IP-masquerade.
Vom crea un fisier numit cbq-10.ftp-network in directorul /etc/sysconfig/cbq/:
|
Vom introduce urmatoarele linii in el:
DEVICE=eth0,10Mbit,1Mbit |
Descrierea acestor linii o vom gasi in fisierul cbq.ini-v0.6.2.
Cand pornesti script-ul /etc/rc.d/cbq.init-v0.6.2, va citi fisierele dde configurare care se afla in directorul /etc/sysconfig/cbq/:
|
Daca totul functioneaza, adaugam /etc/rc.d/cbq.init-v0.6.2 start la sfarsitul scripturilor de initializare. De obicei se gassc in /etc/rc.d/rc.local.
Multumita acestei comenzi, server-ul nu va trimite date ftp prin eth0 cu o viteza mai mare de 15 kbiti/s, si nici nu va download-a date prin ftp cu o viteza mai mare de 15 kbiti/s. Utilizatorii retelei vor vedea ca este mai eficient sa folosesti proxy-ul Squid pentru a face download-uri prin ftp. Ei vor putea de asemenea sa vizualizeze corect folderele de pe server-ele ftp cu problematicul IE 5.5.
Mai exista un bug in IE 5.5 - cand apesi butonul drept al mouse-ului pe un fisier aflat intr-un director accesat prin ftp selectand apoi 'Copy to folder', fisierul nu este download-at prin proxy, ci direct prin IP-masquerade, eliminand astfel Squid-ul cu 'delay pools'.
4.2 Napster, Realaudio, Windows Media si altele
Aici este aceeasi idee ca si la ftp; adaugam inca un port si setam o alta viteza. Creem un fisier numit cbq-50.napster-networl in directorul /et/sysconfig/cbq/:
|
Pune acestelinii in acel fisier:
DEVICE=eth0,10Mbit,1Mbit |
Nu uita sa elimini porturile folosite de Audiogalasy (41031-41900) folosind ipchains (kernel 2.2.x) sau iptables (kernel 2.4.x).
Kernel 2.2.x
|
Kernel 2.4.x
|
Nu uita sa adaugi linia corespunzatoare in scripturile de initializare.
5. Intrebari adresate frecvent
5.1 Se poate limita latimea de banda folsita de fiecare utilizator folosind 'delay pools'?
Da. Uita-te in fisierul squid.conf original si cauta si in documentatia de la www.squid-cache.org.
5.2 Cum fac sa mearga wget cu Squid?
Este simplu. Creaza un fisier numit .wgetrc si pune-l in folderul contului tau. Insereaza urmatoarele linii si gata!
HTTP_PROXY=192.168.1.1:8080 |
Poti face sa functioneze la nivel global pentru toti utilizatorii. Tasteaza man wget pentru a afla cum.
5.3 Am setat server-ul SOCKS sa lucreze pe portul 1080 si acum nu mai pot sa ma conectez la nici un server irc.
Exista doua varinate.
Una este daca server-ul proxy SOCKS este open relay, asta inseamna ca il poate folosi oricine de oriunde in lume. Este o problema de securitate si ar trebui sa verifici configurarea proxy-ului SOCKS inca o data - de obicei server-ele irc nu permit conectarea server-elor proxy SOCKS open relay.
Daca esti sigur ca server-ul SOCKS nu este open relay, ti se mai poate refuza conectarea la anumite server-e irc - asta se intampla deoarece ele verifica daca server-ul SOCKS ruleaza pe portul 1080 al unui client care se conecteaza. In acest caz trebuie doar sa iti reconfigurezi server-ul SOCKS sa lucreze pe alt port. Va trebui de asemenea sa iti reconfigurezi reteaua sa foloseasca server-ul si portul SOCKS corect.
5.4 Nu imi place cand Kazaa sau Audiogalaxy imi ocupa toata latimea de banda pentru upload.
Intr-adevar poate fi dureros, dar este simplu de rezolvat.
Creaza un fisier numit, de exemplu, /etc/sysconfig/cbq/cbq-15.ppp.
Insereaza urmatoarele linii in el, si Kazaa sau Audiogalaxy nu vor upload-a la o viteza mai mare de 15 kbiti/s. Voi presupune ca interfata de iesire pe internet este ppp0.
DEVICE=ppp0,115Kbit,11Kbit |
5.5 Server-ul meu de trimis posta imi mananca toata latimea de banda
Poti limita SMTP-ul, postfix, Sendmail, sao urice altceva intr-o maniera asemanatoare cu intrebarea de mai sus. Schimba sau adauga o singura linie:
|
Mai mult, daca ai un server SMTP, poti forta utilizatorii retelei sa il foloseasca, chiar daca si-au setat propriul server SMTP ca fiind smtp.server.ceva! O vom face intr-o metoda transparenta exact cum am facut si cu Squid.
5.6 Pot sa imi limitez server-ul FTP sau WWW intr-o maniera similara asa cum este prezentata in intrebarea de mai sus?
In general poti, dar de obicei aceste server-e au propriile configurari de limitare a latimii de banda, deci probabil ca vei vrea sa te uiti la documentatiile lor.
Kernel 2.2.x
|
Kernel 2.4.x
|
Nu uita sa adaugi linia corespunzatoare in scripturile de initializare.
5.7 Se poate limita latimea de banda folosita de fiecare utilizator folosind script-ul cbq.ini?
Da. uita-te in script; acolo vei gasi niste exemple.
5.8 De fiecare data cand lansez cbq.ini, imi spune ca lipseste sch_cbq
Probabil ca nu ai CBQ ca module in sistemul tau. Daca ai compilat CBQ in kernel, atunci decomenteaza utmatoarele linii in scriptul tau cbq.init-v0.6.2:
### If you have cbq, tbf and u32 compiled into kernel, comment
it out |
5.9 Uneori CBQ-ul nu vrea sa porneasca, fara nici un motiv
In general acest lucru nu ar trebui sa se intample. Uneori poti observa download-uri masive, cu taote ca tu credeai ca ai blocat toate porturile utilizate de Napster sau Audiogalaxy. Ei bine, intotdeauna exista un port deschis pentru download-uri masive. Pentru a-l gasi poti folosi IPTraf. Exista posibilitatea ca sa existe mii de astfel de porturi, blocarealor putand deveni o treaba foarte grea. Pentru a o usura, poti lua in calcul si varianta de a avea propriul server SOKS - Napster, Audiogalaxy si multe alte programe pot folosi proxy-uri SOCKS, lucrul cu un singur port fiind mult mai simplu decat cu mii de porturi (portul standard pentru SOCK este 1080, daca rulezi propriul server SOCKS, vei putea sa il setezi diferit, sau sa rulezi mai multe instante ale lui care sa asculte pe mai multe porturi). Nu uita sa inchizi toate porturile de trafic, si sa lasi deschise porturile de genul 25 si 110 (SMTP si POP3), si altele pe care le crezi importante. Vei gasi un link catre niste server-e proxy socks Nylon la sfarsitul acestui document.
5.10 'Delay pools' sunt stupide; de ce nu pot sa download-ez ceva cu viteza maxima cand reteaua este folosita doar de mine?
Din pacate nu prea poti face ceva in aceasta privinta.
Singurul lucru pe care il poti face este sa folosesti cron si sa il reconfigurezi, al 1.00 am, astfel incat Squid sa nu foloseasca 'delay pools', apoi sa il reconfigurezi, sa zicem la 7.30 am, sa foloseasca 'delay pools'.
Pentru a face acest lucru, creaza doua fisiere de configurare separate, numite squid.conf-day si squid.conf-night, si pune-le in /opt/squid/etc/.
squid.conf.day va fi exact copia fisierului de configurare creata mai inainte.
squid.conf-night, din contra, nu va avea nici o linie cu 'delay pools', deci tot ce veti avea de facut este sa comentati acele linii.
Urmatorul lucru pe care il avem de facut este sa setam /etc/crontab corect.
Editeaza /etc/crontab si pune urmatoarele linii:
#SQUID - night and day config change |
5.11 Download-urile mele se opresc la 23.59 cu 'acl day time 09:00-23:59' in squid.conf. Se poate face ceva?
O poti obtine prin inlaturarea acului din squid.conf, si 'delay_Access 2 allow dzien delay_access 2 deny !dzien' de asemenea. Pe urma incearca sa o relizezi cu ajutorul lui cron ca in intrebarea de mai sus.
5.12 Log-urile Squid-ului cresc si cresc rapid, ce pot face?
Intr-adevar, cu cat mai multi utilizatori ai, cu atat mai multa informatie - uneori folositoare - va fi inregistrata.
Cea mai buna cale de o eradica este da folosesti logrotate, dar va trebui sa faci o mica smecherie pentru a o putea face sa functioneze cu Squid: intrarile corecte pentru cron si logrotate.
Intrarile in /etc/crontab:
#SQUID - logrotate |
Aici am facut ca logrotate sa porneasca zilnic la 04:01 am, deci elimina orice alta pornire a lui logrotate, de exemplu din /etc/cron.daily/.
Intrarile in /etc/logrotate.d/syslog:
#SQUID logrotate - va pastra log-urile pentru 40 de zile |
5.13 CBQ-ul este stupid: de ce nu pot sa download-ez ceva la viteza maxima cand reteaua este folosita doar de mine?
Ce norocos esti, se poate!
Sunt mai multe variante de a atinge acest lucru.
Prima este cea mai simpla, similara cu solutia data pentru Squid. Insereaza o linie similara cu cea de mai jos in fisierele de configurare ale CBQ-ului aflate in /etc/sysconfig/cbq/:
|
Poti avea mai multi parametrii TIME in fisierele de configurare ale CBQ-ului.
Fi atent totusi, ca exista un mic bug in script-ul cbq.init-v0.6.2 - nu te va lasa sa setezi anumite momente de timp, de exemplu 00:00-08:00! Pentru a fi sigur ca totul functioneaza, porneste cbq.init-v0.6.2, si apoi in intervalul de timp setat, tasteaza /etc/rc.d/cbq.init-v0.6.2 timecheck.
Iata un exemplu de cum ar trebui sa fie raspunsul:
|
In urmatorul exemplu ceva nu a mers cum trebuie, probabil in cel de al doi-lea fisier de configurare aflat in /etc/sysconfig/cbq/.
|
Cea de a doua varianta de a face ca CBQ-ul sa devina mai inteligent este mai grea - nu depinde de timp. Poti citi despre aceasta varianta in 'Linux 2.4 Advanced Routing HOWTO', si sa te joci cu comanda tc.
6. Diverse
6.1 Resurse utile
Pagina de web a server-ului Squid www.squid-cache.org
Manualul de configurare al Squid 2.4 Stable 1 www.visolve.com/squidman/Configuration Guide.html, www.visolve.com/squidman/Delaypool parameters.htm
Intrebari adresate frecvent despre Squid www.squid-cache.org/Doc/FAQ/FAQ-19.html#ss19.8
Script-ul cbq-init ftp.equinox.gu.net/pub/linux/cbq/
'Linux 2.4 Advanced Routing HOWTO' www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html
Control de trafic (in Poloneza) ceti.pl/~kravietz/cbq/
'Securing and Optimizing Linux Red Hat Edition - A Hands on Guide' www.linuxdoc.org/guides.html
IPTraf cebu.mozcom.com/riker/iptraf/
IPCHAINS www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html
Server-ul proxy socks Nylon mesh.eecs.umich.edu/projects/nylon/
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |