Come ottenere immagini Docker per usare il mio calamaro trasparente / intercettato sull'host senza toccare le immagini Docker?

4

Ho un'istanza squid in esecuzione sul mio server che è connessa a 192.168.178.0/24 a eth0 con 192.168.178.26 e funge da gateway per la LAN% da co_de% a 192.168.179.0/24 con p18p1 . Io 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

per reindirizzare il traffico dalla LAN e il gateway a calamaro che ha un 192.168.179.1 configurato che poi reindirizza le richieste di pacchetti url_rewrite_program a .deb dove 192.168.178.26:3142 è in ascolto e serve la richiesta (171 è l'ID di l'utente di sistema apt-cacher-ng ). Questa configurazione funziona bene per i client gateway e LAN che eseguono Ubuntu e macchine VirtualBox con reti NAT o bridge. Tuttavia non per Docker, indipendentemente dalla modalità apt-cacher-ng specificata (immagino che ci si possa aspettare dal momento che la virtualizzazione è diversa da VirtualBox).

Ho provato

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

ma ciò non ha alcun effetto (il mio test è --network e all'interno di docker eseguo sudo docker run -it --network="bridge" ubuntu:zesty )

Quindi, per essere sicuri: non voglio eseguire calamari all'interno di Docker. Non è una cattiva idea, ma il calamaro sta funzionando bene sull'host e non voglio toccare questo sistema funzionante. Cambiare le immagini del Docker (presumo che potrei semplicemente aggiungere alcune dichiarazioni apt-get update && apt-get install --yes gcc alla routine di avvio) non è un'opzione perché dovrebbero essere ancora utilizzabili su servizi CI remoti.

Sto usando iptables SQUID_4_0_16-455-gc672a58b2 installato dal sorgente su Ubuntu 17.04.

    
posta Karl Richter 28.09.2017 - 03:40

0 risposte

Leggi altre domande sui tag