J'ai fait des recherches sur plusieurs solutions et certains développeurs Ubuntu ont proposé une configuration de proxy (basée sur Squid) pour 10.04 et les versions ultérieures. Ça s'appelle squid-deb-proxy
. Il suffit qu'une machine agisse en tant que serveur. Les grandes entreprises utilisent généralement leur propre miroir, mais pour la plupart des gens, la mise en miroir à la demande suffit.
Pourquoi squid-deb-proxy?
- Pas d'édition de fichiers côté client.
- Utilisez zeroconf pour que les clients soient "zéro configuration"
- Utilisez une solution proxy solide existante au lieu d'écrire un nouvel outil.
- Facile à configurer pour un administrateur Linux typique.
Configuration du serveur
Sur la machine que vous souhaitez utiliser en tant que serveur, installez l'outil avec:
sudo apt-get install squid-deb-proxy avahi-utils
Maintenant, démarrez les bits de service:
sudo start squid-deb-proxy
Et les bits d'avahi (vous n'en avez pas besoin si vous êtes sur 12.04+):
sudo start squid-deb-proxy-avahi
Cela installera le serveur proxy (qui écoute le port 8000 par défaut) et les outils avahi nécessaires au serveur pour s’annoncer sur votre réseau via zeroconf.
Configuration client
Sur chacun des ordinateurs sur lesquels vous souhaitez utiliser le cache (les clients et le serveur lui-même afin qu'il puisse également utiliser le cache), vous devez installer l'outil côté client qui permet de rechercher le serveur automatiquement, faites-les cliquer ici. :
ou via la ligne de commande:
sudo apt-get install squid-deb-proxy-client
Facultatif : pour une efficacité maximale, vous devez configurer une machine pour télécharger automatiquement les mises à jour. Ainsi, lorsque vos autres machines en ont besoin, elles sont déjà dans le cache. Vous pouvez le faire en allant dans Système-> Administration-> Gestionnaire de mises à jour, puis cliquez sur le bouton "Paramètres ...", dans l'onglet Mise à jour, configurez-le pour télécharger automatiquement toutes les mises à jour.
Mettre en cache des sources tierces
Par défaut, le cache est configuré pour ne mettre en cache que les référentiels Ubuntu officiels. Pour en ajouter davantage, vous devez les ajouter à la liste des sources à l'adresse /etc/squid-deb-proxy/mirror-dstdomain.acl
. C'est ici que vous pouvez ajouter ppa.launchpad.net ou d'autres services que vous pourriez utiliser. Après avoir modifié ce fichier, vous devez l'exécuter sudo restart squid-deb-proxy
pour que les modifications soient effectives.
Configuration manuelle
Si, pour une raison quelconque, vous ne souhaitez pas utiliser zeroconf (pour des raisons de réseau ou autre), vous pouvez configurer manuellement un client pour qu'il utilise le proxy en modifiant /etc/apt/apt.conf
et en ajoutant la strophe suivante (remplacez 0.0.0.0 par l'adresse IP du serveur). ):
Acquire {
Retries "0";
HTTP { Proxy "http://0.0.0.0:8000"; };
};
Pare-feu
Si vous utilisez un pare-feu, avahi utilise l'adresse 5353 au-dessus des adresses 224.0.0.0/4 et requiert une règle ressemblant à ceci:
# 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
Ensuite, vous devez ouvrir le port TCP 8000 pour la communication réelle via le proxy. Quelque chose de plus ou moins comme ça:
-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT
Ces règles sont juste pour vous aider. Ils ne correspondront probablement pas à votre configuration. (c.-à-d. mauvaise interface, mauvaises adresses IP de réseau privé, etc.)
Confirmer cela fonctionne
Commencez par mettre le journal sur le serveur afin que vous puissiez le consulter: tail -F /var/log/squid-deb-proxy/access.log
puis exécutez une mise à jour sur toute machine sur laquelle le client est installé; le journal devrait commencer à défiler avec des entrées comme celle-ci:
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
Ce qui signifie que les clients voient le cache mais le manquent, ce qui est attendu car il n'a encore rien mis en cache. Chaque exécution suivante devrait apparaître comme TCP_HIT. Vous pouvez trouver les fichiers de cache squid eux-mêmes dans /var/cache/squid-deb-proxy
.
En l'utilisant
À partir de ce moment, toutes les machines de votre réseau vérifieront le cache avant de frapper le réseau extérieur pour récupérer les paquets. Si de nouveaux packages sont disponibles, le premier ordinateur le téléchargera du réseau, après quoi les demandes ultérieures pour ce package seront envoyées du serveur aux clients.
FAIRE
Nous devons encore permettre à apt d'utiliser simplement un cache annoncé sur le réseau immédiatement et par défaut, de sorte que vous n'avez pas besoin d'installer la pièce cliente. Nous devons également corriger le bogue selon lequel le fichier deb de 403 ne figure pas dans la liste des miroirs.