Ubuntu

容器重啟後,從外部到 docker 容器的 UDP 流量被丟棄

  • January 5, 2015

以下情況:我有一個硬體盒,Ubuntu 14.04LTS 作為 docker 1.4 的主機我在幾個容器中執行 ELK 堆棧。目前,logstash 容器僅公開埠 514 以收集 syslog 輸入。

在某些情況下,重新啟動容器後,syslog 流量不再轉發到容器。

‘iptables -nvL’ 表明在容器啟動期間沒有與應用到轉發鏈的規則匹配的流量。INPUT 鏈的流量計數器遠高於 FORWARD 鏈。

我注意到所有向世界公開 UDP 埠的容器上的這種行為,具有基於 TCP 服務的容器按預期工作。

重新啟動容器和 docker 服務沒有成功。

我主要是收集防火牆流量日誌,所以系統日誌流量是相當穩定的。我每秒收集大約 1,5k Syslog 陷阱。

我的解決方法是停止到主機的所有流量大約 10 秒(目前通過對上游路由器上的流量進行黑洞化)

在單個防火牆節點上停止 syslog 導出幾秒鐘後,來自該特定防火牆的流量按預期轉發到容器。但僅從這一個。

我認為這是 iptables 的問題。似乎 iptables 將轉發資訊記憶體了幾秒鐘,並且只要存在流量就會忽略任何新應用的規則。

我這裡沒有對 iptables 做額外的配置。一切都由碼頭工人完成。我沒有安裝 ufw、conntrackd 或任何東西。

任何建議如何解決這個問題?

最好的問候安德烈亞斯

看起來這與 conntrack 有關。它已被標記為 Docker 錯誤:https ://github.com/docker/docker/issues/8795 那裡列出了一種解決方法;我成功地讓我的一位主機再次使用conntrack -F.

引用自:https://serverfault.com/questions/653636