Я пытаюсь настроить правила iptables для контейнера Docker. Я использую nsenter для выполнения команды iptables внутри сетевого пространства имен контейнера:
# log access to port 8080
PID=$(docker inspect --format "{{.State.Pid}}" $ID)
/home/ubuntu/nsenter -n -t $PID iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 8080 -j LOG
Этот подход работает отлично, за исключением LOG
правил. Те, кажется, нигде не регистрируются. Обратите внимание, что то же правило, применяемое к хост-системе, работает и регистрируется в /var/log/kern.log
.
Где я могу найти вывод этих правил журнала? Является ли это известной проблемой / ограничением сетевых пространств имен?
networking
iptables
docker
containers
Фабиан Якобс
источник
источник
NFLOG
вместо этого, но это все еще не будет работатьОтветы:
Как упоминал Дональд, правила iptables LOG внутри контейнеров по умолчанию отключены.
В ядрах <= 4.10 это поведение не может быть скорректировано без исправления ядра. Как уже упоминалось, обходным путем является запуск ulogd в каждом контейнере и использование правил iptables NFLOG (или ULOG) вместо правил LOG.
Однако, начиная с ядра 4.11, работа
echo 1 > /proc/sys/net/netfilter/nf_log_all_netns
на хосте (вне контейнера) приведет к тому, что правила LOG iptables внутри всех контейнеров будут регистрироваться на хосте. (См. Это Kernel Commit.)источник
Выходные данные целей iptables LOG изнутри пространства имен сети подавляются конструкцией, чтобы не допустить, чтобы контейнеры выполняли DOS на своем хосте из-за переполнения буферов журналов.
совершить внесение изменений
соответствующая строка исходного кода в текущем ядре
источник
Мне удалось зарегистрировать правила iptables для контейнеров Docker, установив ulogd и заменив «-j LOG» на «-j ULOG». Соответствующие пакеты записываются в каталог / var / log / ulog
источник
Я видел пример (не связанный с ядром) использования
-v /dev/log:/dev/log
. Интересно, если вам нужно сделать что-то подобное ..Кроме того, я вижу, что вы используете nsenter, а не
docker exec
: какую версию Docker вы используете?источник