Como obter imagens do Docker para usar o meu squid transparente / interceptado no host sem tocar nas imagens do Docker?

4

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.

    
por Karl Richter 28.09.2017 / 03:40

0 respostas