单位有台FC4服务器,以前安装的有ipp2p 0.82模块,效果还不错,前段时间在CU上看见一个版主自己修改的ipp2p模块,版本到 0.99-16了,不仅加入了更多的p2p过滤,还能够过滤迅雷,于是首先在虚拟机里用rhel5试验了一下,功能是增强了不少。
这两天就着手在FC4上升级,但使用0.99-16版本时一直提示错误,后来在CU上看了一下,版主的测试环境kernel和iptables版本都比我高,于是我降低版本试试。
选择了ipp2p 0.99-15版本,修改Makefile里KERNEL_SRC和IPTABLES_SRC,以及$(CC) --share替换成ld --share,make成功。
首先mv /old_libipt_ipp2p.ko-path/libipt_ipp2p.ko libipt_ipp2p.ko.old
mv /old_ipt_ipp2p.so-path/ipt_ipp2p.so ipt_ipp2p.so.old
然后cp 新的libipt_ipp2p.ko和ipt_ipp2p.so到相应位置。
问题:
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