Eu tenho uma instância do squid em execução no meu servidor que está conectada a 192.168.178.0/24
a eth0
com 192.168.178.26
e serve como gateway para a LAN 192.168.179.0/24
a p18p1
com 192.168.179.1
. Eu uso
sudo iptables -t nat --append squid --match owner ! --uid-owner 171 -p tcp --dport 80 --jump DNAT --to 192.168.178.26:3128
sudo iptables -t nat --append PREROUTING -i p18p1 ! -s 192.168.179.1 -p tcp --dport 80 --jump DNAT --to 192.168.178.26:3128
sudo iptables --append FORWARD -s 192.168.179.0/24 -d 192.168.179.1 -i p18p1 -o p18p1 -p tcp --dport 3128 --jump ACCEPT
para redirecionar o tráfego da LAN e do gateway para o squid, que tem url_rewrite_program
configurado, que redireciona as solicitações de .deb
packages para 192.168.178.26:3142
, em que apt-cacher-ng
está atendendo e atendendo a solicitação (171 é o ID do o usuário do sistema apt-cacher-ng
). Esta configuração funciona bem para os clientes de gateway e de rede local que executam o Ubuntu, bem como máquinas VirtualBox com redes NAT ou bridge. No entanto, não para o Docker, independentemente do modo --network
especificado (imagino que se possa esperar que a virtualização seja diferente do VirtualBox).
Eu tentei
sudo iptables -t nat --append squid --match owner ! --uid-owner 171 -p tcp --dport 80 --jump DNAT --to 192.168.178.26:3128
sudo iptables -t nat --append PREROUTING -i docker0 ! -s 172.17.0.1 -p tcp --dport 80 --jump DNAT --to 192.168.178.26:3128
sudo iptables --append FORWARD -s 172.17.0.0/16 -d 172.17.0.1 -i docker0 -o docker0 -p tcp --dport 3128 --jump ACCEPT
mas isso não tem efeito (meu teste é sudo docker run -it --network="bridge" ubuntu:zesty
e dentro do docker eu corro apt-get update && apt-get install --yes gcc
)
Então, só para ter certeza: não quero rodar lula dentro do Docker. Não é uma má ideia, mas o squid está funcionando bem no host e eu não quero tocar neste sistema de trabalho. Alterar as imagens do Docker (suponho que eu poderia simplesmente adicionar algumas instruções iptables
à rotina de inicialização) não é uma opção porque elas ainda devem ser utilizáveis em serviços de IC remotos.
Estou usando o squid
SQUID_4_0_16-455-gc672a58b2 instalado a partir do código-fonte no Ubuntu 17.04.