следующая ситуация: у меня есть аппаратный блок с Ubuntu 14.04LTS в качестве хоста для докера 1.4. Я запускаю стек ELK в нескольких контейнерах. В настоящее время контейнер logstash предоставляет только порт 514 для сбора входных данных системного журнала.
в некоторых ситуациях после перезапуска контейнера трафик системного журнала больше не перенаправляется в контейнер.
«iptables -nvL» показывает, что нет трафика, соответствующего правилу, примененному к цепочке пересылки во время запуска контейнера. Счетчик трафика в цепочке INPUT значительно выше, чем в цепочке FORWARD.
Я заметил такое поведение во всех контейнерах, которые открывают миру UDP-порты, контейнеры со службами на основе TCP работают должным образом.
перезапуск контейнеров и службы докеров безуспешен.
В основном я собираю журналы трафика брандмауэра, поэтому поток трафика системного журнала довольно постоянный. Я собираю около 1,5 тысяч ловушек системного журнала в секунду.
Мой обходной путь здесь - остановить весь трафик к хосту примерно на 10 секунд (в настоящее время путем блокирования трафика на восходящем маршрутизаторе)
После остановки экспорта системного журнала на одном узле межсетевого экрана на несколько секунд трафик от этого конкретного межсетевого экрана перенаправляется в контейнер, как и ожидалось. Но только из этого единственного.
Я думаю, что это проблема iptables. Похоже, что iptables кэширует информацию о пересылке в течение нескольких секунд и игнорирует любые новые применяемые правила, пока присутствует трафик.
Здесь я не выполнял никаких дополнительных настроек iptables. Все делает докер. У меня не установлены ufw, conntrackd или что-либо еще.
Кто-нибудь предлагает, как решить эту проблему?
с наилучшими пожеланиями, Андреас
Похоже, это связано с conntrack. Это было помечено как ошибка Docker: https://github.com/docker/docker/issues/8795 Там есть обходной путь; Один из моих хостов снова успешно работает с conntrack -F
.