![nftables - 如何仅记录特定类型的流量](https://linux22.com/image/762549/nftables%20-%20%E5%A6%82%E4%BD%95%E4%BB%85%E8%AE%B0%E5%BD%95%E7%89%B9%E5%AE%9A%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%B5%81%E9%87%8F.png)
我的 nftables.conf 文件如下所示。
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
# allow connecting to loopback interface
iifname lo accept log;
ct state established,related accept;
policy drop;
}
chain forward {
type filter hook forward priority 0;
policy drop;
}
chain output {
type filter hook output priority 0;
policy accept;
}
}
当我重新启动 nftables 服务时,我收到错误。显然这不是正确的做法。
仅记录与环回接口的连接的正确方法是什么以及它记录在哪个文件中?
编辑:
重新启动服务后,journalctl 中错误显示如下:
sij 23 14:40:29 dell nft[3998]: /etc/nftables.conf:10:21-23: Error: Statement after terminal statement has no effect
sij 23 14:40:29 dell nft[3998]: iifname lo accept log;
sij 23 14:40:29 dell nft[3998]: ~~~~~~ ^^^
sij 23 14:40:29 dell systemd[1]: nftables.service: Main process exited, code=exited, status=1/FAILURE
-- Subject: Unit process exited
答案1
实际上,在一条规则中采取多项行动时,顺序非常重要。
日志必须在接受之前,因此配置文件应该如下所示:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
# allow connecting to loopback interface
iifname lo log accept;
ct state established,related accept;
policy drop;
}
chain forward {
type filter hook forward priority 0;
policy drop;
}
chain output {
type filter hook output priority 0;
policy accept;
}
}
您还可以指定要记录的标志和将写入日志的前缀:
iifname lo log flags all prefix "[nftables] - loopback "