Squid to w pełni funkcjonalny buforujący serwer proxy obsługujący popularne protokoły sieciowe, takie jak HTTP, HTTPS, FTP i inne. Może być używany do poprawy wydajności serwera internetowego poprzez buforowanie powtarzających się żądań, filtrowanie ruchu internetowego i dostęp do treści z ograniczeniami geograficznymi.
W tym samouczku wyjaśniono, jak skonfigurować serwer proxy Squid w systemie Ubuntu 20.04 i skonfigurować przeglądarki internetowe Firefox i Google Chrome, aby go używać.
Instalowanie Squid na Ubuntu
Pakiet squid jest zawarty w standardowych repozytoriach Ubuntu 20.04. Aby go zainstalować, uruchom 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ź stan usługi:
sudo systemctl status squid
Wynik będzie wyglądał mniej więcej 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 Squid
Usługę squid można skonfigurować, edytując /etc/squid/squid.conf
. Plik konfiguracyjny zawiera komentarze opisujące działanie każdej opcji konfiguracyjnej. Możesz także umieścić swoje ustawienia konfiguracyjne w oddzielnych plikach, które mogą być zawarte w głównym pliku konfiguracyjnym 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ąć konfigurowanie instancji squid, otwórz plik w edytorze tekstu :
sudo nano /etc/squid/squid.conf
Domyś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ź wiersz zaczynający się od http_port
i określ adres IP interfejsu oraz nowy port. Jeśli nie określono żadnego interfejsu, Squid będzie nasłuchiwał na wszystkich interfejsach.
# Squid normally listens to port 3128 http_port IP_ADDR:PORT
Uruchomienie Squid na wszystkich interfejsach i na domyślnym porcie powinno wystarczyć dla większości użytkowników.
Squid umożliwia kontrolowanie dostępu klientów do zasobów sieciowych za pomocą list kontroli dostępu (ACL). Domyślnie dostęp jest dozwolony tylko z lokalnego hosta.
Jeśli wszyscy klienci używający serwera proxy mają statyczny adres IP, najprostszą opcją ograniczenia dostępu do serwera proxy jest utworzenie listy ACL zawierającej dozwolone adresy IP. W przeciwnym razie możesz ustawić squid, aby używał uwierzytelniania.
Zamiast dodawać adresy IP w głównym pliku konfiguracyjnym, utwórz nowy dedykowany plik, który będzie zawierał dozwolone adresy IP:
192.168.33.1 # All other allowed IPs
Po zakończeniu otwórz główny plik konfiguracyjny i utwórz nową listę ACL o nazwie allowed_ips
(pierwsza podświetlona linia) i zezwól na dostęp do tej listy ACL za pomocą dyrektywy http_access
(druga podświetlona linia):
# ... acl allowed_ips src "/etc/squid/allowed_ips.txt" # ... #http_access allow localnet http_access allow localhost http_access allow allowed_ips # And finally deny all other access to this proxy http_access deny all
Kolejność reguł http_access
jest ważna. Upewnij się, że dodałeś linię wcześniej http_access deny all
.
Dyrektywy http_access
funkcjonują w podobny sposób, jak reguły zapory. Squid odczytuje reguły od góry do dołu, a gdy reguła pasuje, poniższe reguły nie są przetwarzane.
Za każdym razem, gdy wprowadzasz zmiany w pliku konfiguracyjnym, musisz ponownie uruchomić usługę Squid, aby zmiany odniosły skutek:
sudo systemctl restart squid
Uwierzytelnianie Squid
Jeśli ograniczenie dostępu na podstawie adresu IP nie działa w Twoim przypadku, możesz skonfigurować squid do uwierzytelniania użytkowników. Squid obsługuje podstawowe uwierzytelnianie Samba , LDAP i HTTP.
W tym przewodniku użyjemy podstawowego uwierzytelniania. Jest to prosta metoda uwierzytelniania wbudowana w protokół HTTP.
Aby wygenerować zaszyfrowane hasło, użyj narzędzia openssl
. Następujące polecenie dołącza parę USERNAME:PASSWORD
do /etc/squid/htpasswd
pliku:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
Na przykład, aby utworzyć użytkownika „josh” z hasłem „ P@ssvv0rT
”, należy wykonać :
printf "josh:$(openssl passwd -crypt 'P@ssvv0rd')\n" | sudo tee -a /etc/squid/htpasswd
josh:QMxVjdyPchJl6
Następnym krokiem jest włączenie podstawowego uwierzytelniania HTTP i dołączenie pliku zawierającego poświadczenia użytkownika do pliku konfiguracyjnego squid.
Otwórz główną konfigurację i dodaj:
sudo nano /etc/squid/squid.conf
# ...
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all
Pierwsze trzy podświetlone linie tworzą nową listę ACL o nazwie authenticated
, a ostatnia podświetlona linia umożliwia dostęp do uwierzytelnionych użytkowników.
Uruchom ponownie usługę Squid:
sudo systemctl restart squid
Konfiguracja firewalla
Aby otworzyć porty Squid, włącz profil UFW
„Squid”:
sudo ufw allow 'Squid'
Jeśli Squid jest uruchomiony na innym, niż domyślny port, na przykład, 8888
można zezwolić na ruch na tym porcie z: sudo ufw allow 8888/tcp
.
Konfiguracja przeglądarki do korzystania z serwera proxy
Teraz, gdy masz już skonfigurowanego Squid, ostatnim krokiem jest skonfigurowanie preferowanej przeglądarki, aby z niego korzystać.
Firefox
Poniższe kroki są takie same dla systemów Windows, macOS i Linux.
- W prawym górnym rogu kliknij ikonę hamburgera,
☰
aby otworzyć menu przeglądarki Firefox: - Kliknij
⚙ Preferences
- Przewiń w dół do
Network Settings
i kliknijSettings...
. - Otworzy się nowe okno.
- Wybierz
Manual proxy configuration
. - Wprowadź adres IP swojego serwera Squid
HTTP Host
i3128
w poluPort
. - Zaznacz pole
Use this proxy server for all protocols
. - Kliknij
OK
, aby zapisać ustawienia.
- Wybierz
W tym momencie twój Firefox jest skonfigurowany i możesz przeglądać Internet przez proxy Squid. Aby to zweryfikować, otwórz google.com
, wpisz „jakie jest moje IP” i powinieneś zobaczyć adres IP twojego serwera Squid.
Istnieje kilka wtyczek, które mogą również pomóc w konfiguracji ustawień proxy przeglądarki Firefox, na przykład FoxyProxy .
Google Chrome
Google Chrome używa domyślnych systemowych ustawień serwera proxy. Zamiast zmieniać ustawienia serwera proxy w systemie operacyjnym, możesz użyć dodatku, takiego jak SwitchyOmega, lub uruchomić przeglądarkę internetową 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"
System operacyjny Mac :
"/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 jednocześnie uruchamiać wiele instancji Chrome.
Aby upewnić się, że serwer proxy działa poprawnie, otwórz google.com
i wpisz „jakie jest moje IP”. Adres IP wyświetlany w Twojej przeglądarce powinien być adresem IP Twojego serwera.