在容器重启之后,从外部到docker容器的UDPstream量被丢弃

以下情况:我有一个Ubuntu 14.04LTS作为Docker 1.4主机的硬件盒我正在几个容器中运行一个ELK堆栈。 当然,logstash容器只公开514端口来收集系统日志input。

在某些情况下,重启容器后,系统日志stream量不再被转发到容器。

'iptables -nvL'表示在容器启动期间没有匹配应用于转发链的规则的stream量。 INPUT链的stream量计数器比FORWARD链要高得多。

我注意到在所有向全世界公开UDP端口的容器上的这种行为,具有基于TCP服务的容器按预期工作。

重新启动容器和docker服务没有成功。

我主要收集防火墙的stream量日志,所以系统日志的stream量是相当稳定的。 我每秒钟收集约1,5k个Syslog陷阱。

我的解决方法是停止所有到主机的stream量大约10秒(目前通过阻塞上游路由器的stream量)

在单个防火墙节点上停止syslog导出几秒钟后,来自此特定防火墙的stream量将按预期方式转发到容器。 但只能从这个单一的。

我认为这是iptables的一个问题。 看来,iptables正在caching转发infrmation几秒钟,并忽略任何新的应用规则,只要stream量存在。

我在这里没有做任何额外的iptablesconfiguration。 一切都由docker完成。 我没有ufw,conntrackd或任何安装。

任何build议如何解决这个问题?

最好的问候Andreas

看起来像这与conntrack有关。 它被标记为Docker的bug: https : //github.com/docker/docker/issues/8795有一个解决方法在那里列出; 我成功地让我的一个主持人再次用conntrack -F