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 ?