Как получить изображения Docker для использования моего прозрачного / перехваченного кальмара на хосте, не касаясь изображений Docker?

4

У меня есть экземпляр squid, запущенный на моем сервере, который подключен к 192.168.178.0/24 через eth0 с 192.168.178.26 и служит в качестве шлюза для LAN 192.168.179.0/24 через p18p1 с 192.168.179.1 . Я использую

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

для перенаправления трафика из локальной сети и шлюза в squid, у которого есть url_rewrite_program , который затем перенаправляет запросы для .deb пакетов в 192.168.178.26:3142 , где apt-cacher-ng прослушивает и обслуживает запрос (171 - это идентификатор пользователя apt-cacher-ng ). Эта настройка хорошо работает для шлюзовых и локальных клиентов, работающих под управлением Ubuntu, а также машин VirtualBox с NAT или мостовыми сетями. Однако не для Docker, независимо от того, какой режим --network указан (думаю, можно ожидать, что, поскольку виртуализация отличается от VirtualBox).

Я пробовал

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

, но это не влияет (мой тест равен sudo docker run -it --network="bridge" ubuntu:zesty , а внутри докера я запускаю apt-get update && apt-get install --yes gcc )

Итак, просто чтобы убедиться: я не хочу запускать кальмара внутри Докера. Это неплохая идея, но кальмар отлично работает на хосте, и я не хочу касаться этой рабочей системы. Изменение изображений Docker (я полагаю, я мог бы просто добавить несколько операторов co_de% в процедуру запуска) не является вариантом, поскольку они все равно должны использоваться для удаленных служб CI.

Я использую iptables SQUID_4_0_16-455-gc672a58b2, установленный из источника на Ubuntu 17.04.

    
задан Karl Richter 28.09.2017 в 03:40
источник

0 ответов