Docker, LibVirt, Iptables

Posted on lun. 07 janvier 2019 in adminsys

Je fais tourner pour mon plaisir et mon auto-formation un homelab sur lequel il y a des VMs KVM. Dernièrement, j'ai revu une partie de mon infrastructure est me suis tourné vers docker pour certains services.

J'aurais pu faire tourné ces services dockers dans leur propre VM, mais j'ai voulu les mettre directement en bar-metal.

Problème, docker vient foutre la grouille dans mes règles pare-feu iptables, rendant impossible l'accès au réseau à mes VM. Honnêtement, quand on ne sait pas, on se dit que la cohabitation docker+KVM va être compliquées. Mais en fait, non, il y a une solution simple.

Demander à docker de ne pas intervenir dans iptables

Première possibilité : demander à docker de ne pas toucher à iptables. ça se fait relativement simplement en ajoutant --iptables=false à la ligne de commande qui démarre le daemon docker. C'est plutôt bien documenté sie le blog fralef.me.

Ou ajouter une clef:valeur "iptables": "false" dans le fichier de configuration de docker /etc/docker/daemon.json.

Le problème maintenant, c'est que vous allez devoir gérer les redirection de ports, etc... normalement gérés par docker en sous-main vous-même. Cf la doc officielle chez docker.

Remettre le forward accept dans iptables

La meilleur solution, à mon avis est de laisse docker son affaire, il le fait pas trop mal, mais juste remettre une seule rêgle iptables qui règlera tout (merci Paul Gorman) :

iptables -I FORWARD -i vbr0 -o vbr0 -j ACCEPT

N'oubliez-pas de sauver cette règle dans votre configuration iptables-persistant et vous serez bon.