TL; DR Tratando de enmascarar todo, desde Docker
con firewalld
manualmente.
Acabo de empezar a usar firewalld
en mi máquina Debian 10, ya que quiero aprender cómo funciona.
Tengo Docker
instalado en el host y quiero administrar el firewall por mí mismo para aprender más sobre lo que hace Docker, qué reglas, etc. se aplica cuando se crean contenedores y cómo funciona firewalld.
Desde Debian 10 usos nftables
por defecto y utilizar algún tipo de iptables
envoltura para poder usar iptables
comandos para crear reglas de firewall. Docker
funciona bien cuando --iptables
está habilitado.
Sin embargo quiero usar firewalld
con nftables
backend y omita todo lo que tiene que ver con iptables
ya que es confuso. Así que en /etc/systemd/system/multi-user.target.wants/docker.service
He añadido --iptables=false
para que Docker no se meta con el firewall.Eliminé todas las reglas de Iptables, etc. y todo está bien hasta ahora.
Ahora a mi problema.
Todos los contenedores pueden acceder al host y entre sí, pero no a Internet.Como todos se ejecutan en 172.17.0.0/16 y mi host está en 192.168.9.0 / 24, necesito enmascarar el tráfico de los contenedores.
No puedo encontrar mucha información sobre la administración manual del firewall cuando uso Docker y, como soy nuevo en firewalld, estoy adivinando.
Mis interfaces son las siguientes:
eno1 (main interface)docker0 (docker bridge)veth******* (one for each container)
todos los veth
las interfaces están en el docker0
puente.
Así que pensé que podría crear una nueva zona llamada docker
y disfrazar todo, desde el docker0
puente.
~# firewall-cmd --permanent --new-zone=docker~# firewall-cmd --permanent --zone=docker --change-interface=docker0~# firewall-cmd --permanent --zone=docker --add-rich-rule='rule family="ipv4" source address=172.17.0.0/16 masquerade'~# firewall-cmd --reload
Enumerar las zonas activas me da esto:
~# firewall-cmd --get-active-zonesdocker interfaces: docker0public interfaces: eno1
Todavía no puedo acceder a Internet desde los contenedores.No tengo idea de si este es el camino correcto o lo que me estoy perdiendo.Cualquier ayuda es apreciada.