使用Netfilter进行数据包过滤

时间:2012-11-11 20:54:24

标签: filtering packet netfilter

我正在通过检测一些“坏”数据包来实现数据包过滤机制,并在路由器上的数据包过载时适当地丢弃它们。 我正在使用Linux网络堆栈并使用netfilter挂钩进行实现 在这方面,我想操纵数据包接收队列来“标记”数据包,并可能丢弃那些坏数据包。 如何操作数据包接收队列。基本上我想丢弃接收队列中的所有“坏”数据包。 会使用libnetfilter_queue api的帮助吗?

1 个答案:

答案 0 :(得分:1)

根据我的了解,目前没有(简单)方法丢弃已经由内核排队的数据包。当我需要类似于你的东西时,我已经选择了两种方法中的一种。

1)尽可能早地标记我的数据包(例如在表格taw然后PREROUTING中),然后在它们通过后面的表格时丢弃它们。要检测标记,请在DROP规则中添加“-m mark - mark YOUR MARK HERE”。

2)使用NFQUEUE目标将数据包发送到用户空间(或相关信息),然后在那里进行过滤。要处理用户空间中的数据包,我建议libnetfilter_queue