Usare una cache di rete per apt usando squid-deb-proxy
Nel caso avessimo molte macchine in rete e non volessimo far pesare tutto il traffico dato da apt, è possibile usare un server proxy locale che fa da cache e fa scaricare solo la prima volta i pacchetti da internet e poi le successive richieste vengono esaudite con le copie in locale.
Ho sempre usato apt-cacher-ng per questo compito ma ultimamente a seguito di errori sempre più frequenti di firme sbagliate o file corrotti ho deciso di provare un suo rivale, squid-deb-proxy.
Il vantaggio rispetto ad apt-cacher-ng è che è completamente trasparente per il pc che fa richiesta, cioè sarà il pc che controllerà se in rete locale esiste un proxy e in tal caso lo userà, in caso contrario uscirà diretto normalmente.
Si installa sia il server che il client:
1 |
sudo apt-get install squid-deb-proxy squid-deb-proxy-client avahi-utils |
L’ultimo pacchetto dovrebbe essere installato dalle dipendenze ma per sicurezza lo nominiamo, è quello che si occupa di avvisare in rete che esiste un proxy in ascolto.
Terminata l’installazione spegniamo eventualmente il servizio per configurarlo:
1 |
sudo service squid-deb-proxy stop |
Si edita il file di configurazione:
1 |
sudo nano /etc/squid-deb-proxy/squid-deb-proxy.conf |
Ad esempio cambiamo la cartella di archiviazione:
1 2 |
# cache_dir aufs /var/cache/squid-deb-proxy 40000 16 256 cache_dir aufs /path/new/folder 40000 16 256 |
il 40000 indica quanto spazio riservare in MB al proxy per i pacchetti.
Cambiando il percorso occorre dare i permessi al percorso nuovo e copiare la struttura vecchia sulla nuova oppure far rigenerare il tutto tramite il comando:
1 2 |
sudo chown -R proxy.proxy /path/new/folder sudo squid3 -f /etc/squid-deb-proxy/squid-deb-proxy.conf -z |
Ora serve andare a dire quale rete è abilitata a usare il proxy, nel file allowed-networks-src.acl sono indicate le reti 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 e 127.0.0.1.
Se abbiamo un’altra classe si imposta nel file apposito:
1 |
sudo nano /etc/squid-deb-proxy/allowed-networks-src.acl.d/10-default |
Serve ancora dire da quali siti il proxy è abilitato a lavorare, di default ha impostato i classici repository di Ubuntu ( sono nel file mirror-dstdomain.acl ), se ci serve abilitarne altri si modifica:
1 |
sudo nano /etc/squid-deb-proxy/mirror-dstdomain.acl.d/10-default |
Ad esempio aggiungiamo il repo di Mint, Mint Debian, Webmin ( questo l’ho tolto per via di problemi ad autenticare il server da cui scaricare che puntando a sourceforge cambia spesso nome ), VirtualBox e Launchpad:
1 2 3 4 5 6 |
packages.linuxmint.com extra.linuxmint.com debian.linuxmint.com #download.webmin.com download.virtualbox.org ppa.launchpad.net |
Salviamo e avviamo il server:
1 |
sudo service start squid-deb-proxy |
Facendo un apt-get update dal server dovremmo vedere iniziare a popolarsi la cartella di cache ( sempre se abbiamo installato il client prima ).
Ora basta andare sulle singole macchine che vogliamo gestire tramite questo modo e installiamo solo il client:
1 |
sudo apt-get install squid-deb-proxy-client |
E in maniera totalmente trasparente il pc userà il proxy se si trova nella rete locale, mentre se si trova fuori o in un altra posizione userà la connessione diretta.
Aggiornamento: nell’eventualità che si avessero problemi con un qualche tipo di pacchetto o si volesse installare qualcosa bypassando il proxy è sufficente editare il file /etc/apt/apt.conf.d/30autoproxy e remmare la riga di configurazione per poi ripristinarla terminata l’installazione.