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

У меня есть экземпляр сквида, работающий на моем сервере, который подключен с 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

перенаправить трафик от LAN и шлюза к сквиду, который имеет a url_rewrite_program настроенный, который затем перенаправляет запросы на .deb пакеты к 192.168.178.26:3142 где apt-cacher-ng слушает и служит, запрос (171 идентификатор apt-cacher-ng пользователь системы). Эта установка работает хорошо на шлюз и клиентов локальной сети под управлением Ubuntu, а также машины VirtualBox с NAT или мостовыми схема. Однако не для Докера, неважно, который --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)

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

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

4
задан 28 September 2017 в 04:40

0 ответов

Другие вопросы по тегам:

Похожие вопросы: