一.介绍
一般情况下的iptables其实是够用的,但是在某些些情况下可能会碰到版本过低的情况,比如使用部分模块或者要安装依赖高版本iptables的程序。
前者我在Linode的机器上碰到过,使用iptables的string模块来匹配关键词的时候报错了,研究了下发现可能是版本过低,但是直接更新并没有卵用,提示没有更新的包,所以只能编译。
由于iptables其实会加载模块,所以瞎几把编译很容易导致之后如果有其他依赖iptables的程序识别错误,因而写一篇文章来记录下如何比较"完美"的覆盖系统自带的iptables,其中编译参数为对系统yum源中的iptables的src.rpm解包后研究所得。
二.方法
也不多说,直接命令走起,在你系统依赖满足的情况下(我当初装的时候忘记记一下要哪些依赖了,所以你如果碰到缺依赖的情况的话就缺啥补啥吧),直接复制命令粘贴应该就能完成升级操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
yum install epel-release ncurses-devel kernel-devel kernel-headers -y yum groupinstall "Development tools" -y #下载最新版本 cd /opt wget http://ftp.netfilter.org/pub/iptables/iptables-1.4.21.tar.bz2 tar xjvf iptables-1.4.21.tar.bz2 cd iptables-1.4.21 #启用devel是为了方便后续其他可能依赖iptables-devel包的程序 ./configure --enable-devel --enable-libipq --prefix=/usr --bindir=/bin --sbindir=/sbin --sysconfdir=/etc --libdir=/lib64 --libexecdir=/lib64 --with-xtlibdir=/lib64/xtables --mandir=/usr/share/man --includedir=/usr/include --with-kernel=/usr --with-kbuild=/usr --with-ksource=/usr make && make install service iptables restart service iptables stop #\cp是为了转义掉系统可能存在的alias从而取消询问覆盖 \cp /usr/local/sbin/iptables /sbin/ \cp /usr/local/sbin/iptables-restore /sbin/ \cp /usr/local/sbin/iptables-save /sbin/ \cp /usr/local/sbin/ip6tables /sbin/ \cp /usr/local/sbin/ip6tables-restore /sbin/ \cp /usr/local/sbin/ip6tables-save /sbin/ service iptables restart |
正常情况下你现在就换上了最新的iptables,如果还有问题的话可以重置下规则(清空规则)
Senraの小窝原创文章,转载请注明来自:编译更新iptables以便支持更多匹配规则
近期评论