MENU

Docker 容器内部开启Iptables日志记录

October 30, 2022 • Read: 726 • 技术杂谈

最近没事在折腾Docker,其中一个项目需要在容器内部获取 iptables 日志,然后使用额外的程序进行分析,结果折腾半天容器内部始终拿不到日志文件(一般没意外的话会在/var/log/messages

于是去外网转了一圈回来终于发现了问题所在,在13年内核的一次更新中提到:Disabled from containers until syslog ns is supported

详情见:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=69b34fb996b2eee3970548cf6eb516d3ecb5eeed

幸运的是,自内核版本kernel 4.11之后,这个更新为了一个可选项,默认关闭。

详情见:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=2851940ffee313e0ff12540a8e11a8c54dea9c65

所以解决办法就是在宿主机执行:


echo "net.netfilter.nf_log_all_netns = 1">> /etc/sysctl.conf
sysctl -p

注意:Linux内核官方之所以改为默认关闭是基于安全策略的考量,防止log被滥用,所以你如果强制开启,一定要多注意。

参考文章

Last Modified: November 24, 2022