Investigué un montón de soluciones y algunos desarrolladores de Ubuntu idearon una configuración proxy (basada en Squid) para 10.04 y posteriores. Se llama squid-deb-proxy
. Solo requiere una máquina para actuar como servidor. Las grandes organizaciones suelen ejecutar sus propios espejos completos, pero para la mayoría de las personas el reflejo bajo demanda es suficiente.
¿Por qué squid-deb-proxy?
- Sin edición de archivos en el lado del cliente.
- Utilice zeroconf para que los clientes fueran "zero config"
- Use una solución proxy sólida existente en lugar de escribir una nueva herramienta.
- Fácil de configurar para un administrador típico de Linux.
Configuración del servidor
En la máquina que desea que actúe como servidor, instale la herramienta con:
sudo apt-get install squid-deb-proxy avahi-utils
Ahora inicie los bits de servicio:
sudo start squid-deb-proxy
Y los bits de avahi (no necesitas esto si estás en 12.04+):
sudo start squid-deb-proxy-avahi
Esto instalará el servidor proxy (que escucha el puerto 8000 por defecto) y las herramientas avahi necesarias para que el servidor se anuncie en su red a través de zeroconf.
Configuración de cliente
En cada una de las computadoras que desea usar el caché (los clientes y el servidor en sí mismo para que también pueda usar el caché), debe instalar la herramienta del lado del cliente que permite buscar el servidor automáticamente, haga clic aquí :
o a través de la línea de comando:
sudo apt-get install squid-deb-proxy-client
Opcional : para obtener la máxima eficacia, debe configurar una máquina para que descargue actualizaciones automáticamente, de modo que cuando sus otras máquinas lo necesiten, ya esté en el caché. Puede hacerlo yendo a Sistema-> Administración-> Administrador de actualizaciones, luego haga clic en el botón "Configuración ...", en la pestaña Actualizar configúrelo para descargar automáticamente todas las actualizaciones.
Almacenamiento en caché de fuentes de terceros
Por defecto, el caché está configurado para almacenar solo en caché los repositorios oficiales de Ubuntu. Para agregar más, debe agregarlos a la lista de fuentes en /etc/squid-deb-proxy/mirror-dstdomain.acl
. Aquí es donde puede agregar ppa.launchpad.net u otros servicios que pueda usar. Después de realizar cambios en este archivo, debe ejecutarlo sudo restart squid-deb-proxy
para que los cambios sean efectivos.
Configuración manual
Si por alguna razón no desea usar zeroconf (por razones de red o lo que sea), puede configurar manualmente un cliente para que use el proxy editando /etc/apt/apt.conf
y agregando la siguiente estrofa (reemplace 0.0.0.0 con la dirección IP del servidor ):
Acquire {
Retries "0";
HTTP { Proxy "http://0.0.0.0:8000"; };
};
Cortafuegos
En caso de que esté usando un firewall, Avahi usa 5353 sobre las direcciones 224.0.0.0/4 y requiere una regla similar a esta:
# 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
A continuación, debe abrir el puerto TCP 8000 para la comunicación real a través del proxy. Algo más o menos así:
-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT
Estas reglas son solo para ayudarte. Probablemente no coincidan con su configuración uno a uno. (es decir, interfaz incorrecta, direcciones IP de red privada incorrecta, etc.)
Confirmando que funciona
Primero siga el registro en el servidor para que pueda verlo: tail -F /var/log/squid-deb-proxy/access.log
y luego ejecute una actualización en cualquier máquina que tenga instalado el cliente; el registro debería comenzar a desplazarse con entradas como esta:
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
Lo que significa que los clientes ven el caché pero lo faltan, lo cual se espera ya que aún no ha almacenado nada en caché. Cada ejecución posterior debe aparecer como TCP_HIT. Puede encontrar los archivos de caché de calamar en sí mismos /var/cache/squid-deb-proxy
.
Usándolo
A partir de ese momento, todas las máquinas de su red comprobarán el caché antes de acceder a la red externa para buscar paquetes. Si hay nuevos paquetes disponibles, la primera máquina lo descargará de la red, después de eso, las solicitudes posteriores de ese paquete vendrán del servidor a los clientes.
QUE HACER
Todavía tenemos que habilitar apt para usar solo un caché anunciado en la red de forma predeterminada y de forma predeterminada, por lo que no necesita instalar la pieza del cliente. También tenemos que corregir el error de que las deb.