Squid w 5 minut
19 listopada 2007, P2O2
Istnieje wiele wspaniałych narzędzi, które oferują to, co Squid, ale kiedy muszę przekierować ruch sieciowy do serwera buforującego (ang. caching server) w celu zwiększenia wydajności sieci lub jej bezpieczeństwa, wybieram Squida. Squid ma wbudowaną warstwę pośredniczącą i narzędzia do jej obsługi, które są proste i efektywne.
Oryginalny tekst pochodzi z Red Hat Magazine, autorem jest Noah Gift. Opublikowano 17 kwietnia 2007 r.
Instalowałem niedawno Squida w bezpiecznej sieci, która blokowała łączność z zewnętrznymi adresami IP po porcie 80. Wiele organizacji blokuje zewnętrzny port 80 na poziomie rutera. To niezły sposób na pozbycie się wielkiej dziury w systemie bezpieczeństwa, ale równocześnie prawdziwy ból głowy dla administratora, który choć na chwilę potrzebuje wydostać się na zewnątrz w celu pobrania jakiegoś pliku.
Kolejny scenariusz: przekierować wszystkie komputery w sieci domowej (HAN - Home Area Network) do lokalnego serwera buforującego, aby zwiększyć wydajność wyszukiwania informacji w Sieci i odzyskać pasmo przepustowe do innych celów.
Właśnie w takich chwilach tekst “Squid w 5 minut” może okazać się przydatny. Wszystkie żądania dostępu do zewnętrznych adresów http mogą być obsłużone przez Squida, poprzez prostą rekonfigurację maszyn sieciowych. Brzmi skomplikowanie, ale nie jest. Weźmy się za detale.
Instalowanie
W systemach operacyjnych bazujących na Red Hat EL, czy Fedorze wystarczy sprawdzić za pomocą polecenia rpm, czy przypadkiem Squid nie jest już zainstalowany. Wpisujemy polecenie:
rpm -q squid
Jeśli jest, otrzymamy informację w rodzaju:
squid-2.5.STABLE6-3.4E.12
Jeśli nie, będziemy musieli użyć polecenia yum. Dzięki niemu proces instalacyjny będzie prościutki.
Po prostu wpisujemy w linii poleceń:
yum install squid
Gdyby zdarzyło się, iż pakiet Squida jest już pobrany, użyjemy innego polecenia:
rpm -ivh squid-2.5.STABLE6-3.4E.12.i386.rpm
Konfigurowanie
Głównym plikiem konfiguracyjnym Squida jest /etc/squid/squid.conf. Jego 3,339 wierszy może zniechęcać, niemniej Squid daje się bardzo łatwo ustawiać w zakresie serwera buforującego, który przekieruje ruch http, https i ftp na domyślny port 3128 i na dodatek będzie buforował dane.
Kopiowanie pliku konfiguracyjnego
Wykonanie kopii zapasowej pierwotnego pliku konfiguracyjnego, zanim poddamy go edycji, jest zawsze wysoce wskazane. Jeśli ktoś nie popadł jeszcze z tego powodu w tarapaty, to znaczy, że niewiele plików konfiguracyjnych edytował. Proszę wykonać kopię bezpieczeństwa z linii poleceń albo za pomocą programu graficznego, zmieniając oryginalną nazwę pliku w coś informującego. Osobiście lubię dodawać do nazwy końcówkę bck.data. Na przykład:
cp /etc/squid/squid.conf /etc/squid/squid.conf.bck.02052007
Jeśli jest to oryginalny plik konfiguracyjny można wybrać taką nazwę:
cp /etc/squid/squid.conf /etc/squid/squid.conf.orig.02052007
Edytowanie pliku konfiguracyjnego
Otwieramy plik /etc/squid/squid.conf w ulubionym edytorze. Ja korzystam z vima, ale nano jest równie dobry, szczególnie dla początkujących użytkowników linuksa. Proszę pamiętać, aby w przypadku plików konfiguracyjnych uruchamiać nano z wyłączoną opcją zawijania wierszy (nano -nowrap). Można także użyć edytora Gedit.
Konfigurowanie pięciominutowe
Wiele z interesujących opcji Squida pozostawimy niewłączone jak np. acls (listy kontrolne dostępu) czy uwierzytelnianie. Skonfigurujemy serwer buforujący bez kontroli dostępu. Wystarczy, jak na potrzeby sieci domowej schowanej za zaporą.
Domyślna konfiguracja Squida jest prawie gotowa, poza drobnymi wyjątkami. Wystarczy uaktywnić (”odkomentowć”) niektóre opcje, albo zmodyfikować opcje uaktywnione. Należy skorzystać z ulubionego edytora i znaleźć następujące wiersze zawierające:
visible_hostname machine-name http_port 3128 cache_dir ufs /var/spool/squid 1000 16 256 cache_access_log /var/log/squid/access.log
W sekcji acl, pod koniec pliku:
acl intranet 192.168.0.0/24 http_access allow intranet
Wyjaśnijmy znaczenie każdego z tych sześciu wierszy:
visible_hostname - (nazwa bieżącego hosta) należy wpisać nazwę odpowiadającą nazwie danego komputera sieciowego. Można ją uzyskać wydając w wierszu poleceń polecenie “hostname”. Nie podanie tej nazwy może zdezorientować Squida, gdy nie będzie w stanie automatycznie określić pełnej nazwy danego komputera sieciowego.
http_port 3128 - należy wiersz jedynie odkomentować, nie ma potrzeby zmieniania domyślnej wartości tego portu.
cache_dir ufs /var/spool/squid 1000 15 256 - wiersz do odkomentowania. Można dopisać trzecie zero do 100, zwiększając w ten sposób wielkość bufora ze 100 MB do 1000 MB. Pozostałe wartości odnoszą się do ilości podpoziomów foldera głównego i odpowiednio jego podkatalogów. Nie wymagają modyfikacji.
cache_access_log - wiersz do odkomentowania. Nazwa opcji określa miejsce składowania dziennika dostępu do usług Squida.
acl intranet 192.168.0.0/24 - ten zapis należy dodać. Definiuje nazwę usługi dostępowej (tutaj intranet), która zostanie wykorzystana w definicji udostępniania usług (patrz zapis poniżej). Druga część wpisu powinna odpowiadać zakresowi sieci lokalnej w notacji CIDR. Na przykład, gdy serwer Fedory ma adres 192.168.2.5, należy wprowadzić zapis “acl intranet 192.168.2.0/24″ (bez cudzysłowu).
http_access allow intranet - opcja ta zezwala acl o nazwie intranet na wykorzystywanie serwera buforującego. Zapis musi być umieszczony powyżej zapisu http_access deny all.
Włączanie Squida
Definiujemy odpowiedni poziom uruchomieniowy:
chkconfig squid on
Uruchomiamy usługę:
service squid start
Sprawdzamy czy Squid działa:
service squid status
Jeśli pojawią się jakieś problemy z uruchomieniem Squida, należy otworzyć terminal i wydać następujące polecenie:
tail -f /var/log/messages
Następnie uruchamiamy usługi Squida w jego pierwotnym oknie:
service squid start
Polecenie tail powinno pokazać komunikaty błędów, które pomogą w rozwiązaniu problemów. Jednym z powszechniejszych błędów jest brak kartoteki (katalogu, folderu) wymiany (ang. swap). W celu usunięcia braku należy uruchomić Squid z opcją -z (squid -z), co spowoduje automatyczne utworzenie tej kartoteki (w uniksach mówimy o kartotekach, w linuksach “używa się” katalogów, a w graficznych nakładkach na systemy operacyjne powinno mówić się o folderach, gdyż są to graficzne obiekty reprezentujące katalogi/kartoteki - P2O2).
/usr/sbin/squid -z
Nadajemy squidowej kartotece wymiany uprawnienia zapisu, w przeciwnym wypadku nie zadziała.
Konfigurowanie klientów
W Firefoksie lub Mozilli należy server buforujący wpisać do konfiguracji przeglądarek:
przechodzimy do Preferences>Network>Settings
Wpisujemy nazwę serwera buforującego i port 3128
Otwieramy okno terminala dla serwera buforującego, aby śledzić zapisy w pliku dziennikowym. Ponownie korzystamy z polecenia tail, jak poprzednio:
tail -f /var/log/squid/access.log
Obecnie można już serfować poprzez serwer buforujący. Powinniśmy zaobserwować pojawianie się stron WWW w czasie rzeczywistym. Gratulacje, serwer buforujący działa!
Podsumowanie
Szybkie podsumowanie: zainstalowaliśmy Squid za pomocą polecenia yum. Wykonaliśmy kopię zapasową pliku konfiguracyjnego, a w jego oryginale poddaliśmy edycji 6 wierszy. Przypisaliśmy Squida do odpowiedniego poziomu uruchomieniowego (ang. runlevel) i uruchomiliśmy go. Następnie skonfigurowaliśmy klientów, aby mogli korzystać ze Squida i sprawdziliśmy jego poprawne działania korzystając z polecenia tail. Wszystko udało wykonać się w 5 minut. Niech no teraz ktoś zaprzeczy, że Linux nie jest przyjemny!
Errata (P2O2)
W dyskusji do artykułu pojawiła się informacja o błędnym zapisie jednej z opcji. Zamiast:
acl intranet 192.168.0.0/24
powinno być:
acl intranet src 192.168.0.0/24
Tłumaczenie: P2O2
Komentarze (RSS) | Trackback (URI)
Liczba komentarzy: 12
W komentarzach możesz używać prostych znaczników HTML. Przykłady:
- Link: <a href="jaklinux.org">Linux dla każdego</a>,
- Wytłuszczenie: <strong>tekst pogrubiony</strong>,
- Kursywa: <em>tekst pochylony</em>,
- Przekreślenie: <strike>
tekst przekreślony</strike>, - Kod: <code>
printf("blok kodu");</code>, - Cytat: <blockquote>cytat</blockquote>


Cześć,
Pragnę nadmienić, że tym tłumaczeniem otwieramy nową serię artykułów pod wspólnym tytułem “W 5 minut”. Drugi tekst jest już gotowy. Zachęcam wszystkich do nadsyłania własnych prac, jak i adresów do artykułów angielskojęzycznych.
Adresy można zgłaszać na stronie wiki: http://wiki.jakilinux.org/do-tlumaczenia
Pozdrawiam,
P2O2
ech squid, dajcie może jeszcze opis sendmaila to się pochlastam. mamy rok 2007
No więc, co Pan Szanowy sobie życzy, jakiś temacik, czy może brzytwę?
P2O2
“Oryginalny tekst pochodzi z Red Hat Magazine, autorem jest Noah Gift. Opublikowano 17 kwietnia 2007 r.”
bluszcz - proponuje z takimi fochami do redakcji Red Hat Magazine albo bezpośrednio do pana Gifta - to jest tylko tłumaczenie tekstu
super tekścik. prosty, łatwy i przyjemny
a propos sendmaila, to ostatnio chciałem bezboleśnie sprawdzić działanie php-owej funkcji mail() i musiałem sobie tego sendmaila posadzić. dałem radę, ale przyznam, że taki “sendmail w 5 minut” by mi się wtedy bardzo przydał.
co do wskazówek dla autorów cyklu, to ja np. chętnie za parę odcinków bym poczytał, jak w squidzie osiągnąć inne efekty (np. blokowania niektórych stron itp itd). ale to takie tylko niezobowiązujące zachcianki
jeszcze raz - dzięki za arta!
Większość normalnych MTA (np. postfix, exim) dostarcza swoje wersje zastępcze polecenia sendmail, więc chyba niepotrzebnie się fatygowałeś instalując prawdziwego sendmaila.
Zastanawiam się tylko, czy w dzisiejszych czasach squid w czymś jeszcze pomaga. Większość stron jest dynamicznych, wchodzi web 2.0. Takich stron nie da się trzymać w buforze bo praktycznie za każdym razem są ponownie generowane. To co zostaje w takim razie ważnego w pamięci squida? Same obrazki? Może pliki css? Chyba niewiele więcej.
Ale z tego co słyszałem, Squid nie służy jedynie do buforowania stron HTML.Może ktoś mógłby dodać coś na ten temat? Tutaj, w komentarzach, zapraszam.
Sadze ze taka seria”w 5 minut” do dobry pomysł nawet jeśli będzie to dotyczyło trochę starszych rzeczy, ja osobiście chętnie poświecę 5 minut żeby przeczytać artykuł i się dowiedzieć czegoś nowego albo poszerzyć wiedzę na już znany temat. Dobry pomysł oby tak dalej
Nie pogniewał bym się gdyby to było nawet 10 minut a informacje były bardziej szczegółowe.
Squid to przeciez proxy serwer, skoro potrafi filtrowac ruch sluzy jako firewall. Dobrze skonfigurowany jest bardzo przydatny. Buforowanie stron to jedna zaleta.. jednak coraz mniej wykorzystywana z racji ze coraz szybszych przepustowosci
Jak sobie sensownie poradzic z WindowsUpdate za squidem transparentnym?
Prosto:
w /etc/squid robie pliczek tesktowy:windowsupdate.txt z zawartoscią:
windowsupdate.microsoft.com
update.microsoft.com
activex.microsoft.com
download.windowsupdate.com
au.download.windowsupdate.com
www.download.windowsupdate.com
codecs.microsoft.com
stats.updates.microsoft.com
c.microsoft.com
następnie w konfiguracji squida dodaję:
acl WindowsUpdate dstdomain -i “/etc/squid/windowsupdate.txt”
no_cache deny WindowsUpdate
I aktualizacje zaczęły wreszcie śmigać (czyt. zaczęły się w końcu ściągać i instalować na końcówkach - bo wisiały na postępie ściaganie i wisiały i wisiały …)
Działa to na CentOS4 squid: squid-2.5.STABLE14-1.4E
Pozdrawiam.