nftable 在系统日志中产生意外消息

nftable 在系统日志中产生意外消息

我有以下 nftables 规则: log prefix "[nftables] output denied1: " ip daddr 34.117.59.81 reject

在系统日志中我可以看到以下消息: [nftables] output denied1: IN= OUT=br0 SRC=10.10.10.1 DST=10.10.10.4 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=540 PROTO=ICMP TYPE=0 CODE=0 ID=2 SEQ=60848

现在我想知道这是怎么可能的?系统日志消息中有DST=10.10.10.4,但该规则不应用于该目标地址。

如果有人能解释这种行为,那就太酷了。

答案1

顺序很重要。在单个规则中,每个表达式/(非终端)语句按顺序进行评估:

  • 如果为真,则继续评估规则中的下一个表达式/语句
  • 如果为假,则评估结束

大多数非终结语句都是正确的(即:规则评估继续)。无论如何,语句的情况就是这样log:它总是允许规则中的评估继续。

log作为规则第一部分的语句将发挥其作用:生成日志。没有过滤器在其之前(或不在从具有此类过滤器的上一个规则调用的常规(又称用户)链中)一切将被记录。然后评估将继续到实际过滤器:ip daddr 34.117.59.81。如果此评估结果为真,reject则将完成,否则此规则中不会发生任何其他事情(如果有下一条规则则进行评估)。

解决方法是始终将log语句它应该记录的条件在终端语句之前(不允许进一步的表达式/语句):

ip daddr 34.117.59.81 log prefix "[nftables] output denied1: " reject

相关内容