如何在Docker容器中启用iptables的日志记录?

u6f*_*f6o 5 logging docker

我最近创建了一些Docker镜像,以便设置一个具有开放VPN和防火墙(iptables)支持的容器.

到目前为止,大多数事情都运行良好,但由于防火墙存在一些问题,我添加了一些更多的iptables规则来将丢弃的软件包记录到/ var/log/messages.我意识到,即使删除了某些内容,也无法在/ var/log下找到日志文件.

因此我的问题是:Alpine Linux如何处理(系统)日志记录以及如何具体检查iptables日志?

UPDATE

正如larsks所指出的那样,内核中已禁用默认日志记录,以防止日志泛滥导致DDOS攻击.

为了让日志工作,我安装了ulogd并按照这里的说明操作.

lar*_*sks 7

问题不是Alpine Linux.问题是你正在尝试从Docker容器内的iptables堆栈进行登录,并且据我所知,内核不处理由全局的网络命名空间中的iptables LOG目标生成的消息.故意抑制网络命名空间中的LOG消息,以防止容器对具有大量日志消息的主机执行DOS攻击.请参阅内核中的此提交,该提交明确禁用容器中的LOG支持.

最好的办法是查看防火墙规则中的数据包计数,以查看匹配的内容以及丢弃数据包的位置.你也可能对NFLOG目标和ulogd有一些好运.

  • 在较新的内核版本上,可以使用 `echo 1 > /proc/sys/net/netfilter/nf_log_all_netns` 启用 ns 日志记录 (8认同)
  • 这简直太愚蠢了.我无法通过为每个容器添加iptables规则来区分容器内的50k UID.他们为什么不选择这个呢? (2认同)