Los siguientes cambios de configuración deberían garantizar el flujo de tráfico entre Docker y el host Shorewall. Probado en Shorewall 4.5.21.9 pero debería aplicarse a las versiones más recientes:
/etc/shorewall/shorewall.conf
Asegúrese de que el reenvío de IP esté habilitado (la mayoría de los elementos de configuración son Sí / No, pero este está "Encendido"):
IP_FORWARDING=On
/ etc / shorewall / masq
Habilite el enmascaramiento (NAT) para su red privada de Docker (si usa una red diferente, es decir, inicia Docker con --bip=#.#.#.#/#
, luego cambie en consecuencia). Cambie eth0
a cualquier interfaz en la máquina host con conectividad externa:
#INTERFACE:DEST SOURCE
eth0 172.17.0.0/16
/ etc / shorewall / interfaces
Agregue una entrada de interfaz para que Shorewall sepa con qué interfaz dock
se relaciona la zona:
#ZONE INTERFACE OPTIONS
dock docker0
/ etc / shorewall / zonas
Crea una nueva zona; tenga en cuenta que docker
es demasiado largo y provocará un error de "nombre de zona no válido".
#ZONE INTERFACE
dock ipv4
/ etc / shorewall / policy
Probablemente desee permitir que los contenedores Docker se comuniquen con la máquina host e Internet, por lo que este es un buen punto de partida:
#SOURCE DEST POLICY
# ...(other policies)...
dock all ACCEPT
# ...(other policies, catch-all)...
También puede ser necesario un semejante ACCEPT
política de tráfico desde fw
que dock
, si no ya lo abre con fw
aall
.
Puede ajustar esto aún más en los archivos de políticas o reglas según sea necesario. Por ejemplo, lo anterior no permite explícitamente que el tráfico externo llegue a sus contenedores Docker; revisa tus otras zonas / políticas / reglas para eso.
IP_FORWARDING=Yes
yIP_FORWARDING=True
trabajar también Lo tengo en varios enrutadores de producción, pero su respuesta es mucho más clara que la mía. Buen trabajo.