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

标签 linux kernel iptables netfilter

在我的应用程序中,我使用 NFQUEU 从 netfilter 获取数据包到用户空间,然后我将它与我的标准进行比较,并通过 nfq_set_verdict2 函数中的 NF_DROP 或 NF_ACCEPT 丢弃或接受数据包。我想在常规 iptables 日志中记录丢弃的数据包格式。我怎样才能做到这一点?

最佳答案

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

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 2/min:表示日志记录的最大平均匹配率。在此示例中,对于类似的数据包,它将日志记录限制为每分钟 2 个。您还可以指定 2/秒、2/分钟、2/小时、2/天。当您不想让相同丢弃数据包的重复消息弄乱您的日志消息时,这会很有帮助。

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

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

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

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

关于linux - 记录使用 nfq_set_verdict2(NF_DROP) 丢弃的数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046901/

相关文章:

linux - 从共享对象中抛出段错误的回调

operating-system - 内核/用户模式之间的转换是由硬件还是软件完成的?

c - INADDR_ANY 接口(interface)是否包括 VMware Network Adapter?

centos - IPTables 端口范围

ubuntu - 重置并删除 ubuntu 中现有的防火墙端口重定向规则

linux - 使用函数路径中较早的函数

c++ - Makefile c++11 支持

node.js - Dtrace 没有为 NodeJS 收集任何数据

linux - 为什么人们常说Linux是一个操作系统?

c - 一个发布者和多个订阅者的访问控制