Linux netfilter提供了数据的队列机制,而libnetfilter_queue为用户空间的接收、处理内核队列里缓冲的数据包的函数库。
Libnetfilter_queue需要libnfnetlink、libmnl的支持,内核需要nfnelink_queue子系统地支持。
Libnetfilter_queue提供的主要特性如下:
可以使用git工具免费获得libnetfilter_queue的源码,地址为
https://git.netfilter.org/libnetfilter_queue/
netfilter官网上提供了libnetfilter_queue API的使用方式,参考其示例可以实现多种对网络数据包的处理操作。
example目录下提供了libnetfilter_queue的使用实例程序nf-queue.c,使用gcc编译之
gcc nf-queue.c -o nf-queue -lnetfilter_queue -lmnl
iptables -t filter -A OUTPUT -p icmp -j QUEUE
ping www.google.com 以root用户运行nf-queue如下
sudo ./nf-queue eth0