Não é possível adicionar interface docker0 à zona confiável com firewalld

1

No Centos 7 Eu quero que os contêineres do Docker consigam alcançar o host, então tentei adicionar o docker0 à zona confiável:

# firewall-cmd --permanent --zone=trusted --add-interface=docker0
The interface is under control of NetworkManager and already bound to 'trusted'
The interface is under control of NetworkManager, setting zone to 'trusted'.
success
# firewall-cmd --get-zone-of-interface=docker0
no zone

Isso costumava funcionar, mas não neste servidor por qualquer motivo. Eu também tentei firewall-cmd --reload , nada. Como se os comandos do firewalld fossem completamente ignorados. Essa mensagem do NetworkManager parece suspeita, é possível que o firewalld e o NetworkManager estejam em algum tipo de conflito?

Fora do desespero eu também tentei: nmcli connection modify docker0 connection.zone trusted que definiu corretamente o ZONE=trusted na configuração da interface, mas o firewalld ainda mostra que a interface não está na zona confiável.

O que está acontecendo aqui?

    
por cen 20.12.2016 / 13:08

2 respostas

2

Pelo que posso dizer, a menos que exista uma interface usando a zona confiável que é reconhecida diretamente pelo firewalld (ou seja, eth0), a zona confiável não está marcada como ativa. Para contornar isso, você pode definir explicitamente a regra iptables com o seguinte:

firewall-cmd --permanent --zone=trusted --add-interface=docker0
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 3 -i docker0 -j ACCEPT
firewall-cmd --reload
systemctl restart docker

O '3' aqui é onde, na sua cadeia INPUT, a regra será inserida e sua milhagem pode variar. Depois de executar esses comandos, consegui acessar as portas do host de um contêiner.

    
por 28.12.2016 / 21:31
0

Você deve adicionar a porta ou o serviço à trusted zone e recarregar a configuração do firewall.

Existe um exemplo:

Para permitir temporariamente a porta 443 / tcp na zona interna, digite:

systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=trusted --add-port=443/tcp
firewall-cmd --reload

Verifique:

firewall-cmd --get-active-zones

Permitindo que a porta permaneça com:

firewall-cmd --permanent --zone=trusted --add-port=443/tcp

O seguinte comando também deve ser retornado:

firewall-cmd --get-zone-of-interface=docker0
trusted 
    
por 20.12.2016 / 14:43