小编And*_*fer的帖子

容器重启后,从外部到 docker 容器的 UDP 流量被丢弃

以下情况:我有一个带有 Ubuntu 14.04LTS 的硬件盒作为 docker 1.4 的主机我在多个容器中运行一个 ELK 堆栈。目前,logstash 容器仅暴露端口 514 来收集系统日志输入。

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

'iptables -nvL' 显示在容器启动期间没有流量匹配应用于转发链的规则。INPUT 链的流量计数器明显高于 FORWARD 链。

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

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

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

我的解决方法是将所有到主机的流量停止大约 10 秒(目前通过将上游路由器上的流量黑洞化)

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

我认为这是iptables的问题。看来 iptables 将转发信息缓存了几秒钟,并且只要存在流量就会忽略任何新的应用规则。

我这里没有对 iptables 做额外的配置。一切都由 docker 完成。我没有安装 ufw、conntrackd 或任何东西。

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

最好的问候安德烈亚斯

ubuntu iptables syslog docker

5
推荐指数
1
解决办法
5370
查看次数

标签 统计

docker ×1

iptables ×1

syslog ×1

ubuntu ×1