iptables do Docker = opção falsa parece não ter o comportamento desejado

1

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:

  • meu aplicativo precisa se conectar a outra máquina na porta, por exemplo, 8888 / tcp.
  • Eu não quero que o docker gerencie meus iptables, portanto, eu defini 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:

  • definir DEFAULT_FORWARD_POLICY="ACCEPT" em /etc/default/ufw
  • defina 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.

    
por Jhon Zunda 31.08.2015 / 11:43

0 respostas