netfilter-libnetfilter_queue

Linux netfilter提供了数据的队列机制,而libnetfilter_queue为用户空间的接收、处理内核队列里缓冲的数据包的函数库。

Libnetfilter_queue需要libnfnetlink、libmnl的支持,内核需要nfnelink_queue子系统地支持。

Libnetfilter_queue提供的主要特性如下:

  1. 接收内核数据包缓冲队列里的数据包
  2. 决定数据包的处理方式或者修改数据包并将其重新注入到内核nfnetlib_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工具添加一条规则如下:

iptables -t filter -A OUTPUT -p icmp -j QUEUE

ping www.google.com 以root用户运行nf-queue如下

sudo ./nf-queue eth0 
 
 
netfilter-libnetfilter_queue_第1张图片
 
 
netfilter-libnetfilter_queue_第2张图片


你可能感兴趣的:(netfilter-libnetfilter_queue)