这两天编译ipp2p模块,以前在FC4和RHEL5上都编译成功,但是在Ubuntu-Server8.04上一直没成功!
sudoapt-getsourcelinux-image-2.6.24-19-server
sudoapt-getsourceiptables
然后把ipp2p里的Makefile里KERNEL_SRC和IPTABLES_SRC修改正确路径
然后对照修改/usr/src/linux/Makefile
yclilin@ubuntu:~$uname-r
2.6.24-19-server
yclilin@ubuntu:~$head-4/usr/src/linux/Makefile
VERSION=2
PATCHLEVEL=6
SUBLEVEL=24
EXTRAVERSION=-19-server
接着在ipp2p目录下make,记得用root权限
如果提示错误
scripts/kconfig/lxdialog/dialog.h:31:20:error:curses.h:Nosuchfileordirectory
原因為缺少ncursesdevel套件(name"libncurses5-dev"inUbuntu),安裝後即可
$sudoapt-getinstalllibncurses5-dev
以下是低版本编译时容易出现的问题。
如果提示编译libipt_ipp2p.so有错误,请将Makefile中的“$(CC)-shared-olibipt_ipp2p.solibipt_ipp2p.o”修改为“ld-shared-olibipt_ipp2p.solibipt_ipp2p.o”。(1.3.5版的iptables使用ld没问题;但是1.3.8版的使用ld就不行了,只能使用gcc)
最后makeinstall就可以了。
先前用普通用户sudomake时只能生成libipt_ipp2p.o和libipt_ipp2p.so文件,不能生成libipt_ipp2p.ko,也没有什么错误提示,后来用root权限make就好了,就是这个问题困扰了我两天。
以下是应用中可能遇到的问题:
1、重新load脚本,发现--ipp2p和--xunlei的过滤都无效。
解决:光重新load脚本是不行的,必须停止iptables,再load脚本,类似重新加载新的模块。
2、--ipp2p选项能看到DROP的数据包,而--xunlei没有
解决:--ipp2p能DROP数据包,说明安装没有问题,一定是策略上有冲突。检查脚本,发现--xunlei-jDROP前有一条iptables-AFORWARD-m--stateESTABLISHED,RELATED-jACCEPT,去掉这条规则就OK了。
3、看到有个网友的问题也很特殊,特此记录。
通过iptables和squid做的代理,在FORWARD链上使用--xunlei规则,但依然能搜索到候选资源。
因为迅雷能走80端口,所有迅雷通过squid代理是走的网关的INPUT链,因此应该写为iptables-AINPUT-m-ipp2p--xunlei-jDROP
下载本文示例代码
阅读(403) | 评论(0) | 转发(0) |