使用nfq_set_verdict2(NF_DROP)记录丢弃的数据包

时间:2012-06-15 08:09:17

标签: linux kernel iptables netfilter

在我的应用程序中,我使用NFQUEU将netfilter的数据包带到用户空间,然后我将其与我的条件进行比较,并通过nfq_set_verdict2函数中的NF_DROP或NF_ACCEPT删除或接受数据包。我想在常规iptables日志中记录丢弃的数据包格式。我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:1)

为了记录丢弃的数据包,创建一个新的链,它将丢弃它接收的每个数据包。将所有要删除的数据包重定向到新链,并在声明新链时使用日志语法

iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP

第3行:-m limit:这使用限制匹配模块。使用此方法,您可以使用-limit选项限制日志记录。

–limit 2/min:这表示记录的最大平均匹配率。在此示例中,对于类似的数据包,它将记录限制为每分钟2。您还可以指定2/second, 2/minute, 2/hour, 2/day。如果您不希望使用相同丢弃数据包的重复消息来混乱日志消息,这将非常有用。

-j LOG:这表示此数据包的目标是LOG。即写入日志文件。

–log-prefix “IPTables-Dropped:“您可以指定任何日志前缀,该前缀将附加到将写入/ var / log / messages文件的日志消息

–log-level 4这是标准的系统日志级别。 4是警告。您可以使用0到7范围内的数字.0是紧急情况,7是调试。

iptables -A LOGGING -j DROP:最后,删除所有来到LOGGING链的数据包。即现在它确实丢弃了传入的数据包。