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.
            			
De Guillaume Kulakowski le 7 mai 2020
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 ?