Squid w 5 minut

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)
Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

12 komentarzy

  1. p2o2 19 listopada 2007 o godz. 16:39 #

    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

  2. bluszcz 19 listopada 2007 o godz. 20:36 #

    ech squid, dajcie może jeszcze opis sendmaila to się pochlastam. mamy rok 2007

    • p2o2 19 listopada 2007 o godz. 23:48 #

      No więc, co Pan Szanowy sobie życzy, jakiś temacik, czy może brzytwę?

      P2O2

    • qroot 20 listopada 2007 o godz. 0:00 #

      "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 :D

    • cnr.. 20 listopada 2007 o godz. 0:33 #

      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!

      • MAcks 22 listopada 2007 o godz. 13:54 #

        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.

  3. michallo 20 listopada 2007 o godz. 15:02 #

    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.

  4. p2o2 20 listopada 2007 o godz. 15:09 #

    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.

  5. eXtrim 20 listopada 2007 o godz. 16:39 #

    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.

  6. jey 20 listopada 2007 o godz. 16:40 #

    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

  7. burp 21 listopada 2007 o godz. 1:50 #

    Jak sobie sensownie poradzic z WindowsUpdate za squidem transparentnym?

  8. irens 21 listopada 2007 o godz. 3:39 #

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

(wymagane)
URI
Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.

Literówki najlepiej zgłaszać jabberem: michuk@jakilinux.org lub kocio@jabber.org!

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: <del>tekst przekreślony</del>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.