Squid - transparent proxy i delay pools.

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
maiki
Użytkownik
Posty: 376
Rejestracja: 2004-06-18, 10:41
Lokalizacja: Tarnów
Kontakt:

Squid - transparent proxy i delay pools.

Post autor: maiki » 2005-03-18, 13:06

Wstęp.
Wiem że jest pare opisów Squida krążących po sieci ale na forum nie zauważyłem
Może komuś pomogę, było by miło ;-)
Nie jestem ekspertem w tej dziedzinie, ale chciałem coś zrobić dla potomnych i forumowiczów którzy tego jeszce nie robili ;-)

1. Instalacja;

Zaczynamy od utworzenia użytkowanika i grupy squid.

Kod: Zaznacz cały

useradd -d /cache/ -s /dev/null squid
groupadd squid
oraz katalogu na nasz cache

Kod: Zaznacz cały

mkdir /cache
Przypisujemy do niego użytkownika squid

Kod: Zaznacz cały

chown -R squid.squid /cache/

Sciagamy najnowaszą wersje Squida z www.squid-cache.org

Kod: Zaznacz cały

cd /tmp
	wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE9.tar.gz
w chwili pisania tego FAQ jest to najnowsza wersja.
Rozpakować

Kod: Zaznacz cały

tar -zxvf squid-2.5.STABLE9.tar.gz
przechodzimy do katalogu z rozpakowanym źródełkiem, kompilujemy i instalujemy Squida:
Ja robię to z takimi opcjami. Ciekawy jestem jak Wy robicie.

Kod: Zaznacz cały

./configure --prefix=/usr/squid-20050317 Sciezka instalacji
--enable-delay-pools Dodajemy Obsługę delay pools
--enable-err-language=Polish
--enable-default-err-language=Polish
--enable-underscores Squid nie obsługuje nazw serwerów ze znakiem '_'.Ta opcja to zmienia.
--enable-linux-netfilter Obsługa transparentnego proxy
--enable-gnuregex

make
make install
tyle - masz już Squida.

2. Konfiguracja;

Otwieramy swoim ulubionym edytorem tekstu plik squid.conf
Postarm się opisać poszególne opcje konfiguracyjne naszego serwera, prosze o uzupełniania w razie błędu :)

Kod: Zaznacz cały

# transparentny proxy

# port nn którym działa serwer
	http_port 3128		
# Co squid ma przyspieszać	
# Podajemy port 80, na tym działa www, ten port będzie przyspieszać squid 
	httpd_accel_port 80
# Wymagane do powyższego
	httpd_accel_with_proxy on
# obsługa akceleracji hostów virtualnych
	httpd_accel_host virtual
# Wymagane do transparentnego proxy 
	httpd_accel_uses_host_header on
# Włanczamy keszowanie cgi
	hierarchy_stoplist cgi-bin ?
	acl QUERY urlpath_regex cgi-bin \?
	no_cache deny QUERY

# Ustawiamy nasz cahce,
# /cache katalog gdzie będzie przechowywany, 2500 ile Mb chcemy na nasz Cache
	Cache_dir ufs /cache 2500 16 256

# Ilość pamięci przeznaczonej na Squida, odwieczna zasada, im więcej tym lepiej  :) 
	cache_mem 64 MB
# Po jakim czasie keszowane strony mają zostać usunięte
# Po tym czasie najstarsze strony które są w Cache zostaną usunięte
reference_age 2 week
# i reguły odświerzania wybranych elementów
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 ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

# i log, przedtem zróbmy w katalogu /var/log/ katalog 
# 'mkdir squid' i nadajmy mu prawa chown -R squid.squid squid
	cache_access_log /var/log/squid/access.log
	cache_log /var/log/squid/cache.log
	cache_store_log /var/log/squid/store.log
	pid_filename /var/log/squid/squid.pid

# Zalecana minimalna konfiguracja, wydaje mi się, że nie wymaga tłumaczenia
	acl all src 0.0.0.0/0.0.0.0
	acl manager proto cache_object
	acl localhost src 127.0.0.1/255.255.255.255
	acl to_localhost dst 127.0.0.0/8
	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 1025-65535  # pozostałe porty
	acl CONNECT method CONNECT

# komu pozwalamy kożystać, a komu nie...
	http_access allow manager localhost
	http_access deny manager
	http_access deny !Safe_ports
	http_access deny CONNECT !SSL_ports

# Ustawiamy parametry naszej sieci
# Ip naszego serwera
	acl server src 192.168.0.1
	http_access allow server
# Zakres adresowy naszej sieci
	acl our_networks src 192.168.0.1-192.168.0.255
# Zezwalamy naszej sieci
	http_access allow our_networks
# Zabraniamy innym
	http_access deny all
	http_reply_access allow all
	icp_access allow all

# Użytkownik pod którym działać będzie Squid	
	cache_effective_user squid
	cache_effective_group squid
# Tutaj	chyba jasno  ;-) 
	visible_hostname proxy.domenka.pl
	cache_mgr admin@domenka.pl
	coredump_dir /cache

# Maxymalnie duzy obiekt zapisywany na dysku, w naszym cache
	maximum_object_size 61440 KB
Tak wygląda podstawowa konfiguracja Squida. Bardziej zaawansowane opcje można znaleźdź w pliku squid.conf.default.
Może coś dodacie? Chętnie bym się dowiedział czegoś więcej.
Nie wiem do końca, licze na wasze zdanie, jak Squid ma sie do Gadu-Gadu itp. chodzi o przesyłanie filmów, mp3
przez połączenia które oferują te komunikatory. Wystarczy zwykłe przekierowanie portu 1550 na 3128?


3. Delay pools;

Czym są Delay pools
Pozwalają limitowć ruch dla hostów lub grupy hostów.
Najlepiej odrazu jakiś przykład.

Kod: Zaznacz cały


# Zakres adresowy naszej sieci
	acl magic_words1 url_regex -i 192.168
# Definujemy które rozszeżenia plików będą ograniczane	
	acl magic_words2 url_regex -1 .html .htm .php .cgi .asp
Dwie klasy delay pools	
	delay_pools 2 
# Pierwsza
	delay_class 1 2
# -1/-1 oznacza brak ograniczeń co do długości pliku i jegościagania
# dla całej sieci jak i hosta
	delay_parameters 1 -1/-1 -1/-1
# Nasz Lan 192.168
	delay_access magic_words1
# Druga, ograniczenia na wybrane pliki	
# Wartości podajemy w bitach. Liczym w ten sposób:
# Przeznaczamy 100 KB więc 100*1024/8 = 12800
	delay_class 2 2
	delay_parameters 2 12800/25600 -1/-1
	delay_access 2 allow magic_words2
# Porponuje eksperymentować

# Zakres adresowy naszej sieci
	acl magic_words1 url_regex -i 192.168
# Definujemy które rozszeżenia plików będą ograniczane	
	acl magic_words2 url_regex -1 .html .htm .php .cgi .asp
Dwie klasy delay pools	
	delay_pools 2 
# Pierwsza
	delay_class 1 2
# -1/-1 oznacza brak ograniczeń co do długości pliku i jegościagania
# dla całej sieci jak i hosta
	delay_parameters 1 -1/-1 -1/-1
# Nasz Lan 192.168
	delay_access magic_words1
# Druga, ograniczenia na wybrane pliki	
# Wartości podajemy w bitach. Liczym w ten sposób:
# Przeznaczamy 100 KB więc 100*1024/8 = 12800
	delay_class 2 2
	delay_parameters 2 12800/25600 -1/-1
	delay_access 2 allow magic_words2
# Porponuje eksperymentować
4. Polecenia squida

Kod: Zaznacz cały

# Tworzy katalogi cache
	squid -z
# Zmiana w pliku u przładowanie squida
	squid -k reconfigure
# Uruchamiamy chache squida w tle
	RunCache &
# Teraz jedynie regułka iptables przkierowujące ruch z portu 80 na port
# na którym nasłuchuje squid
	iptables -t nat -A PREROUTING -s 192.168.0.1/255.255.255.0 -p tcp //
	--dport 80 -j REDIRECT --to-port 3128 
Sprawdzamy czy działa np tak:

Kod: Zaznacz cały

ps aux | grep squid
otrzymasz coś takiego, jest ok:
root 3630 0.0 0.2 2160 1124 ? S Mar23 0:00 /bin/sh /usr/squid-20050315/bin/RunCache
squid 3708 1.7 32.2 125932 124420 ? S Mar23 26:24 squid -NsY
squid 3726 0.0 0.0 1248 276 ? Ss Mar23 0:05 (unlinkd)

lub tak:
netstat -a | grep 3128

5. Logi;

Następną rzeczą jest prawidłowe ustawienie rotacji logów squida.
Robimy to. Jak się nam rozrosną Squid będzie miał problem z dopisaniem logów Cache i się wywali.

Dopisujemy do naszego configa taką opcję (oczywiście po tej operacji należy przeładować Squida):
logfile_rotate 5
opisuje iloć logów jaka ma zostać rotowana i zachowana,
coś na wzór logów sysloga. W naszym przypadku access.log.0 - access.log.5 itd.

dopisać do crona

Kod: Zaznacz cały

crontab -e root
0 0 * * * /usr/squid-20050315/sbin/squid -k rotate
Codziennie o godzinie 00:00 będzie przeprowadzana rotacja logów.

Więcej na temat logów znajdziesz tutaj .

6. Cache-manager;

Fajna sprawa. Skrypcik pokazuje na wiele ciekawych rzeczy odnośnie procesu działania Squida,
wykorzystania zasobów pamięci, keszu, oglądanych stron .. ipt.itd. najlepiej samemu zobaczeć
Cachemanager jest skryptem (cachemgr.cgi) odpowiedĽialnym za wyświetlanie statystyk
uruchomionego Squida, a takze zarządzanie Cache ustawionym w
pliku configuracyjnym Squida bez konieczności logowania się do serwera.

Po pierwsze plik cachemgr.cgi. Gdzie go masz?
Instaowałeś Squida zgodnie z tym opisem (./configure--prefix=/usr/squid-20050317...) to masz skrypt w katalogu /usr/squid-20050317/libexec/

Teraz Apache (przynajmniej ja takiego używam:)). Skrypty .cgi mam ustawione defaultowo czyli taka linijka z httpd.conf:
ScriptAlias /cgi-bin/ "/usr/apache/cgi-bin/".

Wrzucamy tam nasz skrypt

Kod: Zaznacz cały

cd /usr/apache/cgi-bin/ cp /usr/squid-20050317/libexec/cachemgr.cgi .
Wracamy jeszcze na chwilke do naszego httpd.conf
Wpisujemy:

Kod: Zaznacz cały

< Location /usr/apache/cgi-bin/cachemgr.cgi>
order allow,deny
< /Location>
restartujemy serwer Apache:
apachectl restart

Jeśli wszystko poszło pomyślnie powinniśmy po wpisaniu:
http://www.domena.pl/cgi-bin/cachemgr.cgi/

otrzymać fomularz, wypełniamy, patrzymy co się dzieje.


Uwaga: ustaw hasło dostępu do cachemgr z pozowu apache.
To które wpisujemy na stronie głównej cachemgr jest potrzbene do kasowania cache bądź wyłączenia Suida.

7. Posłowie.
Bardzo miło by było usłyszeć komentarz, sugestie, poprawki :)

Przydatne linki:

Oficjalny serwis [EN]
Transparent Proxy with Linux and Squid mini-HOWTO [EN]
Fajny art nt. Squida [PL]
i jeszcze jeden [PL]
Ostatnio zmieniony 2005-03-26, 19:29 przez maiki, łącznie zmieniany 5 razy.
Want a productivity tip? Go away and do it fucking now.

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

Re: Squid - transparent proxy i delay pools.

Post autor: bzyk » 2005-03-18, 15:48

1. Nie napisałeś nic o logach squida: które są ważne, które nie... jak się je czyta, dlaczego jest ich tak dużo i ustawić rotację.
2. Przydałoby się spomnieć o gnuregex, bo to IMO opcja równie pożyteczna jak delay_pool (może nawet bardziej).
3. Piszesz o transparentnym squidzie, a nie podajesz podstawowej składni do tego, czyli --enable-linux-netfilter (w ./configure)
4. Daj linka do Transparent Proxy with Linux and Squid mini-HOWTO
5. Przydaje się --enable-underscores w ./configure
6. Można też wspomnieć o wykresach dla squida (mrtg lub cachemgr)
7. Warto spomnieć o pamięciożerności squida
etc..etc..
Na razie mam tylko tyle uwag:)
In /dev/null no one can hear you scream.

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

Re: Squid - transparent proxy i delay pools.

Post autor: maiki » 2005-03-18, 16:03

Bzyku dzięki za pare uwag :wink:
Jest tego troche ale postaram się wszystko z czasem uzupełnić, stworzyć w miare kompletny faq.
Nigdy nie pisałem niczego podobnego, więc proszę o wyrozumiałość i dalsze uwagi.
Want a productivity tip? Go away and do it fucking now.

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

Re: Squid - transparent proxy i delay pools.

Post autor: bzyk » 2005-03-18, 16:07

Przyznam szczerze, że nosiłem się z zamiarem napisania paru słówek o squidzie (mam ich parę w swoich sieciach - bez squida dzisiaj nie wyobrażam sobie sprawnie działającej osiedlówki:), ale jakoś tak ostatnio czasu nie ma. Cieszę się, że ktoś jednak o tym pisze:)
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 - transparent proxy i delay pools.

Post autor: Skyscraper » 2005-03-22, 23:09

maiki, bzyk - moze polaczycie sily i wspolnie uda Wam sie "wyprodukowac" w miare rozbudowany tekst o Squidzie ? Macie doswiadzcenie w tej dziedzinie i we dwojke latwiej. Moze jakis tekst z odpowiednimi zalozeniami, jakis wycinek rzeczywistosci w maire uniwersalny, poruszajacy kilka apsektow wykorzystania Squida. Co Wy na to?

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

Re: Squid - transparent proxy i delay pools.

Post autor: maiki » 2005-03-23, 07:12

Z mojej strony - nie ukrywam, współpraca z bzykiem była by swego rodzaju wyrożnieniem :)
Want a productivity tip? Go away and do it fucking now.

Awatar użytkownika
PaST
Użytkownik
Posty: 521
Rejestracja: 2004-09-09, 20:19
Lokalizacja: Siedlce
Kontakt:

Re: Squid - transparent proxy i delay pools.

Post autor: PaST » 2005-03-23, 07:32

maiki pisze: ta

Kod: Zaznacz cały

r -zxvf squid-2.5.STABLE9.tar.gz
Tutaj poraw jak możesz...
"Lepiej być ambitnym, a nie tylko tak sądzić" @ NumerRaz

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

Re: Squid - transparent proxy i delay pools.

Post autor: bzyk » 2005-03-23, 22:12

maiki: bez przesady. Proszę nie robić ze mnie takiego mastahaka:) Na razie nie mam czasu, może po świętach...
In /dev/null no one can hear you scream.

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

Re: Squid - transparent proxy i delay pools.

Post autor: maiki » 2005-03-26, 19:27

Parę poprawek, parę dodatków. O Squidzie można by tak pisać i pisać..
Pozdrawiam.
Want a productivity tip? Go away and do it fucking now.

Awatar użytkownika
Ukash
Użytkownik
Posty: 115
Rejestracja: 2004-12-05, 21:18
Lokalizacja: Lublin

Re: Squid - transparent proxy i delay pools.

Post autor: Ukash » 2005-03-28, 20:25

Moze jakis watek o pogodzeniu squida i htb?
[url=http://www.uptime-project.net/profile.php?uid=45750][img]http://img.uptime-project.net/img/8/45750.png[/img][/url]

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

Re: Squid - transparent proxy i delay pools.

Post autor: bzyk » 2005-03-28, 21:54

A co tu do godzenia? Ustawiasz imq, w squidzie delay-pools lub gnuregex i jest ok.
In /dev/null no one can hear you scream.

glodny
Użytkownik
Posty: 20
Rejestracja: 2004-06-16, 13:16
Lokalizacja: Tarnobrzeg / Łańcut
Kontakt:

Re: Squid - transparent proxy i delay pools.

Post autor: glodny » 2005-03-30, 15:23

A czy przykładowo mając squida tylko na www można by cały ruch inny niż www wrzucić do htb, a stronki dać na squida z delay-pools?? czy nic by z tego sensownego nie wyszło ??
A co tu do godzenia? Ustawiasz imq, w squidzie delay-pools lub gnuregex i jest ok.
można troche jaśniej ?? ;-)

pozdrawiam

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

Re: Squid - transparent proxy i delay pools.

Post autor: maiki » 2005-03-30, 15:37

Regułka iptables przekierowywuje ruch z portu 80 na 3218 (czyli port squida) i juz na squidzie odpowiednio ustawiasz delay pools z parametrami.
Co do htb - robisz kolejki na porty 80 ew. 443.
W zasadzie tyle :)
Want a productivity tip? Go away and do it fucking now.

sayetan
Moderator w st. spocz.
Posty: 2193
Rejestracja: 2004-06-20, 21:47
Lokalizacja: Jelenia Góra

Re: Squid - transparent proxy i delay pools.

Post autor: sayetan » 2005-03-30, 16:47

maiki Twoim sposobem uzyskamy ograniczenie wew. sieci czyli squid sciaga pelna moca a do userow leci obciete pasmo
tutaj chodzi o odwrotne dzialanie, squid sciaga obcietym pasmem dla kazdego usera, a userzy od squida pasmem sieci LAN

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

Re: Squid - transparent proxy i delay pools.

Post autor: bzyk » 2005-03-30, 20:35

Sayetan: ciezko byloby cos takiego zrobic, bo squid działa lokalnie na maszynie i raczej trudno mu powiedzieć aby coś ściągał pasmem obciętym via klient LANu. Można oczywiście regulować go za pomocą IMQ, ale wsadzenie imq między squida a internet nie pozwoli na regulowanie tegoż po ipkach klientów bo to jest prerouting z Internetu a więc adresy są tam już NATowane. Mogę się oczywiście mylić, i istnieje jakiś sposób - chętnie się o tym dowiem :-)
In /dev/null no one can hear you scream.

ODPOWIEDZ