O tráfego UDP de fora para o contêiner docker é descartado após a reinicialização do contêiner

seguinte situação: eu tenho uma caixa de hardware com Ubuntu 14.04 LTS como host para docker 1.4 estou executando uma pilha ELK em vários contêineres. Curenntly o contêiner logstash está expondo apenas a porta 514 para coletar a entrada do syslog.

em algumas situações, depois de reiniciar o contêiner, o tráfego do syslog não é mais encaminhado para o contêiner.

'iptables-nvL' mostra que não há tráfego correspondente à regra aplicada à cadeia de encaminhamento durante o início do contêiner. O contador de tráfego da cadeia de entrada é consideravelmente maior do que na cadeia dianteira.

Noto esse comportamento em todos os contêineres que estão expondo portas UDP ao mundo, os contêineres com serviços baseados em TCP estão funcionando conforme o esperado.

reiniciar os contêineres e o serviço docker é sem sucesso.

Estou coletando principalmente trafficlogs de firewall, então o fluxo de tráfego do syslog é bastante constante. Estou coletando aproximadamente 1,5 k armadilhas Syslog por segundo.

Minha solução alternativa aqui é parar todo o tráfego para o host por cerca de 10 segundos (atualmente ocultando o tráfego em um roteador upstream)

Depois de interromper a exportação do syslog em um único nó de firewall por alguns segundos, o tráfego desse firewall específico é encaminhado para o contêiner conforme o esperado. Mas apenas deste único.

Eu acho que esta é uma questão de iptables. Parece que o iptables está armazenando em cache o forwarding-infrmation por alguns segundos e está ignorando quaisquer novas regras aplicadas, desde que o tráfego esteja presente.

Não fiz nenhuma configuração adicional no iptables aqui. Tudo é feito pelo docker. Eu não tenho ufw, conntrackd ou qualquer coisa instalada.

Algum sugere como resolver esse problema?

melhores regardsAndreas

Parece que isso está relacionado ao conntrack. Foi sinalizado como um bug do Docker: https://github.com/docker/docker/issues/8795 Há uma solução alternativa listada lá; consegui que um dos meus hosts trabalhasse novamente com um conntrack -F.

Eu também me deparei com esse problema, e isso tem me atormentado por meses. Eu coletei o envio de dados para Riemann (em um contêiner Docker) via UDP. Na reinicialização do contêiner, os dados do collectd não aparecem até que eu reinicie esse processo. Eu não tinha feito a conexão dos anos 10, mas isso se relaciona com o que estou vendo.

Qual é o seu sistema host docker?
Atualmente, estou tentando reproduzir esse problema sem o docker. Apenas com bridge-utils e iptables.