Zarejestruj się na BitBay.net
Home > Linux > SQUID – Instalacja i konfiguracja proxy

SQUID – Instalacja i konfiguracja proxy

Squid – popularne oprogramowanie serwera pośredniczącego (ang. proxy) rozwijane na wolnej licencji GPL. Serwer Proxy jest to serwer z odpowiednim oprogramowaniem, które dokonuje pewnych operacji (zwykle nawiązuje połączenia) w imieniu użytkownika. Serwer Proxy jest rodzajem bufora między Tobą, a zasobami Internetu. Informacje idą najpierw do serwera poxy, a dopiero potem dane transmitowane są do Ciebie. Wśród głownych zalet Squida zawsze wymienia się wydajność oraz rozbudowane możliwości konfiguracyjne, w szczególności jeśli chodzi o konfigurację związaną z dostępem użytkowników.

Instalacja:

  1. Sciagamy zrodla, czyli: #wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE17.tar.gz
  2. Rozpakowujemy: #tar -zxvf squid-2.6.STABLE17.tar.gz
  3. Konfiguracja: #./configure --prefix=/usr/local/squid --enable-cache-digests --enable-dlmalloc --enable-removal-policies="heap,lru" --enable-linux-netfilter --enable-truncate --enable-useragent-log --enable-delay-pools --enable-default-err-language=Polish --enable-err-languages="Polish"
    • --disable-ident-lookups
      redukcja kodu wynikowego o klienta IDENT
    • --enable-cache-digests
      wkompilowanie mechanizmu współpracy między serwerami web cache zwanego cache digests
    • --enable-dlmalloc
      wkompilowanie bardziej niezawodnej biblioteki obsługującej procesy alokacji pamięci, np. biblioteki dlmalloc
    • --enable-removal-policies
      wkompilowanie zaawansowanych algorytmów usuwania obiektów z bufora serwera
    • --enable-truncate
      zwiększenie wydajności przy usuwaniu plików
    • --enable-linux-netfilter
      obsługa transparentnego proxy
  4. Kompilacja: #make all
  5. Instalacja: #make install
  6. Edytujemy plik /usr/local/squid/etc/squid.conf i ustawiamy po kolei:
    • http_port numer
      – ustawia numer portu, na którym nasłuchuje squid, domyślnie 3128
    • cache_mem rozmiar
      – ustawia rozmiar pamięci używany dla potrzeb cache, domyślnie 8 MB. UWAGA, ten parametr nie ustawia całkowitych wymagań pamięciowych Squida, więc należy dać tu bardzo niską wartość, jeśli Squid ma pracować na serwerze z drobną ilością pamięci (32 MB i mniej).
    • cache_replacement_policy typ, memory_replacement_policy typ
      – definiuje kolejność, w jakiej obiekty będą usuwane z cache, odpowiednio dyskowego i pamięciowego. Możliwe typy to:
      • lru
        – usuwanie obiektu o najdawniejszym dostępie, jak w starych wersjach Squida.
      • heap LRU
        – algorytm LRU używający sterty.
      • heap LFUDA
        – zostawia w cache popularne obiekty niezależnie od ich rozmiaru.
      • heap GDSF
        – zatrzymuje w cache niewielkie popularne obiekty.
      • Preferowane dla cache dyskowej (przy odpowiednim rozmiarze) LFUDA, natomiast dla cache pamięciowej – GDSF.

    • cache_dir typ katalog rozmiar L1 L2 [dodatkowe...]
      – definiuje katalog cache Squida. Domyślne ustawienia są całkiem w porządku, można jednak zmienić typ np. na aufs, używający wątki w celu uniknięcia blokowania. Należy z całą pewnością zmienić rozmiar cache – 100 MB to bardzo niewiele. Dla średniego rozmiaru sieci jakieś 2 GB powinny być wystarczające.
    • acl all src 192.168.0.0/24
      – udostepnij proxy dla adresów 192.168.0.*
      http_access allow all– komu przyspieszyć http (tu wszystkim)
    • cache_peer w3cache.tpnet.pl parent 8080 8082 no-query default
      – nadrzedne proxy
    • store_avg_object_size 8 kB
      – średni rozmiar obiektu cache’owanego
    • acl FTP proto FTP
      always_direct allow FTP

      – zawszse bezpośrednie FTP
    • cache_log /dev/null
      cache_store_log none

      – w celu zwiekszenia szybkości działania sqida wyłączamy logowanie
    • forwarded_for off
      – Anonimowość dla użytkownikow za natem – squid ustawia w nagłówku HTTP/1.1 pole 'X-Forwarded-For: unknown' zamiast 'X-Forwarded-For:numer_ip
  7. chown nobody.nogroup /usr/local/squid/var/ -R
  8. Wydajemy polecenie #/usr/local/squid/sbin/squid -z to utworzy odpowiednie katalogi, następnie odpalamy Squida#/usr/local/squid/sbin/squid Po wydaniu polecenia #ps -u root powinien być widoczny proces squid. Gdyby coś było nie tak sprawdzamy logi.


Blokowanie stron:

Tworzymy acl’kę blokowane_adresy:

acl blokowane_adresy url_regex "/etc/squid/blokowane_adresy"
http_access deny blokowane_adresy

Spis blokowanych adresów (/etc/squid/blokowane_adresy):

^http://www.microsoft.com
^http://www.wp.pl


Strony które nie mają być cachowane:

Tworzymy acl’kę bezposrednie_adresy:

acl bezposrednie_adresy url_regex "/etc/squid/bezposrednie_adresy"
no_cache deny bezposrednie_adresy

Spis adresów (/etc/squid/bezposrednie_adresy):

^https://www.mbank.com.pl
^https://aliorbank.pl


Transparentne proxy:

Transparentne proxy jest to proxy niewidoczne dla komputerów z sieci lokalnej – nie trzeba wpisywać żadnych adresow proxy czy to w przglądarce czy w innych programach. Wystarczy w firewallu przekierować cały ruch z portu 80 na port proxy i zmienić jedną opcję w squid.conf

  1. Edytujemy /usr/local/squid/etc/squid.conf i ustawiamy:
    • http_port 8080 transparent
  2. W firewallu dodajemy regułkę:
    • iptales -t nat -A PREROUTING -s $INTNET -p tcp -d ! $INTNET --dport 80 -j DNAT --to-destination $INTIP:8080
      gdzie np: INTNET=”192.168.1.0/24″


SQUID i ZPH TOS patch – czyli ustawiamy TOS 0x8 na potrzeby shaperda czy też niceshapera

Często przy połaczeniu SQUIDA ze skryptami do dynamicznego podziału pasma zachodzi potrzeba oznaczenia pakietów pochodzących z servera proxy po to by skrypty nie przycinały ruchu ze sqida. Do tego celu porzebny jest nam ZPH TOS patch.

  1. Przechodzimy do katalogu ze źródłami SQUID’a np:#cd /usr/src/squid-2.6.STABLE17
  2. Ściągamy pacha: #wget http://zph.bratcheda.org/squid-2.6.STABLE2-ToS_Hit_ToS_Preserve.patch
  3. Łatamy źródła: #patch -p1 < squid-2.6.STABLE2-ToS_Hit_ToS_Preserve.patch
  4. Konfiguracja: #./configure --prefix=/usr/local/squid --enable-cache-digests --enable-dlmalloc --enable-removal-policies="heap,lru" --enable-linux-netfilter --enable-truncate --enable-useragent-log --enable-delay-pools --enable-default-err-language=Polish --enable-err-languages="Polish"
  5. Kompilacja: #make
  6. Instalacja: #make install
  7. Edytujemy /usr/local/squid/etc/squid.conf ustawiamy wszystko tak jak w opisie poprzednio +
    • zph_tos_local 8
    • zph_tos_peer 0
    • zph_tos_parent off
  8. Uruchamiamy SQUID’a i sprawdzamy czy pakiety mają prawidłowy TOS: # tcpdump -nv -i eth0 src port 80


W sieci:

Kategorie:Linux Tagi:, ,
  1. Wrzesień 16th, 2012 at 13:31 | #1

    Dzięki za poradnik 🙂

  2. Szymek
    Luty 26th, 2015 at 15:03 | #2

    Bardzo hałotycznie napisane, bez sensu.. nic nie rozumiem – wielki minus dla tego kto to opracowywał

  1. Brak jeszcze trackbacków
*