Fiz algumas pesquisas sobre várias soluções e alguns desenvolvedores do Ubuntu criaram uma configuração de proxy (baseada no Squid) para 10.04 e posterior. É chamado squid-deb-proxy
. Requer apenas uma máquina para atuar como servidor. As grandes organizações geralmente executam seus próprios espelhos completos, mas para a maioria das pessoas o espelhamento sob demanda é suficiente.
Por que squid-deb-proxy?
- Não há edição de arquivos no lado do cliente.
- Use zeroconf para que os clientes tenham "zero config"
- Use uma solução de proxy sólida e existente em vez de escrever uma nova ferramenta.
- Fácil de configurar para um administrador Linux típico.
Configuração do servidor
Na máquina em que você deseja atuar como servidor, instale a ferramenta com:
sudo apt-get install squid-deb-proxy avahi-utils
Agora inicie os bits de serviço:
sudo start squid-deb-proxy
E os bits avahi (você não precisa disso se estiver no 12.04+):
sudo start squid-deb-proxy-avahi
Isso instalará o servidor proxy (que atende a porta 8000 por padrão) e as ferramentas avahi necessárias para que o servidor se anuncie na sua rede via zeroconf.
Configuração do cliente
Em cada um dos computadores em que você deseja usar o cache (os clientes e o próprio servidor para que ele também possa usar o cache), é necessário instalar a ferramenta do lado do cliente que vamos procurar automaticamente o servidor, clicando aqui :
ou via linha de comando:
sudo apt-get install squid-deb-proxy-client
Opcional : Para obter a máxima eficiência, você deve configurar uma máquina para baixar automaticamente as atualizações, para que, quando as outras máquinas precisem, ela já esteja no cache. Você pode fazer isso acessando Sistema-> Administração-> Gerenciador de Atualizações e, em seguida, clique no botão "Configurações ...", na guia Atualização, defina-o para baixar automaticamente todas as atualizações.
Armazenamento em cache de fontes de terceiros
Por padrão, o cache é configurado para armazenar em cache apenas repositórios oficiais do Ubuntu. Para adicionar mais, você precisa adicioná-los à lista de fontes em /etc/squid-deb-proxy/mirror-dstdomain.acl
. É aqui que você pode adicionar o ppa.launchpad.net ou outros serviços que você pode utilizar. Depois de fazer alterações neste arquivo, você deve executar sudo restart squid-deb-proxy
para que as alterações sejam efetivas.
Configuração manual
Se, por algum motivo, você não quiser usar o zeroconf (por motivos de rede ou qualquer outra coisa), poderá configurar manualmente um cliente para usar o proxy editando /etc/apt/apt.conf
e adicionando a seguinte estrofe (substitua 0.0.0.0 pelo endereço IP do servidor ):
Acquire {
Retries "0";
HTTP { Proxy "http://0.0.0.0:8000"; };
};
Firewall
Caso você esteja usando um firewall, o avahi usa 5353 nos endereços 224.0.0.0/4 e requer uma regra semelhante 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
Em seguida, você precisa abrir a porta TCP 8000 para a comunicação real por meio do proxy. Algo mais ou menos assim:
-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT
Essas regras são apenas para ajudá-lo. Eles provavelmente não corresponderão à sua configuração de um para um. (ou seja, interface incorreta, endereços IP de rede privada incorretos etc.)
Confirmando que funciona
Primeiro, finalize o log no servidor para que você possa vê-lo: tail -F /var/log/squid-deb-proxy/access.log
e execute uma atualização em qualquer máquina em que o cliente esteja instalado; o log deve começar a rolar com 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
O que significa que os clientes veem o cache, mas o perdem, o que é esperado, pois ele ainda não armazenou nada em cache. Cada execução subsequente deve aparecer como TCP_HIT. Você pode encontrar os arquivos de cache do squid em si /var/cache/squid-deb-proxy
.
Usando isso
A partir de então, todas as máquinas da sua rede verificarão o cache antes de acessar a rede externa para buscar pacotes. Se houver novos pacotes disponíveis, a primeira máquina fará o download da rede, depois que as solicitações subsequentes para esse pacote virão do servidor para os clientes.
FAÇAM
Ainda precisamos habilitar o apt para usar apenas um cache anunciado na rede e, por padrão, para que você não precise instalar a parte do cliente. Também precisamos corrigir o bug que o deb do 403 não está na lista de espelhos.
apt.conf
arquivo abaixo/etc/apt
. No entanto, há uma infinidade de arquivos com configurações em/etc/apt/apt.conf.d
. Eu imaginaria que agora deveríamos criar um arquivo lá?apt-cacher-ng
é a resposta para mim - não encontrei nenhum problema em ambientes pequenos (aproximadamente 20 clientes), então suponho que os problemas mencionados pelo @MagicFab foram resolvidos na versão atual (instalada no Ubuntu 10.04 e 10.10). Não há nenhuma configuração necessária para o servidor, e você só precisa instruir seus clientes para usar o servidor como seu proxy do gerenciador de pacotes.O servidor está completamente instalado e configurado instalando o
apt-cacher-ng
pacote.Os clientes precisam ser configurados configurando o proxy APT - adicionando o arquivo
/etc/apt/apt.conf.d/01proxy
contendo este (onde "your-apt-server" é o nome ou o endereço IP do seu servidor):Concluído - agora os pacotes serão armazenados em cache pelo servidor, independentemente das fontes que você usa ou da versão do sistema (por exemplo, um servidor 10.04 pode ser usado pelos clientes 9.10, 10.04 e 11.04, sem problemas ou conflitos).
Se você possui laptops que circulam entre redes, fica um pouco mais complexo - criei um script que define o proxy correto, dependendo do endereço de rede; o script é executável e no
/etc/network/if-up.d/apt-proxy
. Ao receber um endereço IPv4 de um servidor DHCP, o script definirá o servidor apt-cacher correto para a respectiva rede:fonte
squid-deb-proxy
esquid-deb-proxy-client
: zeroconf realmente significa configuração zero nos clientes, o que é extremamente útil para usuários nômades - e, caso um servidor não responda, o cliente padroniza o download direto.pbuilder
. Isso funcionou fora da caixa. Também parece que há suporte parazeroconf
(em 2016), mas eu ainda não consegui fazer isso funcionar do meu lado.Uma das soluções mais fáceis é configurar o apt-proxy.
Leia a documentação do ubuntu aqui: https://help.ubuntu.com/community/AptProxy
fonte
Eu prefiro configurar um espelho local usando o
debmirror
utilitário.Aqui está um exemplo de encantamento.
Eu corro isso cerca de uma vez por semana e o uso como base para estabelecer um ou mais "níveis de correção". Por exemplo...
Isso cria uma cópia vinculada da árvore (usa quase zero de espaço em disco) para a qual eu posso apontar cada um dos meus servidores locais no apt sources.list
fonte
Em redes pequenas (como em casa / pequeno escritório), usei o apt-cacher-ng com bons resultados. Não verifiquei as versões mais recentes, mas sei que ele precisa de uma configuração cuidadosa do servidor e dos clientes, e é mais adequado para clientes que receberão apenas atualizações da sua rede local.
Eu tentei a solução lulas à base acima, mas foi necessário aplicar várias solução alternativa e mais configuração do cliente do que eu gostaria, por isso não se sente ainda como ele poderia substituir apt-cacher-ng em pequenas configurações.
fonte
apt-cacher
não foi o mais fácil de configurar e não sobreviverá a um dist-upgrade.Instale
squid-deb-proxy
no servidor,squid-deb-proxy-client
nos clientes. Ele usa o zeroconf Avahi, portanto, nenhuma configuração é necessária.Se você está procurando armazenar em cache mais do que apenas debs, eu não me incomodaria com o Squid. O Apache Traffic Server é a próxima grande novidade. http://trafficserver.readthedocs.org
fonte