Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » referate » informatica » linux
Limitarea latimii de banda

Limitarea latimii de banda


Limitarea latimii de banda

Cuprins

  • 1. Introducere
    • 1.1 Versiuni noi ale acestui document
    • 1.2 Disclaimer
    • 1.3 Copyright si licenta
    • 1.4 Feedback si corecturi
    • 1.5 Multumiri
  • 2. Inainte sa incepem
    • 2.1 De ce avem nevoie
    • 2.2 Cum functioneaza?
  • 3. Instalarea si configurarea programelor necesare
    • 3.1 Instalarea Squid-ului cu 'delay pools'
    • 3.2 Configurarea Squid-ului sa foloseasca 'delay pools'
    • 3.3 Rezolvarea problemelor ramase
  • 4. Tratarea altor protocoale consumatoare de banda utilizand CBQ
    • 4.1 FTP
    • 4.2 Napster, Realaudio, Windows Media si altele
  • 5. Intrebari adresate frecvent
    • 5.1 Se poatelimita latimea de banda folosita de fiecare utilizator folosind 'delay pools'?
    • 5.2 Cum fac sa mearga wget cu Squid?
    • 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
    • 5.4 Nu imiplace cand Kazaa sau Audiogalaxy imi ocupa toata latimea de banda pentru upload
    • 5.5 Server-ul meu de trimis posta imi mananca toata latimead e banda
    • 5.6 Pot sa imi limitez server-ul FTP sau WWW intr-o maniera similara asa cum este prezentata in intrebarea de mai sus?
    • 5.7 Se poate limita latimea de banda folosita de fiecare utilizator folosind script-ul cbq.ini?
    • 5.8 De fiecare data cand lansez cbq.ini, imi spune ca lipseste sch_cbq
    • 5.9 Uneori CBQ-ul nu vrea sa porneasca, fara nici un motiv
    • 5.10 'Delay pools' sunt stupide; de ce nu pot sa download-ez ceva cu viteza maxima cand reteaua este folosita doar de mine?
    • 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?
    • 5.12 Log-urile Squid-ului cresc si cresc rapid, ce pot face?
    • 5.13 CBQ-ul este stupid: de ce nu pot sa download-ez ceva la viteza maxima cand reteaua este folosita doar de mine?
  • 6. Diverse
    • 6.1 Resurse utile


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 tch@metlab.unc.edu. 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:

  • avem o legatura la internet de 115,2 kbit/s ppp (modem) (115,2/10=11,5 kbyte/s). Nota: cu conexiuni ethernet (placa de retea) am imparti 115,2 la 8; cu ppp impartim la 10, acest lucru datorita bitilor de star/stop (8+1+1=10).
  • avem cateva statii de lucru in retea si utilizatorii fac download-uri masive tot timpul.
  • vrem ca paginile web sa se deschida rapid, indiferent de cate download-uri sunt in desfasurare
  • interfata de internet este ppp0
  • interfata LAN este eth0
  • reteaua noastra este 192.168.1.0/24

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:

  • prima modalitate este caracteristica principala a server-elor proxy -- de a mentine paginile web, imaginile sau alte obiecte in memorie sau pe disk. Deci, daca doua persoane cer aceeasi pagina web, ea nu va mai fi adusa de pe internet, ci de pe server-ul proxy.
  • diferit de caching-ul normal, Squid are o trasatura speciala numita 'delay pools'. Multumita acestei trasaturi este posibila limitarea traficului pe internet intr-o modalitate rezonabila, depinzand de asa zisele 'cuvinte magice', existente in orice URL dat. De exemplu, un cuvant magic poate fi '.mp3', '.exe' sau '.avi', etc. Orice parte distincta a unui URL poate fi definita drept 'cuvant magic'. Cu aceasta ii putem spune Squid-ului sa download-eze aceste tipuri de fisiere cu o anumita viteza (in exemplul nostru va fi in jur de 5 kbyte/s). Daca utilizatorii retelei download-eaza fisiere in acelasi timp, ele vor fi download-ate la aproape 5 kbyte/s impreuna, lasand restul de banda pentru pagini web, email, news, irc, etc.

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':

# useradd -d /cache/ -r -s /dev/null squid >/dev/null 2>&1

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:

# tar xzpf squid-2.4.STABLE1-src.tar.gz

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

# make all

# make install

3.2 Configurarea Squid-ului sa foloseasca 'delay pools'

Configurarea fisierului squid.conf (aflat in /opt/squid/etc/squid.conf):

#squid.conf
#fiecare optiune din acest fisier este foarte bine documentata in fiserul squid.conf original
#si la adresa www.visolve.com/squidman/Configuration%20Guide.html

#
#Porturile la care va asculta Squid
http_port 8080
icp_port 3130

acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
#Memoria care va fi folosita de squid. Ei bine, Squid va folosi mult mai multa
cache_mem 16 MB
#250 inseamna ca Squid va folosi 250 megaocteti de spatiu pe harddisk
cache_dir ufs /cache 250 16 256

#Localizarea log-urilor Squid-ului
cache_log /var/log/squid/cache.log
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log
cache_swap_log /var/log/squid/swap.log
#De cate ori sa roteasca log-urile inainte de ale sterge.
#Citeste 'Intrebari adresa frecvent pentru mai multe informatii.
logfile_rotate 10

redirect_rewrites_host_header off
cache_replacement_policy GDSF
acl localnet src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl Safe_ports port 80 443 210 119 70 20 21 1025-65535
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
maximum_object_size 3000 KB
store_avg_object_size 50 KB

#Seteaza urmatoarele doar daca vrei ca proxy-ul tau sa lucreze transparent.
#Proxy transparent inseamna ca, in general, nu trebuie sa iti configurezi toate browser-ele client
#acest lucru insa are si dezavantajele sale
#Lasandu-le necomentate nu vor face nici un rau.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

#Toti utilizatorii retelei vor fi vazuti de server-ele din exterior
#ca si cum ar folosi Mozilla sub linux.
anonymize_headers deny User-Agent
fake_user_agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.6+) Gecko/20011122

#Pentru a face conexiunea noastra sa fie si mai rapida, vom pune doua linii similare
#cu liniile de mai jos. Ele vor trimite catre un server proxy pe care il va folosi server-ul nostru Squid.
#Nu uita sa il schimbi cu server-ul care va fi mai rapid pentru tine!
#Masoarea ping-urile, traceroute-urile si asa mai departe
#Ai grija ca port-urile http si icp sa fie corecte.

#Decomenteaza liniile care incep cu 'cache_peer' daca este necesar.
#Acesta este proxy-ul pe care il vei folosi pentru toate conexiunile
#cache_peer w3cache.icm.edu.pl parent 8080 3130 no-digest default
#exceptie facand conexiunile la adresele si IP-urile care incep cu '!'.
#Este o idee buna sa nu folosesti un mai mare
#cache_peer_domain w3cache.icm.edu.pl !.pl !7thguard.net !192.168.1.1

#Acest lucru este folositor cand vrei sa folosesti Cache Manager-ul.
#Copiaza cachemgr.cgi in cgi-bin-ul server-ului www.
#Il poti utiliza prin intermediul unui browser web scriind
#adresa https://server-ul-web/cgi-bin/cachemgr.cgi
cache_mgr adresa_ta@de_email
cachemgr_passwd secret_password all

#Acesta este numele sub care va lucre Squid
cache_effective_user squid
cache_effective_group squid

log_icp_queries off
buffered_logs on


#####DELAY POOLS
#Aceasta este cea mai importanta parte a modelarii traficului de intrare cu Squid
#Pentru o descriere detaliata vezi fisierul squid.conf sau documentatia de la www.squid-cache.org

#Nu vrem sa limitam download-urile din reteaua locala
acl magic_words1 url_regex -i 192.168

#Vrem sa limitam download-ul acestor tipuri de fisiere
#Pune totul pe o singura linie
acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov
#Nu blocam .html, .gif, .jpg si alte fisiere similare, deoarece ele,
#in general, nu consuma multa latime de banda

#Vrem sa limitam latimea de banda in timpul zilei si sa lasam intreaga latime de banda noaptea
#Atentie! cu acl-ul de mai jos download-urile se vor intrerupe la 23:59
#Citeste in 'Intrebari adresate frecvent' cum se ocoleste aceasta problema.
acl day time 09:00-23:59

#Avem doua tipuri de delay pools diferite. #Citeste documentatia Squid-ului pentru a deveni familiar cu 'delay_pools' si 'delay_class'
delay_pools 2

#Primul delay pool
#Nu vrem sa reducem traficul local
#Exista trei clase; aici vom folosi doar a doua clasa
#Prima clasa (1) de al doi-lea tip (2)
delay_class 1 2

#-1/-1 inseamna ca nu exista limite
delay_parameters 1 -1/-1 -1/-1

#am setat mai inainte magic_words1: 192.168
delay_access 1 allow magic_words1


#Al doi-lea delay pool.
#vrem sa reducem viteza de download pentru fisierele mentionate in magic_words2.
#A doua clasa (2) de al doi-lea tip (2).
delay_class 2 2

#Numerele de aici sunt valori in octeti;
#trebuie sa tinem minte ca Squid nu ia in consideratie bitii de start/stop
#5000/150000 sunt valori pentru intreaga retea
#5000/120000 sunt valori pentru un singur IP
#dupa ce fisierele download-ate depasesc 150000 biti, #(sau chiar de doua sau de tri ori mai mult)
#vor continua download-ul la viteza de 5000 biti/s

delay_parameters 2 5000/150000 5000/120000
#Am setat mai inainte day la 09:00-23:59
delay_access 2 allow day
delay_access 2 deny !day
delay_access 2 allow magic_words2


#EOF


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/

# chown squid:squid /var/log/squid/

# chmod 770 /var/log/squid/

# chown -R squid:squid /opt/squid/

# chown -R squid:squid /cache/

Acum totul este pregatit pentru a lansa Squid-ul. Cand o facem pentru prima data, va trebui sa ii crem directoarele de cache:

# /opt/squid/bin/squid -z

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):

# /opt/squid/bin/squid

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)

# /opt/squid/bin/squid -help :) autoexplicat

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

/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 8080 -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:

/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 80 -p TCP -j REDIRECT 8080

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

/sbin/iptables -A FORWARD -s 192.168.1.1/24 -d ! 192.168.1.1 --dport 8080 -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:

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

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/:

# touch /etc/sysconfig/cbq/cbq-10.ftp-network

Vom introduce urmatoarele linii in el:

DEVICE=eth0,10Mbit,1Mbit
RATE=15Kbit
WEIGHT=1Kbit
PRIO=5
RULE=:20,192.168.1.0/24
RULE=:21,192.168.1.0/24

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/:

# /etc/rc.d/cbq.init-v0.6.2 start

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/:

# touch /etc/sysconfig/cbq/cbq-50.napsterandlive

Pune acestelinii in acel fisier:

DEVICE=eth0,10Mbit,1Mbit
RATE=35Kbit
WEIGHT=3Kbit
PRIO=5
#Windows Media Player.
RULE=:1755,192.168.1.0/24
#Realplayer utilizeaza portul TCP 554, pentru UDP
#utilizeaza alteporturi, dar in general Realaudio
#in UDP nu consuma multa latime de banda
RULE=:554,192.168.1.0/24
RULE=:7070,192.169.1.0/24
#Napster utilizeaza porturile 6699 si 6700, poate si altele?
RULE=:6699,192.168.1.0/24
RULE=:6700,192.168.1.0/24
#Audiogalaxy utilizeaza portuirle de la 41000 pana la probabil 41900,
#sunt multe, deci tineti minte ca nu le voi pune pe toate aici.
#Repetarea de 900 de ori a aproape aceleasi linii nu are rost.
#Pur si simplu vom elimina porturile 41031-41900 utilizand ipchains sau iptables
RULE=:41000,192.168.1.0/24
RULE=:41001,192.168.1.0/24
RULE=:41002,192.168.1.0/24
RULE=:41003,192.168.1.0/24
RULE=:41004,192.168.1.0/24
RULE=:41005,192.168.1.0/24
RULE=:41006,192.168.1.0/24
RULE=:41007,192.168.1.0/24
RULE=:41008,192.168.1.0/24
RULE=:41009,192.168.1.0/24
RULE=:41010,192.168.1.0/24
RULE=:41011,192.168.1.0/24
RULE=:41012,192.168.1.0/24
RULE=:41013,192.168.1.0/24
RULE=:41014,192.168.1.0/24
RULE=:41015,192.168.1.0/24
RULE=:41016,192.168.1.0/24
RULE=:41017,192.168.1.0/24
RULE=:41018,192.168.1.0/24
RULE=:41019,192.168.1.0/24
RULE=:41020,192.168.1.0/24
RULE=:41021,192.168.1.0/24
RULE=:41022,192.168.1.0/24
RULE=:41023,192.168.1.0/24
RULE=:41024,192.168.1.0/24
RULE=:41025,192.168.1.0/24
RULE=:41026,192.168.1.0/24
RULE=:41027,192.168.1.0/24
RULE=:41028,192.168.1.0/24
RULE=:41029,192.168.1.0/24
RULE=:41030,192.168.1.0/24
#Anumiti utilizatori mai inteligenti se vor conecta
#la server-e SOCKS cand utilizeaza Napster, Audiogalaxy, etc.;
#este o idee buna sa o faci cand deti propriul server SOCKS
RULE=:1080,192.168.1.0/24
#Adauga orice alt port; posti verifica si urmari usor porturile
#utilizate de programe cu ajutorul lui IPTraf
#RULE=:port,192.168.1.0/24

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

/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 41031:41900 -p TCP -j REJECT

Kernel 2.4.x

/sbin/iptables -A FORWARD -s 192.168.1.1/24 -d ! 192.168.1.1 --dport 41031:41900 -p TCP -j REJECT

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
FTP_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
RATE=15Kbit
WEIGHT=2Kbit
PRIO=5
TIME=01:00-07:59;110Kbit/11Kbit
RULE=,:21
RULE=,213.25.25.101
RULE=,:1214
RULE=,:41000
RULE=,:41001
RULE=,:41002
RULE=,:41003
RULE=,:41004
RULE=,:41005
RULE=,:41006
RULE=,:41007
RULE=,:41008
RULE=,:41009
RULE=,:41010
RULE=,:41011
RULE=,:41012
RULE=,:41013
RULE=,:41014
RULE=,:41015
RULE=,:41016
RULE=,:41017
RULE=,:41018
RULE=,:41019
RULE=,:41020
RULE=,:41021
RULE=,:41022
RULE=,:41023
RULE=,:41024
RULE=,:41025
RULE=,:41026
RULE=,:41027
RULE=,:41028
RULE=,:41029
RULE=,:41030

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:

RULE=,:25

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

/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 25 -p TCP -j REDIRECT 25

Kernel 2.4.x

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 25

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
#for module in sch_cbq sch_tbf sch_sfq sch_prio cls_u32; do
# if ! modprobe $module; then
# echo '**CBQ: could not load module $module'
# exit
# fi
#done

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
01 9 * * * root /bin/cp -f /opt/squid/etc/squid.conf-day /opt/squid/etc/squid.conf; /opt/squid/bin/squid -k reconfigure
59 23 * * * root /bin/cp -f /opt/squid/etc/squid.conf-night /opt/squid/etc/squid.conf; /opt/squid/bin/squid -k reconfigure

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
01 4 * * * root /opt/squid/bin/squid -k rotate; /usr/sbin/logrotate /etc/logrotate.conf; /bin/rm -f /var/log/squid/*.log.0

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
/var/log/squid/*.log.0

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/:

TIME=00:00-07:59;110Kbit/11Kbit

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:

[root@mangoo rc.d]# ./cbq.init start; ./cbq.init timecheck **CBQ: 3:44: class 10 on eth0 changed rate (20Kbit -> 110Kbit) **CBQ: 3:44: class 40 on ppp0 changed rate (15Kbit -> 110Kbit) **CBQ: 3:44: class 50 on eth0 changed rate (35Kbit -> 110Kbit)

In urmatorul exemplu ceva nu a mers cum trebuie, probabil in cel de al doi-lea fisier de configurare aflat in /etc/sysconfig/cbq/.

[root@mangoo rc.d]# ./cbq.init start; ./cbq.init timecheck **CBQ: 3:54: class 10 on eth0 changed rate (20Kbit -> 110Kbit) ./cbq.init: 08: value too great for base (error token is '08')

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


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.