Squid to jeden z najpopularniejszych serwerów proxy w systemach Linux, wykorzystywany zarówno jako proxy dla użytkowników, jak i jako element kontroli dostępu do internetu w sieciach lokalnych. Prywatny serwer proxy na Squidzie pozwala przekierowywać ruch przez własną maszynę, ograniczać dostęp wybranym adresom IP oraz stosować reguły blokowania domen.
- Czym jest prywatny serwer proxy
- Kiedy warto użyć Squid
- Wymagania wstępne
- Instalacja Squid w Linuxie
- Gdzie znajduje się konfiguracja Squida
- Podstawowa konfiguracja prywatnego proxy
- Ograniczenie dostępu tylko do własnego IP
- Uwierzytelnianie loginem i hasłem
- Jak dodać kilka adresów lub podsieci
- Blokowanie wybranych stron
- Uruchomienie i restart usługi
- Jak sprawdzić, czy proxy nasłuchuje
- Test działania proxy z poziomu terminala
- Otwieranie Squida na świat
- Firewall
- Konfiguracja proxy w Windows 10 i 11
- Konfiguracja proxy w przeglądarce
- Przykładowa kompletna konfiguracja prywatnego proxy
- Wersja dla pojedynczego użytkownika
- Najczęstsze problemy
- Najlepsza praktyka dla prywatnego proxy
Czym jest prywatny serwer proxy
Prywatny proxy to serwer pośredniczący w komunikacji z internetem, z którego korzysta tylko właściciel lub ograniczona grupa użytkowników. W odróżnieniu od publicznych proxy prywatny serwer daje większą kontrolę nad dostępem, konfiguracją i bezpieczeństwem.
W praktyce najczęściej używa się go do:
- ukrycia publicznego adresu IP klienta,
- centralnego zarządzania ruchem internetowym,
- ograniczenia dostępu do proxy tylko dla określonych adresów IP,
- wdrożenia uwierzytelniania loginem i hasłem,
- blokowania wybranych stron lub kategorii stron.
Kiedy warto użyć Squid
Squid sprawdza się szczególnie wtedy, gdy potrzebujesz:
- prostego prywatnego proxy na VPS lub serwerze domowym,
- narzędzia do kontroli ruchu w małej sieci,
- ręcznej konfiguracji proxy w przeglądarce lub systemie,
- reguł dostępu opartych o adres IP lub autoryzację użytkownika.
Wymagania wstępne
Do uruchomienia Squida potrzebujesz:
- serwera z systemem Linux,
- dostępu administracyjnego root lub sudo,
- otwartego portu proxy, najczęściej 3128,
- opcjonalnie publicznego adresu IP, jeśli proxy ma działać zdalnie.
Instalacja Squid w Linuxie
Najprościej zainstalować Squida z repozytoriów dystrybucji (dnf/yum/apt) lub skorzystać z kontenera Docker. Poniżej znajdziesz typowe komendy dla popularnych scenariuszy:
Instalacja na systemach opartych o Red Hat
Aby zainstalować pakiet przez DNF:
sudo dnf install squid -y
Lub przez YUM:
sudo yum install squid -y
Po instalacji uruchom usługę i dodaj ją do autostartu:
sudo systemctl enable --now squid
Sprawdzenie statusu usługi:
sudo systemctl status squid --no-pager
Uruchomienie usługi oraz włączenie jej przy starcie systemu to standardowy krok administracyjny po instalacji Squida.
Instalacja w Dockerze
Jeśli zależy Ci na szybkim wdrożeniu, możesz uruchomić Squida w kontenerze Docker z gotowego obrazu:
docker run --name squid -p 3128:3128 --rm -d \
-e PROXYLOGIN=mylogin \
-e PROXYPASSWORD=mypassword \
anticaptcha/squid
Jeśli chcesz użyć własnego pliku konfiguracyjnego, zamontuj go do kontenera:
docker run --name squid -p 3128:3128 --rm -d \
-v /path/to/squid.conf:/etc/squid/squid.conf \
anticaptcha/squid
To rozwiązanie jest wygodne, gdy chcesz szybko postawić prywatny proxy bez ręcznej instalacji całego stosu zależności.
Gdzie znajduje się konfiguracja Squida
Domyślny plik konfiguracyjny znajduje się pod ścieżką:
/etc/squid/squid.conf
To właśnie ten plik modyfikuje się przy ustawianiu reguł dostępu, portu nasłuchu, autoryzacji i filtrów.
Przed zmianami warto wykonać kopię zapasową:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
Podstawowa konfiguracja prywatnego proxy
Minimalna konfiguracja prywatnego Squida powinna określać:
- port nasłuchu,
- dozwolone adresy IP,
- ewentualną autoryzację,
- reguły
http_access.
Przykładowy, prosty schemat:
http_port 3128
acl allowed_clients src 192.168.1.0/24
http_access allow allowed_clients
http_access deny all
To oznacza, że z proxy będą mogły korzystać tylko urządzenia z podsieci 192.168.1.0/24. Ograniczanie dostępu poprzez ACL jest podstawowym i skutecznym mechanizmem kontroli w Squidzie.
Ograniczenie dostępu tylko do własnego IP
Jeśli proxy ma służyć wyłącznie Tobie, najlepiej ograniczyć dostęp do pojedynczego adresu IP. Poniższa konfiguracja dopuszcza ruch tylko z jednego źródła:
acl moje_ip src 1.2.3.4/32
http_access allow moje_ip
http_access deny all
Jeśli masz dynamiczny adres IP, takie ograniczenie zadziała tylko do czasu zmiany adresu. W przypadku zmiennego IP rozważ uwierzytelnianie loginem i hasłem lub połączenie przez VPN z ustalonym adresem źródłowym.
Uwierzytelnianie loginem i hasłem
Jednym z najważniejszych elementów prywatnego proxy jest autoryzacja. W typowej konfiguracji stosuje się mechanizm basic_auth oparty o plik haseł. Najpierw zainstaluj narzędzie do tworzenia pliku haseł i dodaj użytkownika:
sudo htpasswd -c /etc/squid/passwd mylogin
Następnie w pliku squid.conf dodaj parametry uwierzytelniania i reguły dostępu:
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm Private Proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
Uwaga: dokładna ścieżka do basic_ncsa_auth może różnić się zależnie od dystrybucji (np. /usr/lib/squid/ w Debian/Ubuntu). Zweryfikuj lokalizację binarium w swoim systemie, aby uniknąć błędów autoryzacji.
Jak dodać kilka adresów lub podsieci
Jeśli z proxy ma korzystać więcej niż jedna maszyna, dodaj kilka reguł ACL i zezwól na dostęp wybranym źródłom:
acl dom src 192.168.0.10/32
acl biuro src 192.168.0.0/24
http_access allow dom
http_access allow biuro
http_access deny all
Kolejność reguł http_access ma znaczenie — najpierw umieść dopuszczenia, a na końcu blokadę globalną.
Blokowanie wybranych stron
Aby zablokować dostęp do określonych domen, użyj ACL dstdomain i reguły deny:
acl blocked_sites dstdomain .onet.pl
http_access deny blocked_sites
Jeśli chcesz, aby blokada działała poprawnie, umieść regułę deny przed ogólnym allow dla użytkowników. Przykład kompletnej sekwencji:
acl blocked_sites dstdomain .onet.pl
acl localnet src 192.168.1.0/24
http_access deny blocked_sites
http_access allow localnet
http_access deny all
Takie filtrowanie pozwala w prosty sposób egzekwować politykę dostępu do treści w sieci lokalnej.
Uruchomienie i restart usługi
Po edycji konfiguracji należy zrestartować Squida:
sudo systemctl restart squid
Aby sprawdzić, czy usługa działa poprawnie:
sudo systemctl status squid --no-pager
Jak sprawdzić, czy proxy nasłuchuje
Do weryfikacji nasłuchu na porcie użyj polecenia ss lub netstat i wyszukaj proces Squida:
sudo ss -tulpn | grep squid
albo:
sudo netstat -lenp | grep squid
Jeżeli widzisz nasłuch na porcie 3128, oznacza to, że Squid działa i przyjmuje połączenia.
Test działania proxy z poziomu terminala
Jednym z najlepszych sposobów sprawdzenia konfiguracji jest test przez curl z uwzględnieniem autoryzacji użytkownika i hasła:
curl -x IP_HERE:3128 -U mylogin:mypassword http://antigate.com/iptest.php
Możesz też sprawdzić dowolną stronę prezentującą publiczny adres IP. Jeśli ruch przechodzi przez proxy poprawnie, serwis pokaże adres serwera proxy, a nie lokalny adres klienta.
Otwieranie Squida na świat
Jeśli proxy ma być dostępne z zewnątrz, zadbaj o ograniczenie dostępu (np. przez ACL do własnego IP lub uwierzytelnianie) oraz otwarcie odpowiedniego portu w firewallu. Przykładowa reguła dopuszczająca tylko jeden adres:
acl moje-ip src 203.0.113.10/32
http_access allow moje-ip
http_access deny all
Nie wystawiaj Squida do internetu bez kontroli dostępu — otwarty port 3128 bez ograniczeń stanowi poważne ryzyko bezpieczeństwa.
Firewall
Jeśli używasz firewalld, dopuszczenie usługi i przeładowanie reguł wykonasz tak:
sudo firewall-cmd --permanent --add-service=squid
sudo firewall-cmd --reload
Jeżeli korzystasz z innego mechanizmu zapory, dostosuj polecenia do używanego systemu (np. iptables lub ufw).
Konfiguracja proxy w Windows 10 i 11
Jeśli proxy ma być używane na komputerze z Windows, w ustawieniach systemowych ręcznie wskaż serwer proxy i port. W systemie Windows wykonaj kolejno:
- wejdź w Ustawienia,
- wybierz Sieć i internet,
- przejdź do Proxy,
- włącz opcję Użyj serwera proxy,
- wpisz adres IP i port serwera proxy,
- zapisz zmiany.
W tym miejscu dodasz także wyjątki (adresy omijające proxy) oraz opcję wyłączania proxy dla lokalnych adresów intranetowych.
Konfiguracja proxy w przeglądarce
W przeglądarce wprowadź poniższe dane połączeniowe:
- adres IP serwera,
- port, najczęściej 3128,
- login i hasło, jeśli włączono autoryzację.
Po poprawnym wpisaniu danych przeglądarka poprosi o uwierzytelnienie. To standardowe zachowanie w przypadku włączonej autoryzacji w Squidzie.
Przykładowa kompletna konfiguracja prywatnego proxy
Poniżej znajduje się prosty, praktyczny przykład dla prywatnego proxy tylko z własnej podsieci:
http_port 3128
acl allowed_clients src 192.168.1.0/24
acl blocked_sites dstdomain .onet.pl
http_access deny blocked_sites
http_access allow allowed_clients
http_access deny all
Jeśli chcesz dodać logowanie użytkownika, rozbuduj konfigurację o mechanizm basic_auth i zezwól tylko autoryzowanym osobom.
Wersja dla pojedynczego użytkownika
Dla prywatnego proxy używanego wyłącznie przez jedną osobę sensowny układ to:
http_port 3128
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
To rozwiązanie jest szczególnie wygodne na VPS, gdy dostęp ma być możliwy z wielu lokalizacji, ponieważ nie wymaga stałego adresu IP użytkownika.
Najczęstsze problemy
- brak połączenia z proxy zwykle oznacza, że usługa nie działa, port nie jest otwarty albo firewall blokuje ruch,
- błąd autoryzacji najczęściej wynika z błędnego loginu lub hasła albo niepoprawnej konfiguracji modułu uwierzytelniania,
- brak reakcji na reguły ACL zwykle wynika z błędnej kolejności wpisów w
squid.conf, - jeśli po zmianach nic się nie dzieje, należy ponownie uruchomić usługę Squid.
Najlepsza praktyka dla prywatnego proxy
W praktyce najbezpieczniej jest:
- ograniczyć dostęp tylko do wybranych IP albo użyć autoryzacji,
- nie wystawiać proxy bezpośrednio do internetu bez kontroli,
- ustawić firewall dla portu 3128,
- regularnie testować działanie komendą
curl, - utrzymywać prostą konfigurację i dodawać reguły stopniowo.








