一、前言
iptables中有个非常有用的功能:log。通过log我们可以在内核特定位置抓取我们想要的数据包,之后由用户层的程序接收数据包的log并做相应处理。iptables中的log target主要有以下三种:
1、log
log target会把匹配到的数据包的部分信息输出到dmesg和syslogd中,之后用户可以直接用dmesg或者到log文件中查看,属于比较简单的log方式。这种方式至多记录数据包的头部信息。
2、ulog
ulog target会把匹配的数据包以netlink广播的形式广播到制定netlink组。用户可以自己编写neilink接收程序或者使用ulogd软件接收数据包。ulog功能要比log强大的多,可以获取数据包任意范围的数据。具体的ulog使用可以参见我写的另一篇文章:http://blog.youkuaiyun.com/l1902090/article/details/25911877
3、nflog
其实对于抓取数据包来讲,ulog已经够用了,但是可惜的是ip6tables(iptables的ipv6版本)不支持ulog,而仅仅支持nflog,所以要抓取ipv6数据包就只能用nflog了。nflog比ulog功能要更加强大,ulog有的功能nflog全都有。下面就详细介绍下如何利用nflog抓取ipv6数据包。