As seguintes alterações de configuração devem garantir o fluxo de tráfego entre o Docker e o host Shorewall. Testado no Shorewall 4.5.21.9, mas deve se aplicar às versões mais recentes:
/etc/shorewall/shorewall.conf
Verifique se o encaminhamento de IP está ativado (a maioria dos itens de configuração são Sim / Não, mas este é "Ligado"):
IP_FORWARDING=On
/ etc / shorewall / masq
Ative o mascaramento (NAT) para sua rede privada do Docker (se você usar uma rede diferente, por exemplo, iniciar a janela de encaixe com --bip=#.#.#.#/#
e, em seguida, alterá-la). Altere eth0
para qualquer interface na máquina host com conectividade externa:
#INTERFACE:DEST SOURCE
eth0 172.17.0.0/16
/ etc / shorewall / interfaces
Adicione uma entrada de interface para que o Shorewall saiba a qual interface a dock
zone está relacionada:
#ZONE INTERFACE OPTIONS
dock docker0
/ etc / shorewall / zones
Crie uma nova zona; note que docker
é muito longo e causará um erro "nome da zona inválida".
#ZONE INTERFACE
dock ipv4
/ etc / shorewall / policy
Você provavelmente deseja permitir que os contêineres do Docker conversem com a máquina host e na Internet, portanto, este é um bom ponto de partida:
#SOURCE DEST POLICY
# ...(other policies)...
dock all ACCEPT
# ...(other policies, catch-all)...
Você também pode precisar de uma política ACCEPT
parecida para o tráfego de fw
a dock
, se você ainda não a tiver aberto com fw
a all
.
Você pode aumentar ainda mais isso nos arquivos policy ou rules conforme necessário. Por exemplo, o acima não permite explicitamente que o tráfego externo alcance seus contêineres do Docker; verifique suas outras zonas / políticas / regras para isso.