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.
apt.conf
archivo debajo/etc/apt
. Sin embargo, hay una gran cantidad de archivos con configuraciones debajo/etc/apt/apt.conf.d
. Me imagino que ahora deberíamos crear un archivo allí.apt-cacher-ng
es la respuesta para mí: no he encontrado ningún problema en entornos pequeños (aproximadamente 20 clientes), así que supongo que los problemas que menciona @MagicFab se resolvieron en la versión actual (instalada en Ubuntu 10.04 y 10.10). No hay configuración necesaria para el servidor, y solo necesita indicar a sus clientes que usen el servidor como su proxy de administrador de paquetes.El servidor está completamente instalado y configurado al instalar el
apt-cacher-ng
paquete.Los clientes deben configurarse configurando el proxy APT, agregando el archivo que
/etc/apt/apt.conf.d/01proxy
contiene esto (donde "your-apt-server" es el nombre o la dirección IP de su servidor):Listo : ahora los paquetes serán almacenados en caché por el servidor, sin importar qué fuentes use o qué versión de sistema tenga (por ejemplo, un servidor 10.04 puede ser usado por clientes 9.10,10.04 y 11.04 sin ningún problema o conflicto).
Si tiene una (s) computadora (s) portátil (s) cliente (s) que deambulan entre redes, se vuelve un poco más compleja: he creado un script que establece el proxy correcto según la dirección de red; el script es ejecutable y en
/etc/network/if-up.d/apt-proxy
. Al recibir una dirección IPv4 de un servidor DHCP, el script establecerá el servidor apt-cacher adecuado para la red respectiva:fuente
squid-deb-proxy
ysquid-deb-proxy-client
: zeroconf en realidad significa cero configuración en los clientes, lo cual es extremadamente útil para los usuarios nómadas, y en caso de que un servidor no responda, el cliente se predetermina a la descarga directa.pbuilder
. Esto funcionó de la caja. También parece que hay soporte parazeroconf
(en 2016), pero no pude (todavía) hacer que eso funcione de mi parte.Una de las soluciones más fáciles es configurar apt-proxy.
Lea la documentación de ubuntu aquí: https://help.ubuntu.com/community/AptProxy
fuente
Prefiero configurar un espejo local utilizando la
debmirror
utilidad.Aquí hay un ejemplo de encantamiento.
Ejecuto esto aproximadamente una vez por semana, y lo uso como base para establecer uno o más "niveles de parche". Por ejemplo...
Esto crea una copia vinculada del árbol (usa casi cero espacio en disco) a la que puedo apuntar cada uno de mis servidores locales en apt sources.list
fuente
En redes pequeñas (como el hogar / pequeña oficina), he usado apt-cacher-ng con buenos resultados. No he comprobado las últimas versiones, pero sé que necesita una configuración cuidadosa tanto del servidor como de los clientes, y es más adecuado para clientes que solo recibirán actualizaciones de su red local.
Probé la solución a base de calamar anterior pero requería la aplicación de varios solución alternativa y más de configuración del cliente de lo que me gusta, por lo que no se siente todavía como que podría sustituir a apt-cacher-ng en pequeñas configuraciones.
fuente
apt-cacher
no fue el más fácil de configurar y no sobrevivirá a una actualización de dist.Instalar
squid-deb-proxy
en el servidor,squid-deb-proxy-client
en los clientes. Utiliza zeroconf Avahi, por lo que no es necesaria ninguna configuración.Si está buscando almacenar en caché más que solo debs, no me molestaría con Squid. Apache Traffic Server es la próxima gran cosa. http://trafficserver.readthedocs.org
fuente