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