免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 239742 | 回复: 592
打印 上一主题 下一主题

[网络管理] IPP2P模块修改版,最新0.99.16 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-16 20:42 |只看该作者 |倒序浏览
由于原版的ipp2p模块停留在0.8.2版,本人根据工作需要对ipp2p模块进行了修改和升级。

1。修正部分BT和电驴的过滤特征码
2。添加PPLive/PPStream/UUSee/QQLive/沸点网络电视/POCO/QVOD的过滤特征码,添加选项--pp,集合在--ipp2p选项中
3。添加Vagaa的过滤代码在--edk中,集合在--ipp2p选项中
4。添加迅雷/QQ超级旋风/百度下吧的过滤特征码,添加选项--xunlei,未集合在--ipp2p选项中

特别说明:本模块过滤迅雷仅仅是过滤了多点下载(查找候选资源),迅雷还是可以使用原始资源进行单点下载的。如果连单点下载都屏蔽的话,所有的下载软件就都不能用了!
目前迅雷的查询是发送到80端口,并具有http报头,所以如果有代理服务器的话,请做相应处理。


关于误报的问题:
由于7层协议并没有公开的标准遵行,我也仅仅是按照数据流的分析来定义关键字和结构,并且我的测试条件有限,所以无法保证100%无误。
望大家谅解,并谨慎使用。
如果有发现影响了其他正常的通信数据,请回帖告知,谢!


  1. 0.99.16版
  2. 过滤特征码没有变化,没有修正mysql的问题。
  3. 添加nf_conntrack支持,仅匹配每条连接的前15个数据包,提高过滤速度。
  4. 没有深度测试,欢迎小白鼠。
  5. 注意:需要在配置内核时选中“CONFIG_NF_CONNTRACK_MARK”
复制代码

  1. 0.99.15版***建议使用***
  2. 目前发现于Mysql的协议冲突,因我现在没有环境调试,所以有mysql使用需求的用户请把ipt_ipp2p.c中search_pp函数中/* message UUSee */到/* QQLive */之间的行都注释掉。
  3. 或者使用最下面的文件覆盖模块目录下的源文件
复制代码

  1. 0.99.14版
  2. ChangeLog

  3. 应88djy朋友要求,添加QVOD过滤,集成在--pp选项中。
复制代码

  1. 0.99.13版
  2. ChangeLog

  3. 修正对于跑跑卡丁车的误匹配。
  4. 增强对于VAGAA的过滤
复制代码

  1. 0.99.12版
  2. ChangeLog

  3. 增加Vagaa的过滤,POCO的过滤
复制代码

  1. 0.99.11版
  2. ChangeLog

  3. 增加对于百度下吧和沸点网络电视的过滤。
复制代码

  1. 0.99.10版
  2. ChangeLog

  3. 修订PPStream/PPLive/QQLive/UUSee的过滤代码,增加对新版本的支持。
  4. 减少误报。
复制代码

  1. 0.99.9版
  2. ChangeLog

  3. 修改了迅雷的过滤代码。
  4. 应该可以对老版本的迅雷有效了,我实在是找不到那么老的迅雷来测试了,大家用用看吧~~
  5. 另外,添加了一个byte的判断,过滤更严格~~
复制代码

  1. 0.99.8版
  2. ChangeLog

  3. 无任何功能改变。

  4. 仅仅是统一了代码风格,对代码进行了整理和清理。
  5. 还没有发现重写代码的必要。
复制代码

  1. 0.99.7版
  2. ChangeLog

  3. 添加对于新版迅雷5.7.5.421的支持
复制代码

  1. 0.99.6-r2版
  2. ChangeLog

  3. 增加对于PPStream“我的网络受到运营商限制”的过滤
复制代码

  1. 0.99.6-r1版
  2. ChangeLog

  3. 添加对于某些老版迅雷的过滤代码
复制代码

:wink: 我自己测试时用的是最新版:wink:

  1. 0.99.6版
  2. ChangeLog

  3. 增加对于QQ超级旋风的过滤,添加在--xunlei选项中。(使用--xunlei选项同时针对迅雷和QQ超级旋风)
复制代码

  1. 0.99.5版
  2. ChangeLog

  3. 增加对于迅雷的过滤,包括web迅雷。
复制代码


  1. IPP2P v0.99.6-r1 options:
  2. --ipp2p        Grab all known p2p packets
  3. --edk          [TCP&UDP]       All known eDonkey/eMule/Overnet packets
  4. --dc           [TCP]           All known Direct Connect packets
  5. --kazaa        [TCP&UDP]       All known KaZaA packets
  6. --gnu          [TCP&UDP]       All known Gnutella packets
  7. --bit          [TCP&UDP]       All known BitTorrent packets
  8. --apple        [TCP]           All known AppleJuice packets
  9. --winmx        [TCP]           All known WinMX
  10. --soul         [TCP]           All known SoulSeek
  11. --ares         [TCP]           All known Ares
  12. --pp           [TCP&UDP]       All known PPLive/PPStream/UUSee/QQLive packets
  13. --xunlei       [TCP]           All known xunlei/QQCyclone packets
  14. EXPERIMENTAL protocols (please send feedback to: [email]ipp2p@ipp2p.org[/email]) :
  15. --mute         [TCP]           All known Mute packets
  16. --waste        [TCP]           All known Waste packets
  17. --xdcc         [TCP]           All known XDCC packets (only xdcc login)

  18. DEBUG SUPPPORT, use only if you know why
  19. --debug                Generate kernel debug output, THIS WILL SLOW DOWN THE FILTER

  20. Note that the follwing options will have the same meaning:
  21. '--ipp2p' is equal to '--edk --dc --kazaa --gnu --bit --apple --winmx --soul --ares --pp'
复制代码


编译说明
1.解压缩.tar.gz文件后,进入源码目录。
2.修改Makefile文件,主要是其中的KERNEL_SRC和IPTABLES_SRC,使他们指向具体的内核源代码目录和iptables的源代码目录。(内核必须要设置正确,因为通常编译的内核都不会打开“Module versioning support”选项;但是iptables的目录不是必须的,只要iptables.h文件在系统的include目录(通常是/usr/include)中就可以)
3.如果提示编译libipt_ipp2p.so有错误,请将Makefile中的“$(CC) -shared -o libipt_ipp2p.so libipt_ipp2p.o”修改为“ld -shared -o libipt_ipp2p.so libipt_ipp2p.o”。(1.3.5版的iptables使用ld没问题;但是1.3.8版的使用ld就不行了,只能使用gcc)
4.将编译好的libipt_ipp2p.so复制到iptables的模块目录下(通常为/lib/iptables);将ipt_ipp2p.ko复制到内核的netfilter目录下(通常为/lib/modules/内核名称/kernel/net/ipv4/netfilter)
5.运行depmod -a,更新内核模块的依赖关系。
6.停止iptables服务,rmmod ipt_ipp2p,启动iptables服务。

[ 本帖最后由 ShadowStar 于 2008-3-5 22:26 编辑 ]

ipp2p-0.99.5.tar.gz

19.42 KB, 下载次数: 1143

ipp2p-0.99.4.tar.gz

19.25 KB, 下载次数: 2146

ipp2p-0.99.6.tar.gz

19.49 KB, 下载次数: 406

ipp2p-0.99.6-r1.tar.gz

19.5 KB, 下载次数: 349

ipp2p-0.99.6-r2.tar.gz

19.58 KB, 下载次数: 344

ipp2p-0.99.7.tar.gz

19.59 KB, 下载次数: 424

ipp2p-0.99.8.tar.gz

19.1 KB, 下载次数: 342

ipp2p-0.99.9.tar.gz

19.11 KB, 下载次数: 338

ipp2p-0.99.10.tar.gz

19.11 KB, 下载次数: 2058

ipp2p-0.99.11.tar.gz

19.33 KB, 下载次数: 386

ipp2p-0.99.12.tar.gz

19.63 KB, 下载次数: 445

ipp2p-0.99.13.tar.gz

19.73 KB, 下载次数: 659

ipp2p-0.99.14.tar.gz

19.85 KB, 下载次数: 557

ipp2p-0.99.15.tar.gz

19.78 KB, 下载次数: 1672

ipt_ipp2p.c.gz

7.57 KB, 下载次数: 715

ipp2p-0.99.16.tar.gz

20.32 KB, 下载次数: 3371

论坛徽章:
0
2 [报告]
发表于 2007-11-16 20:52 |只看该作者

关于emule的问题

emule在升级到0.48a后,无法被ipp2p模块过滤的原因。

初步怀疑是由于emule加密了tcp的握手信息,导致无法通过特征码过滤。

目前还没有太好的解决办法。

我正在看emule的src,但是很慢,因为我不会C++,边看边学。

如果确实是由于加密了Client——Client的握手信息,那么只能通过在ipp2p模块中进行解密,然后再进行特征过滤,但是在流量较大的网络上,性能肯定会严重下降,延迟也会加大,反而会影响整个网络的状况(因为防火墙无法判断数据包是不是emule的,所以要对所有的流经数据包进行解密)。

目前看来很麻烦,不好处理。

如果有朋友有好的思路,或是知道emule的信息,可以回帖或短消息告知,不胜感谢。

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
3 [报告]
发表于 2007-11-17 01:14 |只看该作者
感谢楼主!
对LINUX版本有要求吗?

论坛徽章:
0
4 [报告]
发表于 2007-11-17 10:29 |只看该作者
好的,再顶一下吧,这段时间刚好想重新编译下内核和iptables。
迅雷是个大问题。


看你的意思0.99.4版比较好些?

[ 本帖最后由 fuleru 于 2007-12-5 09:47 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-11-17 10:46 |只看该作者
0.99.4版不支持迅雷。

论坛徽章:
0
6 [报告]
发表于 2007-11-17 18:28 |只看该作者
楼主,偶太佩服你了,我准备测试一下。真好。

论坛徽章:
0
7 [报告]
发表于 2007-11-17 18:49 |只看该作者
我刚刚升到0.99.5然后用迅雷下载电影的截图。

xunlei.JPG (26.46 KB, 下载次数: 313)

xunlei.JPG

论坛徽章:
0
8 [报告]
发表于 2007-11-17 20:50 |只看该作者
迅雷的filter并没有加入到--ipp2p选项中

使用-m ipp2p --xunlei来启用

论坛徽章:
0
9 [报告]
发表于 2007-11-17 23:00 |只看该作者
原来如此,这是我加上以后的效果:
root@proxy5 /]# iptables -vnL FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           ipp2p v0.99.5 --xunlei     <=====这是刚刚加上的,用迅雷下载后,居然没有数被DROP
393K  213M ACCEPT     all  --  *      *       172.16.15.253        0.0.0.0/0
67237 3499K DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 3076,3077
52485 2467K DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate INVALID
5132K  340M DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           #conn/32 > 50
1714K  191M DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           ipp2p v0.99.5 --ipp2p  <====这句是0.99.4运行半个月的结果

我哪儿有写错吗?

xunlei.JPG (24.82 KB, 下载次数: 257)

xunlei.JPG

论坛徽章:
0
10 [报告]
发表于 2007-11-18 03:50 |只看该作者
你的iptables中同时存在0.99.4的和0.99.5的两个版本?

建议你先暂停iptables,然后rmmod ipt_ipp2p模块,再启动iptables。
这样确保系统加载的是新的0.99.5的模块,可以通过tail /var/log/message看到。

如果你已经这样做了,请贴出iptables-save的输出。

[ 本帖最后由 ShadowStar 于 2007-11-18 03:51 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP