Ho fatto alcune ricerche su un gruppo di soluzioni e alcuni sviluppatori di Ubuntu hanno escogitato una configurazione proxy (basata su Squid) per la versione 10.04 e successive. Si chiama squid-deb-proxy
. Richiede solo una macchina che funga da server. Le grandi organizzazioni di solito gestiscono i propri mirror completi, ma per la maggior parte delle persone è sufficiente il mirroring on demand.
Perché squid-deb-proxy?
- Nessuna modifica di file sul lato client.
- Utilizzare zeroconf in modo che i client fossero "zero config"
- Utilizzare una soluzione proxy solida esistente anziché scrivere un nuovo strumento.
- Facile da configurare per un tipico amministratore Linux.
Server Config
Sul computer che si desidera fungere da server installare lo strumento con:
sudo apt-get install squid-deb-proxy avahi-utils
Ora avvia i bit di servizio:
sudo start squid-deb-proxy
E i bit avahi (non è necessario se sei su 12.04+):
sudo start squid-deb-proxy-avahi
Ciò installerà il server proxy (che ascolta la porta 8000 per impostazione predefinita) e gli strumenti avahi necessari per consentire al server di pubblicizzarsi sulla propria rete tramite zeroconf.
Configurazione client
Su ciascuno dei computer che si desidera utilizzare la cache (i client e il server stesso in modo che possa utilizzare anche la cache), è necessario installare lo strumento lato client che cerchiamo di cercare automaticamente il server, fare clic qui :
o tramite riga di comando:
sudo apt-get install squid-deb-proxy-client
Facoltativo : per la massima efficienza, è necessario impostare un computer per il download automatico degli aggiornamenti, in modo che quando gli altri computer ne hanno bisogno sia già nella cache. Puoi farlo andando su Sistema-> Amministrazione-> Gestione aggiornamenti, quindi fai clic sul pulsante "Impostazioni ...", nella scheda Aggiornamento impostalo per scaricare automaticamente tutti gli aggiornamenti.
Memorizzazione nella cache di fonti di terze parti
Per impostazione predefinita, la cache è impostata per memorizzare nella cache solo i repository Ubuntu ufficiali. Per aggiungere altro è necessario aggiungerli all'elenco delle fonti in /etc/squid-deb-proxy/mirror-dstdomain.acl
. Qui puoi aggiungere ppa.launchpad.net o altri servizi che potresti utilizzare. Dopo aver apportato modifiche a questo file, è necessario eseguire sudo restart squid-deb-proxy
per rendere effettive le modifiche.
Configurazione manuale
Se per qualche motivo non si desidera utilizzare zeroconf (per motivi di rete o altro), è possibile impostare manualmente un client per utilizzare il proxy modificando /etc/apt/apt.conf
e aggiungendo la seguente stanza (sostituire 0.0.0.0 con l'indirizzo IP del server ):
Acquire {
Retries "0";
HTTP { Proxy "http://0.0.0.0:8000"; };
};
Firewall
Nel caso in cui si utilizzi un firewall, avahi utilizza 5353 sugli indirizzi 224.0.0.0/4 e richiede una regola simile alla seguente:
# Specifically port 5353 which avahi uses
-A INPUT -i eth2 -d 224.0.0.0/4 --dport 5353 -j ACCEPT
# OR
# Wide open so all local broadcasting works
-A INPUT -i eth2 -d 224.0.0.0/4 -j ACCEPT
Successivamente, è necessario aprire la porta TCP 8000 per la comunicazione effettiva tramite il proxy. Qualcosa di più o di meno come questo:
-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT
Queste regole sono solo per aiutarti. Probabilmente non corrisponderanno al tuo setup uno a uno. (es. interfaccia errata, indirizzi IP di rete privata errati, ecc.)
Confermando che funziona
Prima di tutto accodare il registro sul server in modo da poterlo guardare: tail -F /var/log/squid-deb-proxy/access.log
e quindi eseguire un aggiornamento su qualsiasi macchina su cui è installato il client; il registro dovrebbe iniziare a scorrere con voci come questa:
1307310795.647 32 192.168.1.106 TCP_MISS/302 768 GET http://us.archive.ubuntu.com/ubuntu/dists/natty-proposed/universe/i18n/Translation-en.xz - DIRECT/141.210.26.10 text/html
1307310795.683 34 192.168.1.106 TCP_MISS/302 752 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.716 32 192.168.1.106 TCP_MISS/302 746 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.750 32 192.168.1.106 TCP_MISS/302 764 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.784 32 192.168.1.106 TCP_MISS/302 758 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.817 32 192.168.1.106 TCP_MISS/404 657 GET http://us.archive.ubuntu.com/dists/natty-proposed/multiverse/i18n/Translation-en_US.xz - DIRECT/141.210.26.10 text/html
Ciò significa che i client vedono la cache ma la mancano, il che è previsto poiché non ha ancora memorizzato nella cache nulla. Ogni esecuzione successiva deve essere visualizzata come TCP_HIT. Puoi trovare gli stessi file di cache di calamari in /var/cache/squid-deb-proxy
.
Usandolo
Da quel momento in poi tutte le macchine della tua rete controlleranno la cache prima di colpire la rete esterna per recuperare i pacchetti. Se sono disponibili nuovi pacchetti, il primo computer lo scaricherà dalla rete, dopo che le richieste successive per quel pacchetto verranno dal server ai client.
FARE
Dobbiamo ancora abilitare apt per usare immediatamente una cache pubblicizzata sulla rete e per impostazione predefinita, quindi non è necessario installare il pezzo client. Dobbiamo anche correggere il bug che il deb di 403 non è nella lista dei mirror.