====== squid.conf ====== vor dem ersten Start oder bei CFG-Änderungen muss dieser Befehl aufgerufen werden: > squid -z > squid -z -f /etc/squid/squid.conf ===== minimal ===== # ### Erlaubniss-Definitionen acl MANAGER proto cache_object acl LOKAL src 127.0.0.1/255.255.255.255 acl ALL src 0.0.0.0/0.0.0.0 acl ERLAUBT src 192.168.1.0/255.255.255.0 # ### Erlaubniss-Regeln # alle dürfen alles http_access allow ALL # # nur einige dürfen alles http_access allow ERLAUBT # # der Rest darf nichts http_access deny ALL # icp_access allow ALL # ### unser Proxy-Port http_port 3128 # ### weiteres access_log /var/log/squid/access.log squid hosts_file /etc/hosts coredump_dir /tmp ===== standard ===== # ### Erlaubniss-Definitionen acl MANAGER proto cache_object acl LOKAL src 127.0.0.1/255.255.255.255 acl ALL src 0.0.0.0/0.0.0.0 acl ERLAUBT src 192.168.1.0/255.255.255.0 # ### Erlaubniss-Regeln # alle dürfen alles http_access allow ALL # # nur einige dürfen alles http_access allow ERLAUBT # # der Rest darf nichts http_access deny ALL # icp_access allow ALL # ### unser Proxy-Port http_port 3128 # ### weiteres cache_mem 2048 MB # # Cache-Verzeichnis soll nur max. 10 GB groß werden # cache_dir ufs Directory-Name Mbytes L1 L2 [options] cache_dir ufs /var/spool/squid 10240 16 256 #cache_dir null /var/spool/squid # access_log /var/log/squid/access.log squid hosts_file /etc/hosts # memory_pools_limit 1024 MB coredump_dir /tmp ===== https proxy für große dateien mit ssl bumping ===== **wichtig**: openssl version von squid wird benötigt, gnutls version funktioniert nicht (auf debian ''squid-openssl'' statt ''squid'') * ''acl private_network'' definiert die lokalen ipv6 & ipv4 netze (ip ranges) * ''http_access allow private_network'' whitelisted die vorher definierte acl * ''http_access deny all'' am ende verbietet alles was bisher noch nicht gematched wurde (verwandelt sozusagen alle ''http_access allow'' zeilen in whitelist einträge) * ''https_port 3128 tls-cert=fullchain.pem tls-key=privkey.pem'' listened auf port 3128 als https proxy mit einem letsencrypt zertifikat (fullchain ist das vollständige zertifikat und privkey der private key) * ''cache_dir aufs /var/spool/squid 64000 16 256'' setzt das cache dir mit dem speichertyp aufs (ufs aber moderner und non blocking), 64gb größe auf hdd/ssd, 16 sub dirs 1. grades, 256 sub dirs 2. grades * ''ssl_bump splice localhost'' https requests von localhost werden getunnelt * ''ssl_bump bump all'' alle anderen https requests werden entschlüsselt und neuverschlüsselt (erlaubt caching, aber sehr unsicher, **nur in lokalen testumgebungen nutzen**) include /etc/squid/conf.d/*.conf shutdown_lifetime 10 seconds acl private_network src fe80::/10 # rfc 4291 link local (ipv6) acl private_network src 169.254.0.0/16 # rfc 3927 link local (ipv4) acl private_network src fc00::/7 # rfc 4193 unique local (ipv6) acl private_network src 10.0.0.0/8 # rfc 1918 private (ipv4) acl private_network src 172.16.0.0/12 # rfc 1918 private (ipv4) acl private_network src 192.168.0.0/16 # rfc 1918 private (ipv4) acl safe_ports port 80 # http acl safe_ports port 443 # https acl secure_ports port 443 http_access deny !safe_ports http_access deny CONNECT !secure_ports http_access allow localhost manager http_access deny manager http_access allow localhost http_access allow private_network http_access deny to_localhost http_access deny to_linklocal http_access deny all #ssl_bump splice localhost ssl_bump bump all #http_port 3128 https_port 3128 tls-cert=fullchain.pem tls-key=privkey.pem coredump_dir /var/spool/squid cache_dir aufs /var/spool/squid 64000 16 256 Testen: * in firefox konfigurieren und interaktiv testen * chromium mit cli args starten und interaktiv testen: ''%%chromium --incognito --proxy-server="https://proxy.example.com:3128%%'' * curl auf cli (http): ''%%time curl -IL http://httpforever.com -x https://proxy.example.com:3128%%'' * curl auf cli (https): ''%%time curl -L https://cloudflare.com/cdn-cgi/trace -x https://proxy.example.com:3128%%'' * yt-dlp auf cli (youtube video downloaden und so größeren cache testen): ''%%yt-dlp --prefer-free-formats --restrict-filenames --output "%(title)s.%(ext)s" https://youtu.be/dQw4w9WgXcQ --proxy https://proxy.example.com:3128 --force-overwrites%%'' * curl auf cli (debian iso downloaden und so größeren cache testen): ''%%time curl -LO https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.6.0-amd64-netinst.iso -x https://proxy.example.com:3128%%''