nftables 不会写入系统日志

nftables 不会写入系统日志

在 LXC 容器上运行 Debian 10:

# apt-get -y install nftables
# nft --version
nftables v0.7 (Scrooge McDuck)
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input
# nft add rule inet filter input log
# nft list ruleset
table inet filter { 
    chain input {
        log
    }
}

然后,我去/var/log/syslog,创建一些网络流量,并且......我没有看到来自nftables一点儿也不。

我也尝试过(但没有成功)以这种方式定义规则:

nft add rule inet filter input log prefix \"FINDME \" counter

更多测试:

# logger test && tail -1 /var/log/syslog
Aug 18 20:39:53 my-server root: test
# echo "test2" | systemd-cat && tail -1 /var/log/syslog
Aug 18 20:40:52 my-server cat[1907]: test2
# uname -v
 #1 SMP PVE 5.4.34-2 (Thu, 07 May 2020 10:02:02 +0200)

为什么是nftables没有写信给我系统日志

附加问题:当匹配发生时,是否有任何方法可以触发操作?例如将阻止的 IP 存储在数据库中。

答案1

嗯...感谢@anx 的线索,我明白了网络过滤器发送数据有些困难rsyslog

这可能与主机是没有自己内核的 LXC 容器有关,并且cgroups在虚拟机管理程序中......(Buff,我进入了黑暗领域)......好吧......随便吧。

无论如何,如果有人碰巧遇到类似的问题,我设法通过将数据发送到ulogd。这些是使基本示例运行的步骤:

# apt-get -y install nftables ulogd2
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input '{ type filter hook input priority 0 ; }'
# nft add rule inet filter input log prefix "FINDME" group 0 accept
# nft list ruleset
table inet filter {
    chain input {
        type filter hook input priority 0; policy accept;
        log prefix "FINDME" group 0 accept
    }
}
# tail -f /var/log/ulog/syslogemu.log

答案2

我遇到了一个非常相似的问题:nftables 在网络命名空间内运行时没有记录。Julen 的解决方案对我不起作用。

由于我没有运行任何容器,我可以使用以下方法解决我的问题

echo 1 >/proc/sys/net/netfilter/nf_log_all_netns

更多细节: https://blog.raymond.burkholder.net/index.php?/archives/787-n​​ftables-network-namespace-logging.html

相关内容