Los siguientes cambios de configuración deberían garantizar el flujo de tráfico entre Docker y el host de 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á "Activado"):
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=#.#.#.#/#
, a continuación, cambie en consecuencia). Cambio eth0
a cualquier interfaz en la máquina host con conectividad externa:
#INTERFACE:DEST SOURCEeth0 172.17.0.0/16
/etc/shorewall / interfaces
Agregue una entrada de interfaz para que Shorewall sepa qué interfaz dock
la zona se refiere a:
#ZONE INTERFACE OPTIONSdock docker0
/etc/shorewall/zones
Crear una nueva zona; nota, docker
es demasiado largo y provocará un error de "nombre de zona no válido".
#ZONE INTERFACEdock ipv4
/etc/shorewall/policy
Es probable que desee permitir que los contenedores de Docker se comuniquen con la máquina host y Internet, así que este es un buen punto de partida:
#SOURCE DEST POLICY# ...(other policies)...dock all ACCEPT# ...(other policies, catch-all)...
Es posible que también necesite un dispositivo similar ACCEPT
política para el tráfico de fw
a dock
, si aún no lo has abierto con fw
a all
.
Puede ajustar esto aún más en el directiva o regla archivos según sea necesario. Por ejemplo, lo anterior no permite explícitamente que el tráfico externo llegue a sus contenedores Docker; verifique sus otras zonas/políticas/reglas para eso.