Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Proxy dla laików — kompleksowa konfiguracja squid — cz.1

Serwer Proxy – narzędzie, które w wielu przypadkach jest bardzo przydatne. Używamy go do różnych celów. Jednym z nich jest np.: obejście blokady regionalnej na jakiejś witrynie. Filmik, który obejrzą jedynie osoby zamieszkujące w Stanach Zjednoczonych będziemy mogli bez większych problemów wyświetlić w dowolnym miejscu pobytu dzięki temu przydatnemu narzędziu. Wystarczy znaleźć serwer proxy znajdujący się w Ameryce i przez niego obejrzeć uwielbiany filmik. Serwer pośredniczący pozwala również zapewnić jaką taką anonimowość w sieci. Dlaczego? Bo łącząc się z serwerem proxy, a następnie z docelową witryną (np.: tvn24), nasze prawdziwe IP jest ukrywane. TVN24 myśli, że to serwer proxy, a nie my, połączył się z nim i np.: napisał komentarz. Nie jest to pełna anonimowość, gdyż każdy serwer pośredniczący gromadzi logi i statystyki, które mówią o tym, kto, kiedy i po co go używał.

Oprócz wymienionych powyżej zadań, proxy może realizować także wiele innych. Załóżmy, że nauczyciel jakiegoś przedmiotu technicznego przeprowadza sprawdzian przy użyciu komputerów. Chce umożliwić uczniom dostęp jedynie do witryny, na której odbywa się test oraz do kilku innych, mających służyć jako pomoc naukowa. Natomiast dostęp do Facebooków i innych pudelków ma być zablokowany. Można to skonfigurować za pomocą różnych programów na poszczególnych stacjach roboczych. Takie rozwiązanie ma poważną wadę – zajmie masę czasu. Po drugie, jeśli w przyszłości chcielibyśmy zmienić zakres dostępnych stron, będziemy musieli osobno skonfigurować każdy komputer. Nie jest to zbyt przyjemna perspektywa, prawda? Serwer proxy natomiast, umożliwia nam szybką i bezproblemową konfigurację tego typu rzeczy.

Warto wspomnieć, że możliwość blokowania możemy wykorzystać także do innych celów - np.: nie ma przeszkód, aby w ten sam sposób zablokować skrypty śledzące (np.: google analytics) lub reklamy.

Istnieje jeszcze jedna, bardzo ważna zaleta tego typu aplikacji – możemy bez większych ekscesów monitorować działalność podległych nam użytkowników w Internecie. Jeśli odpowiednio skonfigurujemy stacje robocze, przeszkody nie stanowi nawet SSL. Dzięki odpowiedniemu dodatkowemu oprogramowaniu, damy radę tworzyć także dzienne, tygodniowe czy miesięczne raporty, które pozwolą dowiedzieć się, jakie witryny są najczęściej odwiedzane przez naszych użyszkodników.

Lokalny serwer pośredniczący może przydać się także w środowisku domowym. Dlaczego? Wspomnieliśmy już większość zastosowań tego typu oprogramowania, ale zapomnieliśmy o jednym z najważniejszych. Przypuśćmy, że nasze łącze nie należy do najszybszych, natomiast, niejednokrotnie łączymy się z jakąś witryną w Zimbabwe, której pobranie i wyświetlenie za każdym razem trwa wieki. Poza tym, zużywa (być może) nasz cenny transfer. Właśnie w tym miejscu z pomocą przychodzi oprogramowanie serwera pośredniczącego. Jeśli jakaś witryna jest bardzo często pobierana i nie zmienia się zbyt często, serwer proxy może ją „zbuforować”. Nasz komputer łącząc się z daną stroną internetową, nie musi pobierać jej z odległego, wolnego serwera sieci Web. Załaduje ją natomiast z lokalnego, szybkiego serwera proxy. Przy okazji, taka operacja nie zużyje transferu internetowego.

Powyższe rozważania prowadzą do następującej myśli – jak skonfigurować takie oprogramowanie? Jest to bardzo proste, o czym zaraz się przekonamy.

Kompilacja i instalacja squid

Squid jest jednym z najpotężniejszych serwerów pośredniczących dostępnych na platformę Linux. Z tego oprogramowania możemy korzystać także na alternatywnych systemach operacyjnych. Mimo dostępności, nie polecam takiego rozwiązania, gdyż Squid dla Windowsa nie jest tak dopracowany, jak jego wersja na macierzysty system operacyjny. Squid dostępny jest w postaci paczek .deb lub .rpm w większości dystrybucji. Niestety, cele, które sobie założymy wykluczą użycie prekompilowanych wersji. Dlaczego? Squid dostępne w repozytoriach w większości przypadków zawiera tylko podstawową funkcjonalność. My chcemy osiągnąć znacznie więcej, niż zwykłą optymalizację łącza internetowego. My chcemy wprowadzić kompletną kontrolę nad poczynaniami naszych użytkowników w tej ogromnej sieci, zwanej Internetem. Dlatego musimy użyć kilku specjalnych przełączników kompilacji.

Najpierw pobieramy źródła squid. Możemy pobrać starszą (najczęściej) wersję z repozytoriów lub pokusić się o najnowszą z oficjalnej witryny projektu. Na dzień dzisiejszy ostatnia wersja Squid ma numerek 3.5.19 i jest dostępna do ściągnięcia pod tym adresem.

Po ściągnięciu Squid rozpakowujemy je. Robimy to poleceniem:tar –jxvf squid-3.5.19.tar.bz2Przełącznik j oznacza, że zajmujemy się archiwum bzip, -x – że będziemy je rozpakowywać. V Oznacza tryb verbose, który informuje nas o tym, co aktualnie się dzieje. F jako parametr występuje zawsze i oznacza, że zajmujemy się plikiem, a nie strumieniem czy innym wynalazkiem.

Ok, rozpakowaliśmy squid. Przygotujmy sobie teraz środowisko do kompilacji. Jeśli wcześniej nie robiliśmy tego typu rzeczy, musimy zainstalować kilka dodatkowych paczek. Najprościej będzie wgrać paczkę build-essential, która powiązuje ze sobą wszystkie narzędzia wykorzystywane w budowaniu i kompilacji programów. Poza tym, powinniśmy także zainstalować pakiet dpkg-dev. Dzięki temu będziemy mogli automatycznie pobrać zależności niezbędne do samodzielnej kompilacji squid. W systemach rodziny Debian możemy to zrobić za pomocą polecenia:

sudo apt-get install build-essential dpkg-devOk, środowisko mamy już przygotowane. Teraz pora na pobranie niezbędnych zależności. Moglibyśmy każdy pakiet instalować ręcznie, ale po co, skoro mamy do tego odpowiednie narzędzia? Wydajmy polecenie:sudo apt-get build-dep squid3Pobierze ono większość (ale nie wszystkie!) zależności, które są potrzebne do poprawnej kompilacji serwera pośredniczącego SQUID.
Część dodatkowych pakietów będziemy mogli pobrać z repozytoriów. Potrzebna będzie m.in. biblioteka libssl. Możemy ją pobrać za pomocą polecenia: sudo apt-get install libssl-dev

Dla najnowszej wersji squid będziemy musieli dodatkowo skompilować libecap w wersji 1.0. Niestety, w repozytoriach stabilnych wersji Ubuntu i Debiana dostępna jest jedynie starsza wersja 0.2. Na szczęście, jest to zadanie niezwykle proste. Najpierw pobieramy program ze strony domowej producenta:

Następnie rozpakowujemy pakiet poleceniem:tar -zxvf libecap-1.0.1.tar.gzKompilacja i instalacja tej biblioteki jest bardzo prosta i składa się z trzech poleceń:./configure make sudo make installPora rozpocząć kompilację naszego celu. Wchodzimy do katalogu, w którym znajduje się rozpakowany wcześniej program. Następnie wydajemy polecenie: sudo ./configure --datadir=/usr/share/squid3 \ --sysconfdir=/etc/squid3 \ --mandir=/usr/share/man \ --enable-inline \ --disable-arch-native \ --enable-async-io=8 \ --enable-storeio="ufs,aufs,diskd,rock" \ --enable-removal-policies="lru,heap" \ --enable-delay-pools \ --enable-cache-digests \ --enable-icap-client \ --enable-follow-x-forwarded-for \ --enable-auth-basic="DB,fake,getpwnam,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB" \ --enable-auth-digest="file,LDAP" \ --enable-auth-negotiate="kerberos,wrapper" \ --enable-auth-ntlm="fake,smb_lm" \ --enable-external-acl-helpers="file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group" \ --enable-url-rewrite-helpers="fake" \ --enable-eui \ --enable-esi \ --enable-icmp \ --enable-zph-qos \ --enable-ecap \ --disable-translation \ --with-swapdir=/var/spool/squid3 \ --with-logdir=/var/log/squid3 \ --with-pidfile=/var/run/squid3.pid \ --with-filedescriptors=65536 \ --with-large-files \ --with-default-user=proxy \ --enable-ssl \ --enable-ssl-crtd \ --with-openssl \ --enable-delay-pools Nie będę omawiał znaczenia wszystkich użytych tutaj przełączników, gdyż właśnie w ten sposób została skompilowana paczka znajdująca się w repozytoriach. Jedyne co dodaliśmy, to cztery ostatnie przełączniki: --enable-ssl --enable-ssl-crtd --with-openssl oraz --enable-delay-pools. Trzy pierwsze włączają moduł SSLBUMP, co pozwala nam modyfikować treść stron szyfrowanych za pomocą protokołu TLS. Ostatni natomiast włącza możliwość ograniczenia prędkości klientom, wg różnych kryteriów.

Po przeprowadzeniu konfiguracji środowiska możemy rozpocząć kompilację za pomocą standardowego polecenia sudo make. Aby przyspieszyć ten proces, możemy po przełączniku -j podać liczbę rdzeni/wątków, którymi dysponuje nasz komputer. Dzięki temu do procesu kompilacji zostaną wykorzystane wszystkie dostępne zasoby.

Teraz, po kilkunastu minutach oczekiwania czeka nas jedynie instalacja upragnionego serwera pośredniczącego. Robimy to standardowo, za pomocą polecenia sudo make install. Od tego momentu możemy się cieszyć w pełni funkcjonalnym, lecz jeszcze nie skonfigurowanym serwerem proxy.

Konfiguracja systemd

Musimy pamiętać, że wersja ręcznie kompilowana nie zawiera plików dla sysvinit/systemd, które umożliwiają łatwe zamykanie/uruchamianie/restartowanie usługi. Będziemy musieli je stworzyć ręcznie.
Przykładowy plik dla usługi systemd, który umieszczamy w katalogu /etc/systemd/system, może wyglądać tak:

[Unit] Description=LSB: Squid HTTP Proxy version 3.x Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target After=network-online.target remote-fs.target systemd-journald-dev-log.socket nss-lookup.target Wants=network-online.target Conflicts=shutdown.target [Service] Type=forking Restart=no TimeoutSec=5min IgnoreSIGPIPE=no KillMode=process GuessMainPID=no RemainAfterExit=yes SysVStartPriority=2 ExecStart=/usr/local/squid/sbin/squid ExecStop=/usr/local/squid/sbin/squid -k kill ExecReload=/usr/local/squid/sbin/squid -k restart

Następnie wydajemy dwa polecenia:systemctl enable squid3.service

Dzięki temu poleceniu usługa squid3 będzie uruchamiana zawsze przy starcie komputera.
Usługę będziemy mogli zamykać/restartować za pomocą systemctl

systemctl [start/stop/restart] squid3.service

Domyślny plik konfiguracyjny

acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localhost http_access deny all http_port 3128 coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320

Squid, podobnie jak każdy inny linuksowy program, jest domyślnie w jakiś sposób skonfigurowany. Niestety, w naszym przypadku będziemy musieli się trochę napracować. Domyślny plik konfiguracyjny zawiera jedynie podstawowy zestaw opcji, które lekko poprawiają komfort korzystania z internetu. W jaki sposób? Fragmenty nieraz odwiedzanych witryn, które nie zmieniają się zbyt często, są zapisywane w pamięci RAM serwera proxy. W ten sposób, gdy klient znowu zażąda otwarcia tej samej witryny, jej części nie są pobierane ze źródłowego serwera, a z lokalnego. Poprawia to znacznie (szczególnie, jeśli nie mamy zbyt szybkiego łącza) komfort przeglądania globalnej sieci.
Przeanalizujmy, linijka po linijce treść, która znajduje się w domyślnym pliku konfiguracyjnym.acl SSL_ports port 443acl oznacza definicję listy kontroli dostępu. Tej konstrukcji będziemy używali dość często. W tym wypadku tworzona jest lista portów, przez które będziemy mogli komunikować się ze światem. Ruch płynący przez wszystkie pozostałe porty zostanie zablokowany (http_access deny !Safe_ports).

Kolejnym poleceniem, którego będziemy bardzo często używali jest http_access. Przykład jego zastosowania widzimy w kolejnych linijkach domyślnego pliku konfiguracyjnego. http_access allow localhost managerPowyższa linijka pozwala na używanie serwera proxy jedynie “menedżerowi pamięci cache” oraz maszynie lokalnej. Na końcu zawsze znajduje się polecenie http_access deny allJeśli pakiet nie został przepuszczony przez jedną z wcześniejszych linijek, to w tym momencie zostanie na pewno odrzucony.
Kolejna linijka to http_port 3128. Definiuje ona, którego portu używa nasz serwer proxy. Możemy wybrać dowolną liczbę. Nie ma to większego znaczenia. Coredump_dir /var/spool/squid3 Jest to miejsce, w którym umieszczane będą zrzuty z pamięci programu, jeśli będzie on działał niepoprawnie.
refresh_pattern - dotarliśmy do jednego z ciekawszych, ale i ostatnich elementów pliku konfiguracyjnego. Są to reguły, wg których do do pamięci tymczasowej zapisywane będą pliki danych witryn.

Spójrzmy, wg jakiego schematu mogą być tworzone te reguły:refresh_pattern regex_min percent regex_maxRegex_min oraz regex_max to odpowiednio minimalny i maksymalny “wiek” zapisywanego obiektu. Wartość percent służy do ustalenia “świeżości” obiektu w przypadku, kiedy ten został zmodyfikowany na źródłowym serwerze. Jeśli pierwszy raz czytasz o czymś takim, może być to trochę trudne do zrozumienia, dlatego posłużę się przykładem:refresh_pattern -i \.gif$ 1440 20% 10080Co oznacza ta reguła? Zobaczmy:

  • Reguła tyczy się wszystkich plików, których nazwa kończy się na .gif lub .GIF.
  • Jeśli wiek (wiek mówi o tym, jak długo obiekt znajduje się na naszym serwerze proxy) jest mniejszy niż 1440 minut, oznacza to, że ta kopia jest świeża i nie trzeba jej aktualizować z serwera źródłowego.
  • Jeśli wiek pliku jest większy niż 10080 minut, oznacza to że jest przestarzały i należy pobrać świeżą kopię z serwera.
  • Jeśli wiek pliku jest większy niż 1440 minut, ale mniejszy niż 10080 minut, oznacza to, że należy obliczyć “współczynnik świeżości”. Możemy to zrobić, dzieląc czas, przez jaki plik istnieje na naszym lokalnym serwerze przez ilość minut, która upłynęła od jego ostatniej aktualizacji na serwerze źródłowym. Na przykład, przyjmijmy że nasz gif został u źródła zaktualizowany 10000 minut temu, natomiast na naszym serwerze pośredniczącym jest obecny od 1800 minut. Mając te dane możemy obliczyć domniemany współczynnik świeżości, który w tym wypadku wynosi 1800/10000*100%=18%. Jest to wartość mniejsza niż podana w pliku konfiguracyjnym (20%). Oznacza to, że to analizowane zdjęcie jest świeże.
Domyślne reguły sprawdzają się w większości przypadków. Jeśli jednak chcemy bardziej zaryzykować i osiągnąć lepsze wyniki, możemy stworzyć własne refresh_patterns. Dodatkowe informacje na temat ich tworzenia możemy uzyskać w dokumentacji projektu:

A co z logami?

Log jest to potoczna nazwa zapisu wyniku działania programu - jego komunikatów ostrzegawczych czy błędów. Squid tworzy dwa pliki. Obydwa są zapisane w katalogu /var/log/squid3 (jeśli wymarzyłeś sobie inne miejsce - nie ma przeszkód. Wystarczy podać inny katalog podczas konfiguracji źródeł Squid).

Pierwszym z nich jest access.log. Przechowuje on wszystkie próby dostępu do Internetu podejmowane przez użytkowników korzystających z danego serwera. Z pliku tego możemy odczytać m.in.:
  • Stempel czasowy
  • Jaki adres IP/użytkownik podjął próbę nawiązania połączenia
  • Czy połączenie się udało(TCP_MISS) czy zostało zablokowane przez serwer pośredniczący(TCP_DENIED)
  • Z jakim adresem internetowym/adresem IP/portem próbowano podjąć próbę połączenia
  • Jaki rodzaj treści był pobierany/wysyłany
Jak widzimy, plik access.log może dostarczyć bardzo dużą ilość informacji o zwyczajach użytkowników korzystających z naszej sieci. Niestety, wyniki działania tu zapisane są ciężkie w interpretacji przez człowieka. Pojedyncza próba połączenia się z witryną (np.: www.dobreprogramy.pl) może wygenerować od kilku do kilkudziesięciu wpisów w pliku access.log. Oddzielne linijki utworzą między innymi żądania pobrania reklam czy skryptów śledzących zachowanie użytkownika na stronie.
Drugim z plików zapisujących wyniki działania programu jest cache.log. Z jego treści możemy dowiedzieć się między innymi, ile elementów stron internetowych zostało zapisanych na serwerze pośredniczącym. W tym miejscu możemy także dowiedzieć się o różnych błędach (np.: niemożności otwarcia jakiegoś pliku wymaganego do poprawnego działania serwera).

Modyfikujemy podstawową konfigurację

Serwer proxy powinien pracować cały czas. Nie mniej, czasami może zajść ewentualność (np.: brak prądu), która spowoduje jego restart. W takim wypadku cały zgromadzony zasób cache zostanie stracony, gdyż domyślnie przechowywany jest on jedynie w pamięci RAM. Możemy temu zapobiec, tworząc magazyn obiektów cache na dysku. Najpierw musimy do pliku konfiguracyjnego dodać następującą linijkę:cache_dir ufs /var/spool/squid3/cache 100 16 256/var/spool/squid3/cache to oczywiście ścieżka do katalogu, gdzie chcemy przechowywać pliki zapisanych witryn. Liczba 100, która znajduje się tuż po lokalizacji folderu przechowującego pliki cache oznacza maksymalną ilość miejsca, jaką poświęcimy na ten cel. 16 oraz 256 oznaczają liczbę podkatalogów, w których przechowywane będą fragmenty stron internetowych. Możemy zmienić te wartości, ale najlepszym wyjściem w chwili obecnej będzie pozostawienie liczb domyślnych.

Wprowadzenie powyższej linii do pliku konfiguracyjnego nie wystarczy, aby serwer przerzucił pliki cache z pamięci RAM na dysk twardy. Musimy jeszcze poinstruować nasz serwer pośredniczący, aby na dysku utworzył odpowiednią strukturę katalogów. Możemy to zrobić bardzo prosto - przechodzimy do katalogu, w którym znajduje się plik wykonywalny: /usr/local/squid/sbin. Następnie wydajemy polecenie:./squid -z

Wynik działania tego polecenia widzimy na powyższym zrzucie. Od tego momentu wszelkie fragmenty przeglądanych przez użytkowników naszej sieci stron internetowych będą zapisywane w nowo utworzonej strukturze katalogów.

Domyślnie, z serwera pośredniczącego może korzystać tylko maszyna lokalna - ta, na której ta aplikacja działa. Aby umożliwić pozostałym komputerom w naszej sieci LAN dostęp do proxy, musimy dodać do pliku konfiguracyjnego kilka linijek.

Najpierw musimy stworzyć nową listę kontroli dostępu - ACL. Już wcześniej powiedzieliśmy sobie o niej parę słów. Teraz zajmiemy się nią nieco dokładniej. Po słówku acl podajemy nazwę listy, typ elementu, do którego się odwołuje, a na końcu sam element. Uzbrojeni w tą wiedzę, utwórzmy listę acl localnet, która zawiera wszystkie adresy IP przewidziane dla sieci lokalnych. acl localnet 10.0.0.0/8 acl localnet src 172.16.0.0/12 acl localnet src 192.168.0.0/16 Zauważyłeś pewnie, że kolejne podsieci są zdefiniowane w kolejnych linijkach pliku. Nie jest to błąd. Każda linijka po prostu rozszerza to, co istniało już wcześniej.
Teraz musimy jedynie zaakceptować ruch płynący z adresów zdefiniowanych przez listę kontroli dostępu localnet. Robimy to za pomocą polecenia:http_access allow localnetDzięki temu rozwiązaniu wszystkie komputery w naszej sieci lokalnej będą posiadały możliwość używania serwera proxy.

Konfiguracja klientów

Serwer pośredniczący może działać w dwóch trybach. Może być “niewidzialny” dla stacji roboczych. Takie proxy nazywa się “transparentnym”. My zajmiemy się drugim rodzajem, “nietransparentnym” serwerem pośredniczącym, który będzie wymagał dodatkowej konfiguracji na klienckich komputerach. Dlaczego podjąłem taki wybór? Przerobienie nietransparentnego proxy na transparentne to kwestia kosmetycznych zmian. Dodatkowo jest to szeroko opisane w Internecie (polskim także!). Natomiast tutaj chcemy się skupić na bardziej zagmatwanych zagadnieniach związanych z omawianym serwerem pośredniczącym. No to bierzmy się do roboty.

Pierwsza metoda zakłada zmianę w opcjach internetowych.

Ustawienia serwera Proxy możemy wprowadzić, wchodząc w Opcje Internetowe. Należy przejść na zakładkę Połączenia i kliknąć “Ustawienia sieci LAN”.
Zaznaczamy pole “Użyj serwera proxy dla twojej sieci LAN”. Następnie wprowadzamy adres IP oraz port, z którego korzysta nasz serwer pośredniczący.
Sposób ten ma jedną wadę. Użytkownik będzie mógł w każdej chwili zmienić ustawienia serwera proxy. Dodatkowo, na każdym koncie musimy wprowadzać zmiany powtórnie. Aby wyemilinować te wady, musimy skorzystać z edytora lokalnych zasad grupy (gpedit).
Uruchamiamy edytor lokalnych zasad grupy. Aby to zrobić, w polu wyszukiwania w menu start wpisujemy: gpedit.msc. Następnie przechodzimy drzewko katalogów w następującej kolejności: Konfiguracja użytkownika->Ustawienia systemu Windows->Internet Explorer Maintenance->Połączenia->Ustawienia serwera Proxy. W wyświetlonym okienku wpisujemy adres IP oraz port naszego serwera pośredniczącego. Nie zwracaj uwagi na to, że opcja w nazwie zawiera słowa “Internet Explorer”. Wprowadzone tutaj zmiany tyczą się każdej przeglądarki.
No dobra, każdy użytkownik ma ustawiony serwer pośredniczący, z którego ma korzystać. Nie mniej, dalej nie zablokowaliśmy możliwości zmiany tego ustawienia. Ten element również zmodyfikujemy za pomocą edytora lokalnych zasad grupy. Przechodzimy drzewko opcji w następującej kolejności: Konfiguracja użytkownika->Szablony administracyjne>Komponenty systemu Windows->Internet Explorer->Opcje internetowe. Wyszukujemy opcję - wyłącz zakładkę połączenia. Włączamy tę możłiwość.

W Windows 10 sytuacja nieco się komplikuje. W tym systemie nie ustawimy opcji serwera proxy z poziomu gpedit. Musimy więc na koncie każdego użytkownika ręcznie przeprowadzać tę zmianę. Następnie, podobnie jak w poprzednim wypadku, należy zablokować możliwość modyfikacji tych ustawień.

Słowem podsumowania

W tej części zajęliśmy się kompilacją, instalacją oraz konfiguracją najpopularniejszego serwera proxy squid. Omówiliśmy jedynie podstawy związane z tym zagadnieniem. W następnym epizodzie zajmiemy się m.in. skonfigurowaniem autoryzacji dostępu do serwera proxy, blokowaniem poszczególnym użytkownikom dostępu do wybranych witryn, a także wieloma innymi, ciekawymi rzeczami.
 

linux internet

Komentarze

0 nowych
bachus   20 #1 01.09.2016 15:06

OOO fajny wpis. Pamiętam, jak kilka lat temu studenci informatyki koniecznie chcieli mi się włamać do wifi, to wystawiłem im honeypot ze squidem (proksy transparentne) i się bawiłem - np. obracałem wszystkie obrazki ładowane ze stron (mogrify -flip). Później jak mnie mijali to głowy spuszczali...

mikolaj_s   14 #2 01.09.2016 16:45

Dzięki za wpis może się przyda ;)

Virtus   7 #3 01.09.2016 17:40

Koszmar.
Proszę o wersję dla Windows, gdzie nie trzeba będzie 80% operacji dokonywać w wierszu poleceń.

pocolog   12 #4 01.09.2016 17:45

@Virtus: Najpierw idź poszukaj routera, czy serwera na Windowsie :P

edelmann   12 #5 01.09.2016 18:28

Dla laików? Wolne żarty.

Autor edytował komentarz w dniu: 01.09.2016 18:28
Jack_Daniels   8 #6 01.09.2016 18:30

Trochę biednie, 100 Mega na cache to strasznie mało jak ma działać w sieci, ważny parametr to cache_mem czyli ile pamięci dajemy serwerowi jak i maximum_object_size_in_memory maksymalny obiekt w pamięci i kilka innych. Sam squid świetnie przyspiesza przeglądanie stron, można też połączyć go z lokalnym DNS.

T_K   5 #7 01.09.2016 20:14

@pocolog:
"Najpierw idź poszukaj routera, czy serwera na Windowsie :P"
Kiedyś miałem proxy na terminalu hp t5000, na którym działał okrojony do minimum windows 2000.

@Virtus http://www.youngzsoft.net/ccproxy/
Bądź co bądź, konfiguracja bajecznie prosta, ale wolę proxy linuxowe. Jest dużo więcej opcji do skonfigurowania.

  #8 01.09.2016 20:24

@pocolog: Nie trzeba szukać serwera na windowsie bo jest ich dużo wbrew pozorom.

bart86   10 #9 01.09.2016 21:05

dobry wpis ja się zastanawiam nad ziproxy

Semtex   18 #10 01.09.2016 23:05

Poza tym, że bardzo dobry wpis to "dla laików" jest nadużyciem, chyba, że to literówka i miało być "geeków", to zwracam honor ;)

watchmaker   4 #11 02.09.2016 00:06

Pojęcia o systemd to nie masz... Ale da się to przeżyć, podobnie jak kilka innych nieścisłości, niestety dotarłem do: "Kolejna linijka to http_port 3128. Definiuje ona, którego portu używa nasz serwer proxy. Możemy wybrać dowolną liczbę. Nie ma to większego znaczenia" - proponuję wpisać -1. Śmiechłem. Prawdziwy ekspert. Przemilczę tak krótką jak żenującą rozprawę na temat proxy transparentne vs nietransparentne. Albo robisz rzetelny wpis albo daj se siana. I gwoli ścisłości najnowszy Squid3 ma numer 3.5.20 ("na dzień dzisiejszy" ... no w maju żeś to zaczął pisać i nawet przed publikacją nie chciało Ci się przejrzeć i poprawić). 2/5 na zachętę.

RBX   3 #12 02.09.2016 00:17

@bachus: Może napiszesz o tym na blogu?

sagraelski   7 #13 02.09.2016 06:39

@bachus: Dobry temat na artykuł! Może się pokusisz?

karol221-10   10 #14 02.09.2016 07:14

@watchmaker: Jedyne, z czym się mogę zgodzić, to zła "najnowsza" wersja squid. Nie zwróciłem uwagi na ten błąd. Co do systemd, wytłumacz, o co ci chodzi, bo nie widzę tu błędu. Co do portów, to nie wyjaśniłem tego dosłownie, ale raczej to jest logiczne, że należy wybrać jakąś wartość większą od zera. Wachlarz mamy dość szeroki, gdyż nie licząc kilku zajętych przez domyślne usługi (HTTP, FTP,SMTP itd.) reszta portów, na których może nasłuchiwać squid jest wolna.

bachus   20 #15 02.09.2016 08:33

@RBX: bardziej ciekawe może być to, że później im udostępniłem ich własnych internet.

Tomcraft911   2 #16 02.09.2016 08:44

Bardzo fajny wpis, akurat od pewnego czasu zastanawiam się na zrobieniem pod potrzeby zaoszczędzenia transferu ponieważ mam limitowany internet i jest to delikatnie mówiąc irytujące ;)
PS. Jaki sprzęcik by wystarczył to postawienia serwerka którego głównym zadaniem byłoby buforowanie stron internetowych? Bo myślę nad czym pokroju Raspberry Pi lub inne tego typu płytki bo zależy mi aby było to możliwie energooszczędne.

karol221-10   10 #17 02.09.2016 09:00

@Tomcraft911: Raspberry Pi spokojnie wystarczy. Ja, jak eksperymentowałem z squid to korzystałem właśnie z tego. Obciążenie procesora podczas gdy z serwera proxy korzystało cztery komputery wynosiło +-30% a wzrost wydajności przeglądania stron był zauważalny

  #18 02.09.2016 09:07

@Virtus: Koszmarem jest twoja wersja Windowsa....

eskimosek   6 #19 02.09.2016 10:11

To jest chyba raczej na wolne łącza poniżej 1 Mbps bo zamiast pobierać całą witryne to pobiera difa między witryną w cache a witryną aktualną.Ale jak ktoś ma w miare szybkie łącze typu 1 Gbps a są już takie ( http://www.speedtest.net/my-result/5599332246) to stosowanie squid nie ma za bardzo sensu.

karol221-10   10 #20 02.09.2016 10:13

@eskimosek: Ale kto ma dzisiaj łącze 1Gbps? Większość osób poza większymi miastami ma 10-30 Mbps. Squid przy takich łączach ma jeszcze sens. Pozatym serwer pośredniczący może mieć także inne zastosowania.

eskimosek   6 #21 02.09.2016 10:35

@karol221-10: Internet 10 Mbps to już szybki internet a 30 Mbps to bardzo szybki a 100 Mbps rakieta a 1 Gbps to super rakieta a 10 Gbps to rakieta UFO tylko takiego łącza sie nie wykorzysta bo serwery mają ograniczone zasoby.Np. 100 Mbps tak samo szybko działa jak 1 Gbps czy 10 Gbps w praktyce np. jak sie coś ściąga z mega.co.nz to idzie maks 10 MB/s zamiast np. 700 mb/s czy 800 mb/s.

BTW. Squid sie bardziej przydaje od strony ISP żeby odciążyć zużycie łącza bo to diała troche jak Load Balancer.Np. u ISP 200 osob korzysta w danej chwili z onetu czy wp to 200 x pobranie strony by zużywało troche łącza a jak jest za proxy to 200x w sieci lokalnej a strona jest pobierana tylko na ten serwer proxy.

Autor edytował komentarz w dniu: 02.09.2016 10:38
karol221-10   10 #22 02.09.2016 10:53

@eskimosek: No niekoniecznie. W warunkach domowych też się potrafi mocno przydać. Załóżmy nad na przykład, że mamy kilka komputerów z Windows 7/8/8.1 W normalnym przypadku aktualizacje każdy z komputerów musiałby pobierać od nowa. Przy zastosowaniu squid aktualizację pobieramy tylko raz, a reszta może ciągnąć z serwera pośredniczącego (przy odpowiedniej konfiguracji). Zauważ także, jak to może oszczędzić transfer (przy łączu mobilnym).

tadeusz11   4 #23 02.09.2016 11:27

Dla laików?! żarty jakieś...

gaijin   5 #24 02.09.2016 11:47

do tego wszystkiego polecam squidguard który podłączony do squid i odpowiednio skonfigurowany z filtrami zablokuje dostęp wszystkim lub tylko tym którym chcemy strony z porno, grami, torrentami....

  #25 02.09.2016 12:24

@bachus: squid był-jest świetny w konfiguracji bawiłem się nim jakieś 15 lat temu :)

karol221-10   10 #26 02.09.2016 13:03

@gaijin: O squidguard zamierzam napisać w jednej z kolejnych części na temat squid.

waldikv   1 #27 02.09.2016 15:29

Polecam SARG do squida :), 15 lat temu to była świetna zabawa ze squidem
dla mniej "geekow" : Sarg - Squid Analysis Report Generator is a tool that allow you to view "where" your users are going to on the Internet. Sarg generate HTML reports, with informations about users, IP Addresses, bytes, sites and times.

Autor edytował komentarz w dniu: 02.09.2016 15:57
watchmaker   4 #28 02.09.2016 22:29

@karol221-10: Musisz się jeszcze nauczyć czytać ze zrozumieniem. Nigdzie nie napisałem, że masz jakiś błąd w konfiguracji systemd. Oprócz tego, że ustawianie opcji na wartości domyślne jest bezsensu, zależności Before jak i After w [Unit] są totalnie od czapy, wystarczyłoby network-online.target. Użycie "Wants" jest mocno dyskusyjne. [Service] wystarczy Type i wszystkie Exec z aktualizacją ExecStop - "kill"? Chyba lepiej dać tam "shutdown". Brakuje [Install].

Napisałeś "dowolna liczba" i że "to nie ma znaczenia", bardzo ciekawe podejście do laików. Jak nie można -1 to sobie tam wpiszę 1000001. Skąd wiesz, że reszta portów jest wolna? To dość istotne zagadnienie, a Ty to cudownie zlewasz.

lnsane   2 #29 04.09.2016 14:54

Czyli... najpierw "idź użytkowniku do sklepu i kup sobie jakiś wyczesany router, na którym postawisz pingwina albo najlepiej jakiś minipc/HTPC". Później, jak już ogarniesz na nim, to co "normalnie potrzebujesz", to możesz się zabrać za tę konfigurację, żeby... kontrolować dziewczynę/żonę/itp i to co robi w necie. :D

  #30 04.09.2016 20:34

@karol221-10: " Większość osób poza większymi miastami ma 10-30 Mbps. Squid przy takich łączach ma jeszcze sens"

eee bez przesady ja mam 20 Mbps na upie i downie i dosyć rozbudowaną sieć domową także rozdzielam to jeszcze na kilka osób które też łącza nie oszczędzają i jest ok. Oczywiście wszystko zależy też od konfiguracji są pacjenci z bardzo szybkim łączem które marnują dajmy na to używając wifi czy mając złą konfigurację sieci i potem ze 100 Mbps robi się 20 :)

  #31 04.09.2016 20:47

@lnsane:"Czyli... najpierw "idź użytkowniku do sklepu i kup sobie jakiś wyczesany router, na którym postawisz pingwina "

skoro to jest dla laika to implementacja squida na openwrt jest dla super-laika :)

karol221-10   10 #32 06.09.2016 08:50

@Anonim (niezalogowany): Miałem na myśli taki przypadek, kiedy na przykład ktoś kilka razy ogląda ten sam film np.: z Youtube, a to obciąża łącze. Poza tym jeśli 5 komputerów ściąga te same aktualizacje z Windows Update to też nie jest to optymalne.

  #33 07.09.2016 01:30

@watchmaker: "watchmaker nie prowadzi bloga" - tyle w temacie. Może jakaś konstruktywna krytyka, a nie hejt o pierdoły?

  #34 08.09.2016 01:43

@karol221-10: "Poza tym jeśli 5 komputerów ściąga te same aktualizacje z Windows Update to też nie jest to optymalne."

przy 20 Mbps no sory ja nie będę wykładał Ci matematyki sam sobie wylicz. po zatym bardzo dobry wpis ale z tą prędkością przesadzasz deklarowana symetryczna dwudziestka to bardzo dobre łącze

  #35 08.09.2016 01:45

@karol221-10: nie miało być deklarowana ale rzeczywista no wiadomo o co mi chodziło sory za pomyłkę

watchmaker   4 #36 08.09.2016 07:33

@Anonim (niezalogowany): A Ty prowadzisz? Nawet tu konta nie masz. Argument z dupy. Wiesz czym jest w ogóle konstruktywna krytyka? Do tego nie trzeba bloga poza tym nie mam czasu na "blogowanie" a już na pewno nie tutaj. Poza tym co ma piernik do wiatraka: artykuł jest miejscami nieścisły, autor przeznacza go "dla laika" a pisze jak dla osoby która zjadła przynajmniej zęby mleczne na Linuksie, stawiając takie kwiatuszki jak ten konfig systemd, nie wspominając o pisaniu od czapki (dla samego pisania). Ale hej, to przecież dobreprogramy.pl... tu się niski poziom promuje a nie prostuje. Ave. Linux, uszanowanko, wow.

karol221-10   10 #37 08.09.2016 10:08

@watchmaker: Co do portów, wygrałeś, tę nieścisłość poprawię, jak będę miał czas. Co do systemd, fakt, niektóre opcje ustawione są na wartości domyślne, akt to przecież oryginalny config dla tego programu! Zmienione tylko ścieżki, gdyż ten wygenerowany domyślnie korzystał ze skryptów init.d.