J'ai fait quelques recherches sur un certain nombre de solutions et certains développeurs Ubuntu ont proposé une configuration proxy (basée sur Squid) pour la version 10.04 et ultérieure. Il s'appelle squid-deb-proxy
. Il ne nécessite qu'une machine pour agir en tant que serveur. Les grandes organisations utilisent généralement leurs propres miroirs, mais pour la plupart des gens, la mise en miroir à la demande est suffisante.
Pourquoi squid-deb-proxy?
- Pas de modification de fichiers du côté client.
- Utilisez zeroconf pour que les clients soient "zéro config"
- Utilisez une solution proxy existante et solide au lieu d’écrire un nouvel outil.
- Facile à configurer pour un administrateur Linux typique.
Configuration du serveur
Sur l’ordinateur que vous souhaitez utiliser comme serveur, installez l’outil avec:
sudo apt-get install squid-deb-proxy avahi-utils
Commencez maintenant les bits de service:
sudo start squid-deb-proxy
Et les bits avahi (vous n'en avez pas besoin si vous êtes sur 12.04 +):
sudo start squid-deb-proxy-avahi
Cela va installer le serveur proxy (qui écoute le port 8000 par défaut) et les outils avahi nécessaires pour que le serveur puisse s’annoncer sur votre réseau via zeroconf.
Configuration du client
Sur chacun des ordinateurs que vous souhaitez utiliser le cache (les clients et le serveur lui-même pour pouvoir utiliser le cache), vous devez installer l’outil côté client permettant recherchez 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, de sorte que lorsque vos autres machines en ont besoin, elles se trouvent déjà dans le cache. Vous pouvez le faire en allant dans System- & gt; Administration- & gt; Update Manager, puis cliquez sur le bouton "Paramètres ...", dans l'onglet Mise à jour, configurez-le pour télécharger automatiquement toutes les mises à jour.
Caching des sources tierces
Par défaut, le cache est configuré pour ne mettre en cache que les dépôts officiels Ubuntu. Pour en ajouter d'autres, vous devez les ajouter à la liste des sources à /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 apporté des modifications à ce fichier, vous devez 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 autres), vous pouvez définir manuellement un client pour utiliser le proxy en modifiant /etc/apt/apt.conf
et en ajoutant la strophe suivante (remplacez le 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 5353 sur les adresses 224.0.0.0/4 et requiert une règle qui ressemble à 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 ne sont que pour vous aider. Ils ne correspondront probablement pas à votre configuration individuelle. (c.-à-d. une mauvaise interface, des adresses IP de réseau privé incorrectes, etc.)
Confirmation du fonctionnement
Commencez par afficher le journal sur le serveur afin de pouvoir 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 ceci:
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 qu’il le manque, ce qui est attendu car il n’a encore rien mis en cache. Chaque exécution suivante devrait apparaître sous la forme TCP_HIT. Vous pouvez trouver les fichiers cache du calmar eux-mêmes dans /var/cache/squid-deb-proxy
.
L’utiliser
À partir de ce moment-là, toutes les machines de votre réseau vérifieront le cache avant de toucher le réseau externe pour récupérer les packages. Si de nouveaux paquets sont disponibles, le premier ordinateur le téléchargera à partir du net, après que les demandes ultérieures pour ce paquet proviendront du serveur pour les clients.
TODO
Nous devons toujours activer apt pour utiliser simplement un cache annoncé sur le réseau et par défaut, vous n'avez donc pas besoin d'installer le composant client. Nous avons également besoin de corriger le bogue que les deb 403 ne contiennent pas. la liste des miroirs.