Squid ograniczany przez htb

W tym miejscu zapraszamy Was do współpracy. Czekamy na propozycje, sugestie i rady.
Moderatorzy zatroszczą się o to, by najlepsze teksty trafiły do FAQ.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Squid ograniczany przez htb

Post autor: bojleros » 2006-04-17, 21:45

Kwiecień 2006 , Gliwice/Mysłowice

1.Cele FAQ:

a) poprawna instalacja squida ze źródeł na slackware wraz z łatką na HIT-MISS
b) opis czynności poinstalacyjnych
c) squid.conf - konfigurujemy i oczyszczamy z farfocli
d) logi squida
e) podstawy htb z ujęciem markowania ruchu wychodzącego ze squida


2.Instalacja squida.

a) przygotowanie źródeł

Zapoznajmy się z zawartością strony:

http://sed.pl/~mrk/qos/

Znajdziemy opis działania łatki wraz z elementarnymi przykładami.

Ściągnijmy łatkę:

Kod: Zaznacz cały

cd /usr/src/
wget http://sed.pl/~mrk/qos/squid_hit_miss_mark.patch
Teraz pora na squida. Niestety łatka jaką mamy na dysku jest bardzo stara ( pod squida-2.5-stable3 !). Aplikuje się czysto na squida-2.5-stable10 , na nowszych niestety mi sie nie udało :/ Dlatego proponuje ściągnąć stable10 a jeżeli komuś się coś udało zrobić coś z tą łatką lub w inny sposób to obejść to proszę o odpowiedni komentarz. Alternatywnie w najbliższej przyszłości wypróbuje łatkę ZPH.

Kod: Zaznacz cały

wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE10.tar.gz
Rozpakowanko:

Kod: Zaznacz cały

tar zxvf squid-2.5.STABLE10.tar.gz
Wsadzamy łatkę tam gdzie trzeba:

Kod: Zaznacz cały

cp squid_hit_miss_mark.patch squid-2.5.STABLE10/
cd squid-2.5.STABLE10/
Patchowanko:

Kod: Zaznacz cały

patch -p1 <squid_hit_miss_mark.patch
U mnie przechodzi bez błędów na w/w wersjach squida.



b) konfiguracja źródeł oraz kompilacja

Kod: Zaznacz cały

Opcjonalne.
Powinniśmy mieć ustawione odpowiednio zmienne systemowe CFLAGS i CXXFLAGS. Mówią one kompilatorowi o naszej architekturze oraz o innych opcjach kompilacji.

Przykładowo dla athlona 2800+ :
-O2 -march=athlon-xp -pipe -fomit-frame-pointer
Pora na konfiguracje źródeł.

Kod: Zaznacz cały

./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/man -enable-dlmalloc --enable-gnuregex --enable-icmp --enable-delay-pools --enable-useragent-log --enable-referer-log --enable-ssl --enable-default-err-language="Polish" --enable-err-languages="Polish English" --enable-linux-netfilter --disable-ident-lookups --disable-hostname-checks --enable-underscores --enable-auth="digest basic"
Opis ciekawszych opcji:
--enable-dlmalloc -- kompilacja z alternatywną biblioteką do dynamicznej alokacji pamięci
--enable-gnuregex -- biblioteka pozwalająca tworzyć acl oparte na wyrażeniach regularnych
--enable-icmp -- włączenie obsługi protokołu icmp
--enable-delay-pools -- ograniczanie transferów squidem, osobiście nie używam
--enable-useragent-log -- logowanie rodzaju przeglądarek jakie korzystają z proxy
--enable-ssl -- akceleracja https
--enable-linux-netfilter -- umożliwia ustawienie transparentnego proxy
--disable-ident-lookups -- squid nie będzie wykonywał zapytań ident , które często kończą się zbędnym oczekiwaniem na timeout
--disable-hostname-checks -- squid nie sprawdza nazwy hostów pod względem ogólnej zgodności z normami
--enable-underscores -- normalnie squid nie rozpoznaje nazw hostów ze znakiem "_", ta opcja to naprawia
--enable-auth="..." -- włączenie autoryzacji , można pominąć


Po czystym przejściu configure dajemy:

Kod: Zaznacz cały

make
make install
3. Ogólna konfiguracja squida oraz jego otoczenia

a) przygotowanie środowiska pracy dla squida

Po pierwsze należy wybrać katalog w którym będziemy trzymać cache. Katalog powinien znajdować sie na partycji na której możemy sobie pozwolić na zajęcie przez niego sporego kawałku miejsca.

Kod: Zaznacz cały

mkdir /var/squid-cache
Squid nie powinien pracować na roocie. Tworzymy użyszkodnika oraz grupę.

Kod: Zaznacz cały

useradd -G squid -d /var/squid-cache squid

chown squid:squid /var/squid-cache
chmod 750 /var/squid-cache
Przydatny jest oddzielny katalog na logi:

Kod: Zaznacz cały

mkdir /var/log/squid
chown squid:root /var/log/squid
chmod 750 /var/log/squid
Ponieważ /etc/squid.conf zawierał będzie nasze hasło do cachemenagera trzeba wykonać:

Kod: Zaznacz cały

chown squid:root /etc/squid.conf
chmod 660 /etc/squid.conf
Cała otoczka jest gotowa.



b) /etc/squid.conf - Konfigurowanie i sprzątanie

Kod: Zaznacz cały

Za każdym razem jak konfiguruje squida czyszczę wszystkie komentarze w /etc/squid.conf. Można to pominąć , jak kto chce :) Dla wygody:

cd /etc/
cp squid.conf squid.conf.orig
Teraz w ulubionym edytorze otwieramy squid.conf

A oto przykładowy config:

Kod: Zaznacz cały

#----------ciach--------------
######/etc/squid.conf
#na tym porcie śmiga squid
http_port 8080 
#nie należy keszować skryptów cgi-bin
hierarchy_stopcode cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

#ilość pamięci fizycznej użyta jako cache
cache_mem 64 MB
#na jakim poziomie zapełnienia ma pracować cache dyskowe 
cache_swap_low 95
cache_swap_high 98
#maksymalna wielkość pliku w cache
maximum_object_size 60000 KB
#katalog w którym siedzi cache , pierwsza cyfra to wielkość w megabajtach, dalej ilość katalogów pierwszego poziomu, oraz ilosc katalogów drugiego poziomu 
cache_dir ufs /var/squid-cache 4096 16 256

#logowanie
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
referer_log /var/log/squid/store.log
#czy logi mają wyglądać jak logi apache
emulate_httpd_log off
pid_filename /var/run/squid.pid
# gdy zapodamy squid -k rotate to nastąpi rotacja logów , squid bedzie trzymał 15 ostatnich rotacji
logfile_rotate 15

#plik hosts, prymitywne rozwiązywanie nazw :)
hosts_file /etc/hosts

# przykładowe reguły odświeżania zawartości cache
refresh_pattern -i (.*jpg$|.*gif$) 0 50% 28800
refresh_pattern -i (.*html$|.*htm|.*shtml) 0 20% 1440
refresh_pattern (http://.*/$) 0 20% 1440
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern . 0 20% 4320

#kontrola dostępu
acl all src 0.0.0.0/0.0.0.0
#poniżej sieć lokalna
acl lan src 10.0.0.0/8
#definicja acl dla cachemgr.cgi
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
#acl dla portów na których pracują usługi które squid potrafi przyśpieszać
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports, np. pasywne ftp
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 CONNECT method CONNECT
#dozwolenie sieci lokalnej na korzystanie z akceleratora
http_access allow lan
#cachemgr.cgi może się łączyć tylko z localhosta
http_access allow manager localhost
http_access deny manager
#odrzucenie połaczeń z nieznanymi portami 
http_access deny !Safe_ports
#ograniczenie łączenia poprzez CONNECT tylko do połączeń szyfrowanych
http_access deny CONNECT !SSL_ports
http_access deny all
http_reply_access allow lan
icp_access allow lan

#tu ustawiamy hasło dla cachemgr.cgi , all oznacza pozwolenie na wszystkie akcje 
cachemgr_passwd haslo all
#ustawmy adres mailowy który w razie kłopotów z połączeniem ze stroną zostanie wyświetlony wraz z komunikatem o błędzie
cache_mgr nospam_admin@polsl.pl_nospam

#użytkownik i grupa na której działa squid
cache_effective_user squid
cache_effective_group squid

#te opcje umożliwiają transparentne proxy
httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

#dla archaicznych internet exploderów :P
ie_refresh on

#--------------ciach----------------------
d) drobny przykład do regexp

Załóżmy sobie acl'e , zaraz po "#kontrola dostępu"

Kod: Zaznacz cały

acl blok_plikow urlpath_regex "/etc/squid/pliki.acl"
acl blok_reklam url_regex "/etc/squid/reklamy.acl"
Następnie przed pierwszą regułką "http_access ..." dodajemy:

Kod: Zaznacz cały

http_access deny blok_plikow
http_access deny blok_reklam
Tworzymy wraz z odpowiednimi uprawnieniami pliki /etc/squid/pliki.acl oraz /etc/squid/reklamy.acl

Zawartość pliki.acl

Kod: Zaznacz cały

\.[Zz][Ii][pP]$
\.[Vv][Ii][Vv].*
\.[Ee][Xx][Ee]$
\.[Mm][Pp]3$
\.[Rr][Aa][Rr]$
\.[Aa][Cc][Ee]$
\.[Aa][Ss][Ff]$
\.[Aa][Vv][Ii]$
\.[Mm][Oo][Vv]$
\.[Mm][Pp][Gg]$
\.[Mm][Pp][Ee][Gg]$
\.[Aa][Uu]$
\.[Rr][Aa]$
\.[Aa][Rr][Jj]$
\.[Tt][Aa][Rr]$
\.[Gg][Zz]$
\.[Zz]$
Zawartość reklamy.acl

Kod: Zaznacz cały

/adv/.*\.gif$
/[Aa]ds/.*\.gif$
/[Aa]d[Pp]ix/
/[Aa]d[Ss]erver
/[Aa][Dd]/.*\.[GgJj][IiPp][FfGg]$
/[Bb]annerads/
/adbanner.*\.[GgJj][IiPp][FfGg]$
/images/ad/
/reklame/
/RealMedia/ads/.*
^http://www\.submit-it.*
^http://www\.eads.*
^http://ads\.
^http://ad\.
^http://ads02\.
^http://adaver.*\.
^http://adforce\.
adbot\.com
/ads/.*\.gif.*
_ad\..*cgi
/Banners/
/SmartBanner/
/Ads/Media/Images/
^http://static\.wired\.com/advertising/
^http://*\.dejanews\.com/ads/
^http://adfu\.blockstackers\.com/
^http://ads2\.zdnet\.com/adverts
^http://www2\.burstnet\.com/gifs/
^http://www.\.valueclick\.com/cgi-bin/cycle
^http://www\.altavista\.com/av/gifs/ie_horiz\.gif
Mając taki rozwinięty przykład można tworzyć własne maski. Pierwszy plik odpowiada za blokadę ściągania plików zip itd.... drugi pozwala odsiewać url odwołujące sie do reklam które stają się coraz bardziej wredne.


e) kończymy ze squidem

Troche grzebaniny już za nami.
Ustawmy squidowi rotację logów:

Kod: Zaznacz cały

touch /etc/cron.weekly/squid-rotate
chown root. /etc/cron.weekly/squid-rotate
chmod 700 /etc/cron.weekly/squid-rotate
Teraz w ulubionym edytorze otwieramy plik i stawiamy zawartość:

Kod: Zaznacz cały

#!/bin/sh
squid -k rotate 
Następnie możemy już utworzyć cache dla squida. Musisz to powtórzyć po rekompilacji squida.

Kod: Zaznacz cały

squid -z
Sprawdzmy poprawność squid.conf

Kod: Zaznacz cały

squid -k parse
Jeżeli nic nie wypluwa to sprawdźmy działanie squida. Wygodnie będzie go odpalić na konsoli a nie w tle.

Kod: Zaznacz cały

squid -NX
Można z innej konsoli sprawdzić linksem jak działa po localhoście , potem logując się na innego kompa w sieci zobaczyć jak na nim działa.


f) transparentne proxy

Jest to bardzo wygodny sposób żeby zmusić niepokornych użytkowników do korzystania z naszego proxy. Nie cały proces opiera sie o kilka linijek w squid.conf i o przekierowanie na firewallu.

Drobny przypadek akademicki :P
Załóżmy że na moim routerze który ma dwa interfejsy, eth0 internetowy i eth1 lokalny, pracuje serwer www. Logicznie rzecz biorąc powinno się odwoływać do serwera adresem ip który serwer ma z danej strony z której chcemy się na niego dostać. Nie mam jednak serwera dns który będzie rozwiązywał nazwy na adresy zależnie od tego skąd przyszło zapytanie a jego stawianie mija sie z celem dla małej liczby userów. Także nie chce żeby ruch z mojego lokalnego serwera www był keszowany.

Naturalnie poprawiamy squid.conf.
Następnie dorzucamy sobie regułki do firewalla które będą przekierowywały delikwentów :)
Oczywiście w łańcuchu INPUT musi być odpowiednia regułka dopuszczająca ruch z lanu na port squida.

Kod: Zaznacz cały

iptables -t nat -N proxy
iptables -t nat -A proxy -d ip_z_eth0 -j RETURN
iptables -t nat -A proxy -d ip_z_eth1 -j RETURN
iptables -t nat -A proxy -j REDIRECT --to-port port_squida
iptables -t nat -A PREROUTING -p tcp --dport 80 -s michal -j proxy 
iptables -t nat -A PREROUTING -p tcp --dport 80 -s ziutek -j proxy  
Dodatkowo wypada zastosować specjalny acl :

Kod: Zaznacz cały

acl bezposrednie dst $ip
always_direct allow bezposrednie

Opisany tutaj problem jest dosyć egzotyczny. Do prostych zastosowań starczy jedna regułka na użytkownika lub nawet na całą podsieć. Te tłumaczą dokładniej zachodzący proces.


4. Gwóźdź programu czyli squid ograniczany przez htb.

Ktoś może zapytać jak można ograniczyć squida, czyli proces lokalny , który de facto ściąga za nas daną treść a potem, bez uczestnictwa procesów routingu, ją przekazuje. Całą tajemnica ograniczania transferów ze squida opiera się o fakt że squid ma wewnętrzny bufor który dla połączenia będącego chybieniem ulega zapełnieniu jeżeli prędkość jego opróżniania nie jest wystarczająca. Gdy wspomniany bufor jest pełny to squid przerywa ściąganie oczekując na jego opróżnienie.

Bardzo ważną rzeczą jest to że kształtując ruch nie mamy wpływu na transfery przychodzące !! Możemy kontrolować tylko to co wysyłamy. Efekt kontroli pasma w obydwu kierunkach uzyskujemy dzięki kształtując ruch wychodzący na interfejsie sieci lokalnej oraz na interfejsie internetowym routera. Opiszę kształtowanie ruchu w kierunku download.


a) założenia

Załóżmy że mamy sieć lokalną pomiędzy serwerem i klientami która jest maskaradowana. Dla uproszczenia przyjmijmy że klient jest tylko jeden. Jeżeli klient ściąga pliki lokalnie lub z cache naszego squida to umożliwiamy mu to z prędkością lanu. Jeżeli natomiast transfer odbywa się z internetu to zostaje ograniczony.


b) ustawiamy htb na interfejsie sieci lokalnej


Czyścimy poprzednie ustawienia :

Kod: Zaznacz cały

tc qdisc del root dev eth1
Zakładamy kolejkę głowną:

Kod: Zaznacz cały

tc qdisc add root dev eth1 handle 1: htb
#root jest klasą najwyższą
Tworzymy kolejki obrazujące dwie kategorie ruchu: download z internetu wraz z chybieniami z cache , download lokalny i trafienia z cache. Pierwsza kolejka ma rate (prędkość/pasmo) zbliżony do prędkości FAKTYCZNIE osiąganych na łączu internetowym. Druga kolejka ma największy rate osiągany przy transferach lokalnych pomniejszony od rate kolejki pierwszej. Przybliżenie w dół jest tutaj konieczne po to aby kolejki zdołały wysłać wszystkie pakiety w ciągu jednego cyklu. Jeżeli nie będą nadążały to nastąpią straty pakietów lub w najlepszym razie spore opóźnienia.

Kod: Zaznacz cały

#łącze z internetem 1 mbit , łacze lanowe osiąga 62 Mbit
tc class add dev eth1 parent 1: classid 1:10 htb rate 1Mbit ceil 1mbit burst 30k
tc class add dev eth1 parent 1: classid 1:20 htb rate 61Mbit ceil 61Mbit
#parent – rodzić – klasa nadrzędna w stosunku do tej którą definiujemy 
#classid – identyfikator nowo utworzonej klasy
#htb – jako algorytmu kolejkowania używamy htb , obecnie najdokładniejsza z kolejek odpowiednich do zastosowań w sieciach lokalnych  
#rate – gwarantowane pasmo dla kolejki
#ceil – maksimum pasma , które zostaje pożyczone od kolejek które go nie wykorzystują
#burst – maksymalna ilość danych przechodząca przez kolejkę bez ograniczeń transferu
Tworzymy kolejki użytkowników oraz klasy sfq które zapewnią sprawiedliwe wykorzystanie pasma przez wiele połączeń. Ma to znaczenie gdy mamy w sieci lamki które potrafią włączyć 2 programy p2p i narzekać na to że im sie onet nie otwiera. Daje to też sporą wygodę ponieważ standardowe kolejki na interfejsach zapewniają 3-stopniową kwalifikację ruchu na podstawie bitów tos pakietu.

Kod: Zaznacz cały

tc class add dev eth1 parent 1:10 classid 10:100 htb rate 100kbit ceil 800kbit burst 10k
tc qdisc add dev eth1 parent 10:100 handle 100: sfq perturb 15
# rate i ceil kolejek podrzędnych nie może przekraczać rate i ceila kolejek nadrzędnych w innym wypadku dojdzie do strat pakietów oraz zbędnych opóźnień
# perturb – parametr mówi sfq po ilu sekundach ma zmienić algorytm zarządzenia ruchem pakietów , ustawiono 15 sekund
Teraz pora załączyć odpowiednie filtry które skierują pakiety do kolejek.

Kod: Zaznacz cały

tc filter add dev eth1 protocol ip parent 1: handle 1 fw flowid 1:20
tc filter add dev eth1 protocol ip parent 1: handle 2 fw flowid 10:100
#handle X fw – X to znacznik który założymy pakietom pasującym do tej kolejki na firewallu
#flowid mówi do jakiej kolejki mają trafić pakiety pasujące do filtra
Korzystając z opisu zamieszczonego na stronie twórcy użytego squid-patcha muszę już tylko zapisać :

Kod: Zaznacz cały

#Trafienia 
iptables -t mangle -A POSTROUTING -s $ip_serwera -d $ip_klienta -p tcp –-sport $port_squida -m tos –-tos 0 -j MARK –-set-mark 1
#Chybienia
iptables -t mangle -A POSTROUTING -s $ip_serwera -d $ip_klienta -p tcp –-sport $port_squida -m tos –-tos 8 -j MARK –-set-mark 2

Ponadto użyszkodnik ściąga z internetu oraz z serwera
iptables -t mangle -A POSTROUTING -s ! $ip_serwera -d $ip_klienta -j MARK –-set-mark 2
iptables -t mangle -A POSTROUTING -s $ip_serwera -d $ip_klienta -j MARK –-set-mark 1
4. Posłowie/Manifest ]:->

Do napisania artykułu zainspirowały mnie moje problemy z łączem oraz dyskusja wywołana artykułem Maiki'ego z której lektury w dużym stopniu skorzystałem. Sam często walczyłem z postawieniem squida który dla początkującego użytkownika nie jest ani trochę przyjazny. Do czasu gdy do kształtowania ruchu w mojej sieci używałem super-auto-shaperów nie interesowały mnie dokładniejsze zagadnienia kontroli ruchu pod linuxem. Gdy moja sieć się rozrosła zrodziła się konieczność postawienia proxy z prawdziwego zdarzenia. Niestety okazało się jednocześnie ,że automagiczne shapery nie dają sobie rady z p2p i wymaganiami efektywnego wykorzystania łącza przy utrzymaniu zdrowych pingów dla graczy. Proponowane w artykule Maiki'ego ograniczanie transferów z proxy poprzez delay pols nie przypadło mi do gustu ponieważ tworzyło rozdźwięk w całym moim zamyśle kontroli pasma. Takie podejście zakłada ograniczanie transferów w dwóch oddzielnych ośrodkach: w squidzie dla www ftp , oraz w kernelowym tc. Stan taki byłby dla mnie całkowicie do zaakceptowania jeżeli dysponowałbym bardzo szybkim łączem. Osobiście uważam ,że w małych sieciach pasmo powinno być przydzielane na każdego użytkownika osobno i to co użytkownik robi z tym pasmem to jest jego sprawa nawet jeżeli w ramach ponoszenia konsekwencji swoich działań mają mu się strony nie otwierać ;)

BTW. Proszę o konstruktywną krytykę, mogłem się jeszcze troche mylić w zawiłej terminologii htb ponieważ zajmuję się tym dopiero od miesiąca ;) Muszę jeszcze dopisać dział o logach squida lecz nie zabieram się za niego dopóki nie dowiem się co sądzicie o całej reszcie

5. Źródła
SQUID:
- Artykuł Maiki'ego wraz z większością komentarzy
- squid-cache.org
- odrobinka http://zlobek.tcz.wroclaw.pl/
- http://aqua.aspd.pwr.wroc.pl/doc/squid/FAQ-6.html

HTB:
- http://lukasz.bromirski.net/docs/transl ... tc-pl.html
- http://logout.pl/ebooks/htb.pdf
- lektura gotowych skryptów do kontroli pasma
Ostatnio zmieniony 2006-05-14, 10:48 przez bojleros, łącznie zmieniany 5 razy.

Awatar użytkownika
maiki
Użytkownik
Posty: 376
Rejestracja: 2004-06-18, 10:41
Lokalizacja: Tarnów
Kontakt:

Re: Squid ograniczany przez htb

Post autor: maiki » 2006-04-19, 07:52

Bardzo fajnie że ktoś rozwija dalej faq dot. squida
co do patcha: http://www.it-academy.bg/zph/
tutaj chyba bardziej aktualna wersja
pozdrawiam
Want a productivity tip? Go away and do it fucking now.

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Re: Squid ograniczany przez htb

Post autor: bojleros » 2006-04-19, 09:51

Niestety nie mogłem sobie zabardzo pozwolić na testy squida z ZPH bo sieć musiała śmigać :/
Używasz ZPH ??

Awatar użytkownika
maiki
Użytkownik
Posty: 376
Rejestracja: 2004-06-18, 10:41
Lokalizacja: Tarnów
Kontakt:

Re: Squid ograniczany przez htb

Post autor: maiki » 2006-04-20, 06:13

A czy ZPH nie jest alternatywą albo nawet dlaszym rozwinięciem pactha którym patchujesz swojego squida, am i wrong, correct me ;]
No i jest do wyższych (aktualnych) wersji squida.
Patcha nie używam.
Want a productivity tip? Go away and do it fucking now.

Awatar użytkownika
snaj
Moderator w st. spocz.
Posty: 1608
Rejestracja: 2004-10-10, 16:32
Lokalizacja: Warszawa
Kontakt:

Re: Squid ograniczany przez htb

Post autor: snaj » 2006-04-20, 16:12

IMO glupota jest ksztaltowanie ruchu squida na interfejsie lanowym.
Od ksztaltowania ruchu squida jest imq + htb na iface netowym + ewentualne delay_pools jesli chcemy ciac klientow.

A transfer ze squida do klientow juz nie powinien w ogole byc dotykany, ale isc ile squid i kabel daje.

Co do kwestii merytorycznej faqu nie wypowiem sie bo jakos nie mam ochoty na tak dluga lekture (rzeczy ktore juz u mnie i tak dzialaja) :twisted: Byc moze pozniej wydam opinie.

Ok zebralem sie i zerknalem:
1. Nie DNAT ale REDIRECT raczej tu lepiej pasuje.
2. squid -k logrotate od keidy on ma opcje logrotate ?
3. weekly przy walczonycm logowaniu access moze byc o wiele za rzadko.
4. Przy duzym obciazeniu squid moze w kilkanascie minut wygenerowac logi access rzedu kilkudziesieciu MB, a rotate squidowy nie pakuje, wiec nalezy sie zdac na logrotate i jego compress jesli zalezy nam na zachowaniu poprzednich logow.
5."Bardzo ważną rzeczą jest to że kształtując ruch nie mamy wpływu na transfery przychodzące !! Możemy kontrolować tylko to co wysyłamy. " to zalezy co mamy do dyspozycji, przy uzyciu imq a nawet i bez nich (bardzo zaawansowane tunelowanie) mozna swobodnie ksztalowac download.
6."Całą tajemnica ograniczania transferów ze squida opiera się o fakt że squid ma wewnętrzny bufor który dla połączenia będącego chybieniem ulega zapełnieniu jeżeli prędkość jego opróżniania nie jest wystarczająca." - otoz to przy duzej ilosci klientow i bez limitow na download squid zre pamiec jak dziki i w koncu logi sa pelne informacji ze nie mozna bylo zaalokowac pamieci. A dzieki delay-poolom in i out ze squida idzie bez zbednego buforowania.
7. "tc class add dev eth1 parent 1:10 classid 10:100 htb rate 100kbit ceil 800kbit burst 10k
tc qdisc add dev eth1 parent 10:100 handle 100: sfq perturb 15 " gdybys nie zrobil dwoch root class nie musialbys tutaj dodawac jeszcze jednej zbytecznej (10:100).
8. Zablokwane sciaganie plikow .rar itd ??
9. Niektore acle urli sa zbyt ogolne i moga powodowac problemu u klientow.
No to chyba na tyle.
Ostatnio zmieniony 2006-04-20, 18:40 przez snaj, łącznie zmieniany 3 razy.
*
[color=blue]Sieci[/color]/[color=green]Serwery[/color]/[color=red]Security[/color] - Freelancer
*

Awatar użytkownika
bzyk
Moderator w st. spocz.
Posty: 991
Rejestracja: 2004-06-05, 06:32
Lokalizacja: Pszczyna
Kontakt:

Re: Squid ograniczany przez htb

Post autor: bzyk » 2006-04-22, 17:45

Ja dodam jeszcze, ze squida lepiej uruchamiac za pomoca skryptu RunCache ktory znajduje sie /usr/local/squid/bin (o ile squida instalujemy domyslnie). RunCache podniesie ponownie squida w razie padu tegoz. No i zgadzam sie ogolnie ze snajem; po co htb skoro jest delay_pool :-)
In /dev/null no one can hear you scream.

Awatar użytkownika
Skyscraper
Administrator
Posty: 753
Rejestracja: 2004-05-22, 10:46
Lokalizacja: Wrocław
Kontakt:

Re: Squid ograniczany przez htb

Post autor: Skyscraper » 2006-04-22, 19:05

Wodzowie :) Wy mi powiedzcie jak najschludniej i najszybciej ograniczyc ludziom w sieci wysylanie danych (przez squida?). Chodzi o to ze niekiedy ktos wysyla pocztą (poprzez www) jakieś spore ilości danych (w mejlach) i tym samym wysyca cale pasmo wyjsciowe. Będę wdzięczny :)

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Re: Squid ograniczany przez htb

Post autor: bojleros » 2006-05-06, 23:02

Dziękuje za wskazówki. Przeczytam dokładniej gdy będe dysponował większą ilością wolnego czasu :/
Ostatnio zmieniony 2006-05-06, 23:03 przez bojleros, łącznie zmieniany 2 razy.

Awatar użytkownika
snaj
Moderator w st. spocz.
Posty: 1608
Rejestracja: 2004-10-10, 16:32
Lokalizacja: Warszawa
Kontakt:

Re: Squid ograniczany przez htb

Post autor: snaj » 2006-05-06, 23:22

Skyscraper pisze:Wodzowie :) Wy mi powiedzcie jak najschludniej i najszybciej ograniczyc ludziom w sieci wysylanie danych (przez squida?). Chodzi o to ze niekiedy ktos wysyla pocztą (poprzez www) jakieś spore ilości danych (w mejlach) i tym samym wysyca cale pasmo wyjsciowe. Będę wdzięczny :)
sfq na interfejsie wyjsciowym, da po rowno kazdemu polaczeniu.
*
[color=blue]Sieci[/color]/[color=green]Serwery[/color]/[color=red]Security[/color] - Freelancer
*

Awatar użytkownika
bzyk
Moderator w st. spocz.
Posty: 991
Rejestracja: 2004-06-05, 06:32
Lokalizacja: Pszczyna
Kontakt:

Re: Squid ograniczany przez htb

Post autor: bzyk » 2006-05-10, 12:28

...W danej klasie. Wszystko zalezy Sky, jak sobie klasy ustawisz. Bo jak postawisz wysokie prio dla klasy www i dasz jej duzo pasma, to taka sytuacja bedzie miala miejscie - ktos wysylajac maile przez www zezre cale pasmo i pozostale uslugi dostana po dupie. Wszyko zalezy od konfiguracji.
In /dev/null no one can hear you scream.

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Re: Squid ograniczany przez htb

Post autor: bojleros » 2006-05-14, 11:34

Poprawiłem to troszki.

Snaj , Oczywiście masz rację co do tego sposobu podejścia do problemu ale wydaje mi sie on lepszy gdy masz małe wysycone łacze a twoim użyszkodnikom zalezy jednocześnie na transferach i na dobrym pingu. Rządze małą siecią osiedlową i na mojej przestarzałej bramce na której mam squida nie zauważam żadnych przeciązeń systemu . Nie widzę żeby www sie zapychało. Sam wolałbym Twoje rozwiązanie gdybym miał większe łącze i mniej pazernych userów. Podejżewam że nie ja sam jestem w takiej sytuacji wiec dlatego napisałem ten tekst. Rozumiem ze chcesz zeby mój faq był złotym środkiem na wszystko ale sam tyuł mówi o proponowanym sposobie rozwiązania problemu.

Na ustawienie rotacji logów nie ma jednego sposobu. U mnie weekly starcza. Kompresje logów zrobiłem całkiem niedawno używając logrotate. Na czas kompresowania logów wyłaczam squida. Cała akcja dzieje się w nocy z niedzieli na poniedziałek wiec jest całkowicie nieszkodliwa. Co sądzisz o takim sposobie ?? Oczywiście zawsze mozna pominąć wyłaczanie squida ale wtedy troche logów może ulecieć :)

Możesz dokładniej napisać co C i się nie podoba w moich przykładach do regexpa ??
Czy jest jaki sposób żeby maualnie regulować bufory squida ??



Skyscraper, Jeżeli zależy Ci na oddzielnym ograniczaniu squida to możesz zainteresować się tym:

iptables -t mangle -A OUTPUT -s ip_serwera -m owner --uid-owner uid_squida -j MARK ..........

Niezapominając o wysyłaniu zapytań o strony i dns wsadzić resztę w jakąś extra-wredną klasę. Niech się uczą obsługi programów pocztowych ]:-> :P

Zależnie od sytuacji tez można przez delay pools. :)

Awatar użytkownika
Radek_R
Moderator
Posty: 1196
Rejestracja: 2004-06-14, 11:40
Lokalizacja: Kraków
Kontakt:

Re: Squid ograniczany przez htb

Post autor: Radek_R » 2006-08-20, 21:32

bojleros, wiesz jak to jest: jak sie ma 4xDSL po 4Mbit kazdy to sie czlowiek o pasmo nie martwi i nie stara sie go wykorzystac najlepiej jak mozna....
#358274
http://www.prook.net

blazejwiecha
Użytkownik
Posty: 106
Rejestracja: 2006-07-15, 16:21
Lokalizacja: Świętochłowice
Kontakt:

Re: Squid ograniczany przez htb

Post autor: blazejwiecha » 2007-10-06, 09:41

ma ktoś patcha do 2.6 bo z tego linku co powyżej znajdziemy to nie można pobrać.

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Re: Squid ograniczany przez htb

Post autor: bojleros » 2007-10-06, 15:22


Awatar użytkownika
memus
Użytkownik
Posty: 245
Rejestracja: 2005-09-27, 17:17

Re: Squid ograniczany przez htb

Post autor: memus » 2007-12-05, 12:43

Najnowszy:
http://zph.bratcheda.org/squid-2.6.STAB ... erve.patch

Bo ten ze strony niceshaper'a mi nie działał
Ostatnio zmieniony 2007-12-05, 12:43 przez memus, łącznie zmieniany 2 razy.

ODPOWIEDZ