一个简单的安装,除了提到的包以外不用安装其它的包:
1 使用apt-get卸载libpcap和其它依赖的应用程序/库
2 安装SVN(获得最新的源代码)
Flex和bison(要求重新编译pf_ring使用的pcap)
Ethtool(如果没有预先安装,一些基本的NIC信息需要)
# sodu apt-get install subversion flex bison ethtool
3 使用SVN获得源代码
# svn co https://svn.ntop.org/svn/ntop/trunk/PF_RING/ PF_RING
【卸载本机网卡驱动】
4 使用ethtool检查当前网卡/驱动
# 改变eth0为你的以太网卡
# ethtool -i eth0
例子:
driver: e1000e
version: 1.0.2-k2
firmware-version: 0.4-3
bus-info: 0000:00:19.0
注意:一些流行的网卡的修改过的设备驱动可以在PF_RING/drivers下找到。
5 卸载以太网卡的驱动(它显示在上面命名删除的第一行)
# sodu rmmod e1000e
【编译安装kernel内核】
6 改变当前的目录到kernel
# cd PF_RING/kernel
7 编译源代码
# make
8 现在安装最新编译的源代码
# sodu make install
【编译安装用户态库】
9 改变工作目录到PF_RING/userland/lib
# cd ../userland/lib
10 再一次编译源代码
# make
11 安装库(这包括pfring.h)
Sudo make install
【注意在最新版本中没有出现pfring_e1000e_dna.c/h这两个文件】
12 一件奇怪的事情是我发现make install命令拷贝pfring.h到/usr/local/include,但是遗留下其它依赖的文件有:
pfring_e1000e_dna.c/h
13 虽然这向这些文件中的函数在许多程序中不要求,在pfring.h中也包含,我不希望mess up。因此我拷贝他们到/usr/local/include中。
# cp pfring_e1000e_dna.* /usr/local/include
【编译安装PF_RING可用的pcap库】
14 现在必须编译PF_RING使用pcap库,改变工作目录到userland/libpcap-1.0.1-ring
# cd ../libpcap
15 配置
# ./configure
16 编译源代码
# make
17 安装PF_RING使用的libpcap
# sodu make install
【安装PF_RING使用设备驱动,选择适合本机的】
18 现在需要安装设备驱动(PF_RING使用)。改变工作目录到/drivers///src。在我的情况下,它是drivers/intel/e1000e-1.0.33/src
# cd ../../drivers/intel/e1000e-1.0.33/src
19 编译源代码
# make
20 安装驱动
# sodu make install
【激活PF_RING使其加载到内核工作】
21 现在需要激活PF_RING,如果它没有被激活的话,你能使用lsmod检查pf_ring是否启动。改变工作目录到/lib/modules/<kernel-version>/kernel/net/pf_ring
使用uname -r获得内部额的版本。
# cd /lib/modules/`uname -r`/kernel/net/pf_ring
22 使能PF_RING(如果已经使能,你能使用sudo rmmod pf_ring卸载)
# sudo insmod pf_ring.ko transparent_mode=1
注意:
l transparent_mode=0(缺省)
利用标准的Linux接口接收报文,任何驱动都能使用该模式
l transparent_mode=0(普通和PF_RING使用的驱动都可以使用)
报文memcpy()到PF_RING,并且也到标准Linux路径
l transparent_mode=0(只对PF_RING使用的驱动有效)
报文只是memcpy()到PF_RING中,不到标准Linux路径(例如,tcpdump不能考到任何报文)。
越高的transparent_mod值,获得报文捕获的速度越快。
其它参数:
# min_num_slots 最小的ring slots数量(缺省为-4096)
# enable_tx_capture
设置1捕获输出的报文,设置0不捕获删除的报文,缺省RX+TX
# enable_ip_defrag
设置1使能IP反分片,只有rx(接收)的流量被分分片。
更多的传输模式可以在http://www.ntop.org/blog/?p=56中找到。
【是驱动开始工作】
23 现在使能你的驱动,进入到/lib/modules/<kern-ver>/kernel/drivers/net/e1000e
# cd /lib/modules/<kernel-ver>/kernel/drivers/net/e1000e
24 使能驱动
# sodu insmod e1000e.ko
25 现在你可让你的PF_RING应用程序开始工作了
注意:你必须重新编译如何应用程序,例如tcpdump(修改过的),网络管理器等。Google下这写编译方法。
概括来说PF_RING是即简单又有力量的技术,能够使开发者在少量时间内创建告诉传输监控和应用。
检查PF_RING设备配置
当PF_RING激活,会创建一个新的入口/proc/net/pf_ring。
# cat /proc/net/pf_ring/info
# cat /proc/net/pf_ring/plugins_info
链接PF_RING使能的应用程序必须有libpfring和libpcap库,也需要依赖于-lpthread库。
使用相关命令来查看抓包情况(userland/examples)
Dmesg或者/var/log/messages可以看到PF_RING的信息。