firewalld VS docker

Fedora 32

Avec l’arrivée de Fedora 32, il y a eu des changements sur Firewalld. En effet, ce dernier passe maintenant par nftables. Le problème, comme évoqué dans le change, c’est qu’il y a des soucis avec Docker.

Depuis ma migration sous Fedora 32, plus moyen de builder des containers car je n’arrive pas à atteindre les dépôts d’Alpine Linux:

WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz: temporary error (try again later)

Après avoir validé que le fautif était bien Firewalld, en le désactivant, il faut maintenant donner accès à internet à mes containers. Pour cela listons d’abord mes networks:

docker network ls                           
NETWORK ID          NAME                    DRIVER              SCOPE
870340d27b56        bridge                  bridge              local
f76fdca0de0b        docker-config_default   bridge              local
84c5b4b3f98c        host                    host                local
b5ce54a9e4d3        none                    null                local

On se rend compte qu’il y a un network utilisé par ma configuration docker-compose (docker-config_default) et le network classique de Docker (bridge).

Ensuite identifions les interface utilisées:

nmcli d
DEVICE           TYPE      STATE       CONNECTION      
wlp2s0           wifi      connecté    starfleet       
br-f76fdca0de0b  bridge    connecté    br-f76fdca0de0b 
docker0          bridge    connecté    docker0         
virbr0           bridge    connecté    virbr0          
p2p-dev-wlp2s0   wifi-p2p  déconnecté  --              
vethaecb7f2      ethernet  non-géré    --              
vethd8ff84a      ethernet  non-géré    --              
vethef11a40      ethernet  non-géré    --              
lo               loopback  non-géré    --              
virbr0-nic       tun       non-géré    --  

On voit qu’en plus de la classique interface docker0, il y a une interface appelée br-f76fdca0de0b. C’est cette dernière interface qui est utilisée par docker-compose. Reste à leur donner les accès :

sudo firewall-cmd --permanent --zone=trusted --add-interface=br-f76fdca0de0b
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --reload
sudo service docker restart

Le change évoque un package docker-firewalld, mais jusqu’à présent je n’en ai trouvé aucune trace et mon fix fait le job.

Commentaires

Fred

De Fred le 7 mai 2020

Bonjour,

J'ai eu acces a une config Raspberry Pi 4 chez Ikoula en IPV6 en preview et Docker generait des erreurs: tres lent et des timeouts pendant le build d'images. Je n'ai pas reussi a resoudre le probleme. On pense que s'etait du a IPV6, mais c'etait peut etre un probleme de firewall... Aurais-tu une idee?

https://www.framboise314.fr/votre-raspberry-pi-4-heberge-en-datacenter-par-ikoula/
https://www.ikoula.com/fr/raspberry-pi-4-micro-serveur

Guillaume Kulakowski

Bonjour,

un firewall c'est soit ça passe soit ça casse. Tu es sûr que le problème provient du réseau ? Tu as bien configuré tes DNS dans Docker ?

Nico

De Nico le 8 mai 2020

Le fix devrait arriver. https://github.com/moby/libnetwork/pull/2548
De mon coté en ajoutant les interfaces de Docker dans la zone "trusted" je retrouve mes connections, mais les regles de blocage sont skiped. Du coup c'est comme si je n'avais pas de firewall...

Guillaume Kulakowski

Après c'est mon portable. Mais sur un serveur serait effectivement plus problématique.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Réseaux sociaux

%d blogueurs aiment cette page :