OpenDPI

09/2014 update:

OpenDPI 早就停止维护更新了,ntop 下面的 nDPI 作为 OpenDPI 的超集,提供了更强大的功能,这里是他的 quick start。


OpenDPI 通过深度包检测来进行流量分类,由原先的 IPP2P 发展而来。可以检测常用的协议(实践下来有很多的协议书属于 unknow 的)。具体的效果如下图。



下载下面两个包,前者是 OpenDPI,后者是 iptables 的一个模块。如果需要对内网的访问做出限制,是需要安装后者的。

https://opendpi.googlecode.com/files/opendpi-1.3.0.tar.gz
https://opendpi.googlecode.com/files/opendpi-netfilter-wrapper-1.2.tar.gz

安装步骤在 README 以及 INSTALL 的中说的很清楚,先安装 opendpi-1.3.0,再安装 opendpi-netfilter-wrapper-1.2。
在安装完毕之后,执行 OpenDPI_demo 来分析包时,出现如下错误:

$ sudo OpenDPI_demo -f ./output
OpenDPI_demo: error while loading shared libraries: libopendpi.so.1: cannot open shared object file: No such file or directory

缺少库文件,做一个软链接就可以了:

$ sudo  ln -s /usr/local/lib/libopendpi.so.3 /lib/libopendpi.so.1

除了主要功能分析协议之外,最主要的还是针对不同的协议来进行处理,常见的 http,dns,vnc 等都支持。以封 bittorrent 为例:

$ sudo iptables -A FORWARD -m opendpi --bittorrent -j DROP



全部支持的协议以及 Manual 请点击这里
 

  • http://mindsfree.info mazhechao

    这个好啊,掐了p二p。

    • jaseywang

      这个能在 netfilter 上做一些策略,而且效果测试下来不是很明显。现在要查出是用 p2p 的,还是要综合使用各种方法,iftop 就是一种比较好的方式。

      • linuxabc

        其实xDPI的关键在于协议特征库的准确性和及时性,没有专业的公司付费开发的话,用处不大,特别是像国内的迅雷等协议,特征经常变。

  • Arthur George

    opendpi 特征库 和引擎是不能分开的?

  • Pingback: PF_RING 对网络抓包性能的提升不仅仅是 30% – 40% | Jasey Wang()