我通过检测一些“坏”数据包并在路由器上的数据包过载时适当地丢弃它们来实现数据包过滤机制。我正在使用 Linux 网络堆栈并为我的实现使用 netfilter 挂钩在这方面,我想操纵数据包接收队列来“标记”数据包并可能丢弃那些坏数据包。如何操作数据包接收队列。基本上我想丢弃接收队列中的所有“坏”数据包。会使用 libnetfilter_queue api 的帮助吗?
问问题
520 次
1 回答
1
据我所知,目前没有(简单的)方法可以丢弃已经由内核排队的数据包。当我需要与您类似的东西时,我选择了两种方法之一。
1) 尽早标记我的数据包(例如在表 taw 中,然后在 PREROUTING 中),然后在它们通过以后的表时丢弃它们。为了检测标记,将“-m mark --mark YOUR MARK HERE”添加到您的 DROP 规则中。
2)使用NFQUEUE目标将数据包发送到用户空间(或相关信息),然后在那里进行过滤。要在用户空间处理数据包,我推荐libnetfilter_queue
于 2012-11-11T21:59:14.550 回答