Bom dia a todos. Estou executando o servidor Ubuntu 14.04 e o Docker 1.8.1 e o UFW é meu front-end para gerenciar o iptables.
Eu preciso executar um aplicativo em um contêiner. Eu preciso do seguinte comportamento:
DOCKER_OPTS="--iptables=false"
em /etc/default/docker
.
Feito isso, o docker agora deve pular para definir a regra ANY iptables. Em seguida, fiz o seguinte no UFW para que os contêineres do Docker sejam conectados ao mundo externo:
DEFAULT_FORWARD_POLICY="ACCEPT"
em /etc/default/ufw
net.ipv4.ip_forward=1
e net.ipv4.conf.all.forwarding=1
em /etc/sysctl.conf
Também adicionei as seguintes linhas a /etc/ufw/before.rules
para ativar as funcionalidades do NAT:
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from private network through eth0, the Internet iface on master.
-A POSTROUTING -s 172.17.42.1/16 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
onde 172.17.42.1/16
é o intervalo de ip iface da janela de encaixe.
Após a reinicialização, executei sudo iptables -t nat -L -n
, o que me dá:
[....]
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
Então, como meu DEFAULT_OUTPUT_POLICY
está definido como DROP
e eu quis testar se a opção iptables=false
realmente funciona, eu corri:
docker run -it ubuntu:14.04 bash
root@56997560933c:/# apt-get update
mas ... o container pode baixar atualizações, mesmo que a porta 80 / tcp e 53 não estejam abertas para o exterior na máquina host.
Eu sei saber o que eu fiz de errado? o que mais eu tenho que fazer para evitar que um contêiner docker se conecte ao mundo externo usando uma porta que eu não permiti no meu iptables (usando UFW)?
OBRIGADO.
Nota para preenchimento:
Não há vestígios de DOCKER em nenhuma cadeia no meu iptables. Além disso, ao baixar atualizações, se eu executar netstat
, não há conexões ESTABLISHED fora ssh ... isso é ainda mais estranho ...
denunciado de esta pergunta de outro usuário , publicado no stackoverflow. Eu acho que este é o lugar certo.