Docker bridge e nginx permitiram ip

4

Temos uma ponte docker contendo vários contêineres docker. A janela de encaixe principal é um servidor nginx que atua como host da Web e encaminha todos os dados para os outros contêineres.

Agora, um requisito é que as conexões sejam limitadas a apenas uma lista especificada de endereços IP. Para fazer isso eu editei o arquivo do servidor nginx:

server {
        allow 127.0.0.0/8;
        deny all;
        ...

Que deve permitir que o loopback 127.0.0.1 se conecte.

Isso, no entanto, falha, e olhando para o access.log mostra porque: Todas as linhas começam com:

    172.25.0.1 - - [10/Apr/2018:08:22:46 +0000] "GET

172.25.0.1 é o gateway de rede da ponte docker; assim, a janela de encaixe "esquece" os ips externos e não posso mais filtrar isso.

Como posso filtrar os ips? Ou envie os ips de origem para a janela de encaixe?

    
por paul23 10.04.2018 / 11:02

1 resposta

1

Isso é esperado e é a maneira como funciona a rede do docker. Por padrão, você acaba com algo parecido com uma rede virtual no seu host do docker. Conexões encaminhadas através do exterior virão para cada contêiner via docker0 e NAT.

Para superar isso, a resposta simples é usar a rede do host no contêiner nginx. ou seja, --network host opção para o comando docker run . Veja: rede de host

Além disso, leia a documentação da rede de encaixe. É explicado mais detalhadamente lá. link

    
por 16.10.2018 / 00:24