Squid jest w pełni funkcjonalnym proxy buforującym, obsługującym popularne protokoły sieciowe, takie jak HTTP, HTTPS, FTP i inne. Może być używany do poprawy wydajności serwera WWW przez buforowanie powtarzających się żądań, filtrowanie ruchu sieciowego i dostęp do treści z ograniczeniami geograficznymi.
Ten poradnik wyjaśnia, jak skonfigurować Squid Proxy na Ubuntu 20.04 i skonfigurować przeglądarki Firefox i Google Chrome do korzystania z niego.
Instalacja Squid na Ubuntu #
Pakiet squid jest zawarty w standardowych repozytoriach Ubuntu 20.04. Aby go zainstalować, wykonaj następujące polecenia jako użytkownik sudo:
sudo apt updatesudo apt install squid
Po zakończeniu instalacji, usługa Squid uruchomi się automatycznie. Aby to zweryfikować, sprawdź status usługi:
sudo systemctl status squidWyjście będzie wyglądało tak:
● squid.service - Squid Web Proxy Server Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-10-23 19:02:43 UTC; 14s ago Docs: man:squid(8)...Konfigurowanie usługi Squid #
Usługa Squid może być skonfigurowana poprzez edycję pliku /etc/squid/squid.conf. Plik konfiguracyjny zawiera komentarze, które opisują co robi każda opcja konfiguracyjna. Możesz również umieścić swoje ustawienia konfiguracyjne w oddzielnych plikach, które mogą być dołączone do głównego pliku konfiguracyjnego za pomocą dyrektywy „include”.
Przed wprowadzeniem jakichkolwiek zmian, zaleca się wykonanie kopii zapasowej oryginalnego pliku konfiguracyjnego:
sudo cp /etc/squid/squid.conf{,.orginal}Aby rozpocząć konfigurację instancji squida, otwórz plik w edytorze tekstu:
sudo nano /etc/squid/squid.confDomyślnie, squid jest ustawiony na nasłuchiwanie na porcie 3128 na wszystkich interfejsach sieciowych na serwerze.
Jeśli chcesz zmienić port i ustawić interfejs nasłuchujący, znajdź linię zaczynającą się od http_port i podaj adres IP interfejsu oraz nowy port. Jeśli nie zostanie określony żaden interfejs, Squid będzie nasłuchiwał na wszystkich interfejsach.
# Squid normally listens to port 3128http_port IP_ADDR:PORTUruchamianie Squida na wszystkich interfejsach i na domyślnym porcie powinno być w porządku dla większości użytkowników.
Squid pozwala kontrolować, w jaki sposób klienci mogą uzyskać dostęp do zasobów sieciowych za pomocą list kontroli dostępu (ACL). Domyślnie, dostęp jest dozwolony tylko z localhost.
Jeśli wszyscy klienci, którzy używają proxy mają statyczne adresy IP, najprostszą opcją ograniczenia dostępu do serwera proxy jest stworzenie ACL, która będzie zawierała dozwolone IP. W przeciwnym razie można ustawić squida tak, aby używał uwierzytelniania.
Zamiast dodawać adresy IP w głównym pliku konfiguracyjnym, utwórz nowy dedykowany plik, który będzie zawierał dozwolone IP:
192.168.33.1# All other allowed IPsPo wykonaniu tych czynności, otwórz główny plik konfiguracyjny i utwórz nowy ACL o nazwie allowed_ips (pierwsza podświetlona linia) i zezwól na dostęp do tego ACL używając dyrektywy http_access (druga podświetlona linia):
# ...acl allowed_ips src "/etc/squid/allowed_ips.txt"# ...#http_access allow localnethttp_access allow localhosthttp_access allow allowed_ips# And finally deny all other access to this proxyhttp_access deny allPorządek reguł http_access jest ważny. Upewnij się, że dodajesz linię przed http_access deny all.
Dyrektywa http_access działa w podobny sposób jak reguły firewalla. Squid czyta reguły od góry do dołu, a kiedy reguła pasuje, reguły poniżej nie są przetwarzane.
Kiedy dokonasz zmian w pliku konfiguracyjnym, musisz zrestartować usługę Squida, aby zmiany zaczęły obowiązywać:
sudo systemctl restart squidUwierzytelnianie Squida #
Jeśli ograniczanie dostępu na podstawie IP nie działa w twoim przypadku, możesz skonfigurować Squida tak, aby używał back-endu do uwierzytelniania użytkowników. Squid obsługuje Sambę, LDAP, oraz HTTP basic auth.
W tym przewodniku będziemy używać basic auth. Jest to prosta metoda uwierzytelniania wbudowana w protokół HTTP.
Aby wygenerować zaszyfrowane hasło, użyj narzędzia openssl. Poniższe polecenie dołącza parę USERNAME:PASSWORD do pliku /etc/squid/htpasswd:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswdNa przykład, aby utworzyć użytkownika „josh” z hasłem „P@ssvv0rT„, należy uruchomić:
printf "josh:$(openssl passwd -crypt 'P@ssvv0rd')\n" | sudo tee -a /etc/squid/htpasswdjosh:QMxVjdyPchJl6Kolejnym krokiem jest włączenie podstawowego uwierzytelniania HTTP i dołączenie pliku zawierającego dane uwierzytelniające użytkownika do pliku konfiguracyjnego squida.
Otwórz główną konfigurację i dodaj następujące elementy:
sudo nano /etc/squid/squid.conf# ...auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswdauth_param basic realm proxyacl authenticated proxy_auth REQUIRED# ...#http_access allow localnethttp_access allow localhosthttp_access allow authenticated# And finally deny all other access to this proxyhttp_access deny allPierwsze trzy wyróżnione linie tworzą nową ACL o nazwie authenticated, a ostatnia wyróżniona linia zezwala na dostęp uwierzytelnionym użytkownikom.
Restart usługi Squid:
sudo systemctl restart squidKonfiguracja zapory sieciowej #
Aby otworzyć porty Squid, włącz profil UFW’Squid':
sudo ufw allow 'Squid'Jeśli Squid działa na innym, nie-domyślnym porcie, na przykład 8888 możesz zezwolić na ruch na tym porcie za pomocą: sudo ufw allow 8888/tcp.
Konfigurowanie przeglądarki do korzystania z proxy #
Teraz, gdy masz już skonfigurowany Squid, ostatnim krokiem jest skonfigurowanie preferowanej przeglądarki do korzystania z niego.
Firefox #
Poniższe kroki są takie same dla Windows, macOS i Linux.
- 
W prawym górnym rogu kliknij na ikonę hamburgera ☰, aby otworzyć menu Firefoksa:
- 
Kliknij na link ⚙ Preferences.
- 
Przewiń w dół do sekcji Network Settingsi kliknij przyciskSettings....
- 
Otworzy się nowe okno. - Wybierz przycisk radiowy Manual proxy configuration.
- Wprowadź adres IP swojego serwera Squid w polu HTTP Hostoraz3128w poluPort.
- Zaznaczyć pole wyboru Use this proxy server for all protocols.
- Kliknąć przycisk OK, aby zapisać ustawienia.
 
- Wybierz przycisk radiowy 
W tym momencie, Twój Firefox jest skonfigurowany i możesz przeglądać Internet przez proxy Squid. Aby to sprawdzić, otwórz google.com, wpisz „what is my ip” i powinieneś zobaczyć swój adres IP serwera Squid.
Aby przywrócić domyślne ustawienia, przejdź do Network Settings, wybierz Use system proxy settings przycisk radiowy i zapisz ustawienia.
Istnieje kilka wtyczek, które mogą również pomóc w konfiguracji ustawień proxy Firefoksa, takich jak FoxyProxy.
Google Chrome #
Google Chrome używa domyślnych ustawień proxy systemu. Zamiast zmieniać ustawienia proxy systemu operacyjnego, możesz użyć dodatku, takiego jak SwitchyOmega lub uruchomić przeglądarkę Chrome z wiersza poleceń.
Aby uruchomić Chrome przy użyciu nowego profilu i połączyć się z serwerem Squid, użyj następującego polecenia:
Linux :
/usr/bin/google-chrome \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"macOS :
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"Windows :
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^ --user-data-dir="%USERPROFILE%\proxy-profile" ^ --proxy-server="http://SQUID_IP:3128"Profil zostanie utworzony automatycznie, jeśli nie istnieje. W ten sposób możesz uruchomić wiele instancji Chrome w tym samym czasie.
Aby potwierdzić, że serwer proxy działa poprawnie, otwórz google.com, i wpisz „what is my ip”. IP pokazane w przeglądarce powinno być adresem IP Twojego serwera.
Wnioski #
Squid jest jednym z najpopularniejszych serwerów cache proxy. Poprawia szybkość działania serwera WWW i może pomóc w ograniczeniu dostępu użytkowników do Internetu.
Pokazaliśmy, jak zainstalować i skonfigurować Squida na Ubuntu 20.04 oraz jak skonfigurować przeglądarkę, aby z niego korzystała.
Więcej informacji na ten temat można znaleźć na stronie internetowej.