Jedną z najważniejszych usług Internetu, która często jest bezpośrednio kojarzona z Internetem, jest sieć WWW, dostarczana przez protokół HTTP. Znaczna ilość sieciowego ruchu transmitowana jest właśnie przez ten protokół. HTTP zawiera jednak mechanizmy, które pozwalają na unikanie wielokrotnej transmisji tego samego materiału przez sieć, mianowicie zgłaszanie czasu modyfikacji, czasu ważności oraz identyfikatora treści. Mechanizmy te są wykorzystywane przez przeglądarki internetowe do tworzenia lokalnego cache. Jednak lokalne cache dotyczy tylko jednego użytkownika na jednym komputerze, nie może więc zapobiec wielokrotnego sprowadzania tych samych danych poprzez jedno łącze internetowe przez wielu użytkowników, na przykład w sieci lokalnej. Potrzebny jest więc centralny serwer cache, który będzie zapisywał lokalne kopie stron dla większej ilości użytkowników.
Serwerem tego typu jest Squid.
Instalacja i konfiguracja
# cd /usr/ports/www/squid24/
# vi Makefile
Odchaszowujemy poniższe linijki lub jeżeli którejś brakuje to dopisujemy:
--enable-dlmalloc
--enable-delay-pools
--enable-snmp
--enable-cache-digests
--enable-ipf-transparent
--disable-ident-lookups
--enable-truncate
--enable-removal-policies='heap lru'
--enable-heap-replacement |
# make build && make install && make clean
Po zainstalowaniu przechodzimy do konfiguracji.
Głownym plikiem odpowiedzialnym za squida jest squid.conf
# cd /usr/local/etc/squid/squid.conf
# vi squid.conf
Poniżej przedstawiam przykładowy plik konfiguracyjny:
--- squid.conf ---
# transparentny proxy
http_port 8080
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
# ile pamięci użyć
cache_mem 32 M
# Max out Squid I/O perfomance, 500 mb cache and use Squid special diskd but you need to recompile
cache_dir diskd /home/w3cache 500 16 256 Q1=72 Q2=6
# I dont want to log anything
cache_access_log /var/log/squid/squid-access
cache_store_log none
cache_log /var/log/squid/squid-log
pid_filename /var/run/squid.pid
# Cache replacement policy
# GDSF zatrzymuje w cache niewielkie popularne obiekty
cache_replacement_policy GDSF
# Standard Access List
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 siec src 192.168.1.0/255.255.255.0 # nasza sieć LAN
acl SSL_ports port 443 563
acl Safe_ports port 21 80 442 563 70 210 280 488 591 777 1025-65535
acl CONNECT method CONNECT
acl MCONN maxconn 30
# wycięte słowa
#acl bad_url url_regex "/usr/local/etc/squid/bad_url"
# IP
#acl bad_url_ip_1 src 192.168.1.12
# dostęp
#http_access deny bad_url bad_url_ip_1
http_access allow localhost
http_access allow manager localhost
http_access deny manager
http_access deny to_localhost
http_access deny MCONN siec
http_access allow siec
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access deny all
#Allow ICP queries from eveyone
icp_access allow all
# wyłączone cacheowanie cgi
acl QUERY urlpath_regex cgi-bin ?
hierarchy_stoplist cgi-bin ?
no_cache deny QUERY
acl magic_words1 url_regex -i 192.168
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
# Delay Pool
delay_pools 2
# limit na pliki wymienione w acl magic_words2 url_regex (4kb/s)
delay_class 1 2
delay_parameters 1 15650/15650 4000/15650
delay_access 1 allow magic_words2
delay_access 1 allow siec
# -1/-1 means that there are no limits for local traffic.
delay_class 2 2
delay_parameters 2 -1/-1 -1/-1
delay_access 2 allow magic_words1
# maksymalny plik jaki można ściągnąć (1MB)
#reply_body_max_size 1024 KB
# pora dnia, o której będą obowiązywać ograniczenia
acl day time 13:00-24:00
# snmp stuff
acl snmppublic snmp_community public
snmp_access allow snmppublic localhost
snmp_access deny all
# Change to your domain
cache_mgr ml0dy@NOSPAM.konin.ath.cx
# serwery dns (możesz podać swój np. 192.168.1.1)
dns_nameservers 194.204.152.34 194.204.159.1
# aby użytkownicy nie mieli żadnych problemów z ftp
ftp_passive off
# podaje adres przy logowaniu anonymous
ftp_user ftp@LAN
# czas przechowywania zapisanych stron (dwa tygodnie)
reference_age 2 week
# logowanie zapytań ICP z innych serwerów web cache:
log_icp_queries off
# zapis logów z buforowaniem
buffered_logs on
# nazwa wyświetlana
visible_hostname konin.ath.cx
# reguły odświeżania
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
# INNE
error_directory /usr/local/etc/squid/errors
debug_options ALL,1
connect_timeout 180 seconds
peer_connect_timeout 50 seconds
read_timeout 5 minutes
request_timeout 2 minutes
client_lifetime 1 day
half_closed_clients on
pconn_timeout 120 seconds
dead_peer_timeout 25 seconds
maximum_object_size 1024 KB
pipeline_prefetch on
forwarded_for off
|
--- end squid.conf ---
Zapisujemy plik.
Następną czynność jaką należy wykonać to :
# cd /var/log
# mkdir squid
# chown nobody:nogroup squid
# cd /home
# mkdir w3cache
# chown nobody:nogroup w3cache
# squid -z
Przechodzimy do katalogu rc.d i zmieniamy plik squid.sh.
# cd /usr/local/etc/rc.d
# vi squid.sh
#!/bin/sh
echo -n ' Squid '
case "$1" in
start)
/usr/local/sbin/squid -D
;;
stop)
/usr/local/sbin/squid -k shutdown
;;
restart)
/usr/local/sbin/squid -k reconfigure
;;
*)
echo "Usage: `basename $0` {start|stop|restart}"
;;
esac |
Dajemy prawa wykonywania dla tego pliku
# chmod +x squid.sh
i odpalamy squida
# /usr/local/etc/rc.d/squid start
Statystyki SQMGRLOG
Jeżeli chcemy mieć wszystko ładnie logowane gdzie i na jakich stronach
siedzą nasi userzy, to proponuje zainstalować narzędzie sqmgrlog.
We FreeBSD wersji 4.x można go znaleźć np. w /usr/ports/, natomiast we FreeBSD 5.x nie ma tego programu w
portach. Proponuje więć ściągnąć sobie paczkę z serwera ftp.freebsd.org:
# wget ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-4.8-release/All/sqmgrlog-3.0.1.tgz
# pkg_add sqmgrlog-3.0.1.tgz
Przechodzimy do konfiguracji
# cd /usr/local/etc/
# vi sqmgrlog.conf
W pliku zmieniamy access_log i output_dir na :
access_log /var/log/squid/squid-access
output_dir /usr/local/www/squid-reports |
Jeżeli chcemy aby nasz statystyki były pod adresem www.squid-stats.domena.pl
robimy odpowiedni alias w DNSie w pliku strefy naszej domeny i odpowiedni
VirtualHost w Apache'u.
Przechodzimy do configa od Apache i robimy sobie dodajemy wpisy :
# cd /usr/local/etc/apache
# vi httpd.conf
ServerAdmin admin@domena.pl
DocumentRoot /usr/local/www/squid-reports
ServerName www.squid-stats.domena.pl
ErrorLog /var/log/ squid-stats.domena.pl-error_log
CustomLog /var/log/apache/ squid-stats.domena.pl-access_log common |
Restartujemy Apache i odpalamy sqmgrlog:
# apachectl restart
# /usr/local/bin/sqmgrlog.
Proponuje dodać sobie sqmgrlog do crona (np. co minutę)
# cd /etc/
# vi crontab
*/1 * * * root /usr/local/bin/sqmgrlog |
Teraz po wpisaniu w dowolnej przeglądarce www.squid-stats.domena.pl
naszym oczom ukażą się piękne statystki.
Wymuszenie na użytkownikach korzystania z proxy.
Jeżeli chcemy zmusić usera do korzystania z servera proxy, robimy to w
następujacy sposób (przykład dla tych którzy używają maskarady IPNAT):
# cd /etc
# vi ipnat.rules
Jeżeli chcemy aby każdy user korzystał z proxy to dopisujemy:
rdr rl0 0/0 port 80 -> 192.168.1.1 port 3128 tcp |
Natomiast jeżeli chcemy aby user z ip 192.168.1.10 i 192.168.1.11
korzystał z proxy a inni nie to robimy taki wpis:
rdr rl0 from 192.168.1.10/32 to any port = 80 -> 192.168.1.1 port 8080 tcp
rdr rl0 from 192.168.1.11/32 to any port = 80 -> 192.168.1.1 port 8080 tcp |
Przeładowujemy ipnata
# ipnat -CF -f /etc/ipnat.rules
Autor: Marcin Burda
ml0dy(at)konin.ath.cx |
Re: SQUID - najpopularniejszy serwer pro Dodane przez DrOOcik w dniu - 2003-09-30 21:39:12 | # ile pamięci użyć cache_mem 32 M To dokładnie nie jest tak. --- Squid jest strasznie pazerny na pamięć (im więcej tym lepiej), że nie wspomnę o jakości twardziela (skazi obowiązkowo!). Znam z doświadczenia, że jak dysk był wolny (nędzne ATA 33) i pamięci tyle, co kot napłakał (smętne 64MB) to po kilkumiesięcznym testowaniu wyrzuciłem squida, bo zanim sprawdził cache, zanim odszukał pliki, to dawno już można było zassać, co potrzeba z sieci. Czyli zbędny wodotrysk. Pamiętajcie o tym, admini! --- Z moich doświadczeń wynika, że ograniczenie do 32 MB w tym punkcie konfiguracji nie działa jak należy. Przy tej wartości potrafi "zeżreć" i 3 razy tyle swapując niemiłosiernie. Trzeba to sprawdzać empirycznie. Ale by właśnie ograniczyć do max 32 MB użycia pamięci (przynajmniej u mnie) wstawiam tu 8MB i wtedy faktycznie nie wychodzi poza te 32MB (squid działa od roku). Sam nie wiem dlaczego. Bo nic więcej od standardowych ustawień nie zmieniałem. Any ideas? --- # Max out Squid I/O perfomance, 500 mb cache and use Squid special diskd but you need to recompile cache_dir diskd /home/w3cache 500 16 256 Q1=72 Q2=6 Sa różne szkoły, jak to z tym podziałem najlepiej. 16 256 ? Chyba jednak tak. Ja kombinowałem na różne sposoby i tak źle, i tak niedobrze. Zostałem przy domyślnych. Tylko ta wielkość 500 - hmmm. Patrz wyżej... To nieprawda, że im większy cache, tym mniej zapytań. No, może i mniej, ale czas przeszukiwania jest coraz większy. Tu nie ma reguły. Widziałem cache 5GB, ale na szybkich dyskach i pamięci od cholery (1GB) - wtedy to ma sens. A tak? Ja daję przy średniej jakości kompie (RAM 128-256 MB) dyski ATA - 200MB Tą wielkość trudno ocenić. "By wilk był syty i...". No i: Squid special diskd but you need to recompile - właśnie, diskd. Coś zawsze miałem z tym problemy. Niby działało, ale od czasu do czasu były jakieś błędy w logach. I nie wnikając, zostałem przy starym: ufs | Re: SQUID - najpopularniejszy serwer pro Dodane przez DrOOcik w dniu - 2003-09-30 21:59:42 | Aaa, sorek i jeszcze jedno, trasparent proxy... Co ja się swego czasu namęczyłem, by to zrobić... Wszyscy piszą o ipnat, ale mnie to jakoś nie chciało chodzić. Już nie miałem siły, by sprawdzić dlaczego... Ale chyba wszyscy znaja ipfw? No i dummynet na przykład? No, znacie, to posłuchajcie: Sprawa prosta, gdzieś tam w skrypcie dummynet (tylko przed rurkami i takimi tam) lub w innym dopiszcie sobie po prostu: ipfw add nr_regulki fwd 127.0.0.1,port_squida tcp from nasza_siec to any 80 gdzie: nr_regulki to moze byc (bo ja wiem) może 1000 nasza_siec to przykladowo 192.168.0.0/24 I już! | Re: SQUID - najpopularniejszy serwer pro Dodane przez pawcio w dniu - 2004-01-06 21:10:03 | | Jest mały problem jak podaję opcje --enable-ipf-transparent to wyrzuca iz nie będzie transparantnego proxy i nie mogę tego rozgryżć chociaż reszta opcji się zgadza i dział z małym ale iż należy nadać prawa wykonywalne nie tylko na katalogi logowania ale także na podstawowe logi squida jakby cos to moze ktos mi coś podpowie dlaczego nie zabardzo to mi zadziałało ja używam ipfw do przycinania klientów i użyłem do tego ciekawego skryptu który otrzymałem od znajomego | Re: SQUID - najpopularniejszy serwer pro Dodane przez pepe w dniu - 2004-01-19 08:14:32 | Najpierw skasuj plik config.cache a potem spróbuj tak: env CPPFLAGS="-fhuge-objects -I/usr/src/sys/contrib/ipfilter/netinet" ./configure --enable-ipf-transparent ... | Re: SQUID - najpopularniejszy serwer pro Dodane przez Trash w dniu - 2004-03-01 18:16:13 | | Od wersji 5.x SQMGRLOG istnieje w portach ale nazwa zostala zmieniona na sarg. /usr/ports/www/sarg | Re: SQUID - najpopularniejszy serwer pro Dodane przez kingboy w dniu - 2004-10-26 17:30:17 | a ja napisze tak: mam w pracy maszyne na płycie Intela z PIV 2.4Ghz i 1Gb ramu, squid-proxy osadzony jest na dwóch dyskach 120Gb spiętych w RAID 0 w sieci jest tzw. przymus korzystania z proxy (obecnie 186 userow), lacze 2Mb, ustawilem tak paramtery: cache_mem 768 MB maximum_object_size 81920 KB cache_dir ufs /var/spool/squid 120000 256 256 Jak na razie nie widac aby cos sie przytykało czy robiło cokolwiek co by swiadczylo ze maszyna sie nie wyrabia, jedynie jak zwiekszylem objetosc z 120Gb na 125Gb to zauwazylem ze maszyna zaczela swapowac (512Mb jest na swapa) widocznie osiagnalem mase krytyczna dlatego chyba wroce do 120Gb kiedy swap byl rzedu 12Mb a nie jak teraz 80Mb-90Mb, po za tym wszystko smiga az milo, srednia trafnosc oscyluje na poziomie 48% co jest wynikiem doskonalym. Jedyne co w sumie wydaje mi sie nalezaloby zrobic to zwiekszyc pamiec do 2Gb i wtedy powinno nic nie swapowac.
| Re: SQUID - najpopularniejszy serwer pro Dodane przez piotr_k10 w dniu - 2005-05-03 18:47:57 | Mam problem zapiałem plik squid.conf tak jak jest wyżej i pisze mi takie coś.Czy ktoś wie jak to poprawić [root@serwer etc]# squid -z FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname' Squid Cache (Version 2.5.STABLE6): Terminated abnormally. CPU Usage: 0.014 seconds = 0.006 user + 0.008 sys Maximum Resident Size: 0 KB Page faults with physical i/o: 0 Aborted (core dumped)
| transparent a virusy Dodane przez grzywka18 w dniu - 2008-05-13 11:19:58 | | Podobno jesli ktos ma transparetne proxy to wirusy atakuja squid -przez co moze nie działac poprawnie .Jak sie bronic przed tym ?? | RE: transparent a virusy Dodane przez Trash w dniu - 2009-10-06 15:45:18 | | Nie bronić się. Całkowita bzdura. Owszem, squid może zostac "zaatakowany", ale nie przez wirusy, a np. poprzez odpowiednio spreparowany nagłowek, omijający acl-ki, lub atak DoS, ale na to są narażone wszystkie usługi (wystawiona na zew.). |
Tylko zarejestrowani użytkownicy mogą pisać komentarze. Prosze zaloguj się i dodaj komentarz. Powered by AkoComment! |