在 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 存储在数据库中。
嗯...感谢@anx 的线索,我发现显然netfilter将数据发送到rsyslog有一些困难。
这可能与主机是一个没有自己的内核和管理程序中的cgroups的 LXC 容器有关......(Buff,我正在进入黑暗领域)......好吧......随便。
无论如何,如果有人碰巧有类似的问题,我设法通过将数据发送到ulogd来获取一些日志。这些是使基本示例正常工作的步骤:
我遇到了一个非常相似的问题:nftables 在网络命名空间中运行时没有记录。Julen 的解决方案对我不起作用。
由于我没有运行任何容器,我可以使用
更多详情: https ://blog.raymond.burkholder.net/index.php?/archives/787-nftables-network-namespace-logging.html