来源:新建科技
这两天编译ipp2p模块,以前在FC4和RHEL5上都编译成功,但是在Ubuntu-Server 8.04上一直没成功!
sudo apt-get source linux-image-2.6.24-19-server
sudo apt-get source iptables
然后把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: No such file or directory
原因?缺少 ncurses devel 套件 (name "libncurses5-dev" in Ubuntu),安?後即可
$ sudo apt-get install libncurses5-dev
以下是低版本编译时容易出现的问题。
如果提示编译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)
最后make install就可以了。
先前用普通用户sudo make时只能生成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 -j DROP前有一条iptables -A FORWARD -m --state ESTABLISHED,RELATED -j ACCEPT,去掉这条规则就OK了。
3、看到有个网友的问题也很特殊,特此记录。
通过iptables和squid做的代理,在FORWARD链上使用--xunlei规则,但依然能搜索到候选资源。
因为迅雷能走80端口,所有迅雷通过squid代理是走的网关的INPUT链,因此应该写为iptables -A INPUT -m -ipp2p --xunlei -j DROP
Arthur1989 于 2008-08-13 12:59:57发表:
牛~~~好好学习,天天向上,报销祖国