我最近创建了一些 Docker 镜像,以便设置一个具有开放 VPN 和防火墙 (iptables) 支持的容器。
到目前为止,大多数事情都工作正常,但由于我的防火墙存在一些问题,我添加了更多 iptables 规则来将丢弃的包记录到 /var/log/messages。但我意识到,即使删除了某些内容,/var/log 下也找不到日志文件。
因此我的问题是:Alpine Linux 如何处理(系统)日志记录以及如何具体检查 iptables 日志?
更新
正如 larsks 所指出的,为了防止通过泛洪日志进行 DDOS 攻击,内核中已禁用默认日志记录。
为了使日志记录正常工作,我安装了 ulogd 并按照此处的说明进行操作。
正如 ens 在评论中指出的,这些天登录网络命名空间时,默认情况下默认禁用:
$ sysctl net.netfilter.nf_log_all_netns
net.netfilter.nf_log_all_netns = 0
您可以通过以下方式启用它:
$ sudo sysctl net.netfilter.nf_log_all_netns=1
net.netfilter.nf_log_all_netns = 1
要确认其有效,请启动
journalctl -ef
和:
$ docker run --privileged --rm -it alpine:3.20
/ # apk add iptables curl
/ # iptables -A INPUT -j LOG --log-prefix 'docker: filter: INPUT: '
/ # iptables -A OUTPUT -j LOG --log-prefix 'docker: filter: OUTPUT: '
/ # curl google.com
以“docker:filter:”为前缀的消息应该出现在日志中。