从 http://netfilter.samba.org/ 下载 iptables-1.2.6.tar.bz2。
将 iptables tar 文件复制到/usr/local/src:
bash# cp iptables-1.2.6.tar.bz2 /usr/local/src |
解包
bash# tar xjvf iptables-1.2.6.tar.bz2 |
进入 iptables 目录
bash# cd iptables-1.2.6 |
检查您的内核是否需要一些额外的补丁,使用命令
bash# make pending-patches KERNEL_DIR=/usr/src/linux |
如果您的内核源代码位于/usr/src/linux 以外的其他位置,请在上面的命令行中用您的源代码目录替换内核源代码目录。
请谨慎使用此选项。此命令会调用 patch-o-matic,这是 Rusty Russell 开发的一个新的补丁验证实用程序。该实用程序将向您显示内核源代码可用的新补丁列表(一些是建议的,一些是提交的,一些是被接受的)。正如 Rusty 自己所说,“其中一些新补丁存在错误”,您不必应用所有这些补丁。
仔细阅读显示的每个补丁的信息,并用 y (应用补丁) 或 N (跳过此补丁) 回答。在某些情况下,回答 y 将尝试应用补丁,但如果补丁发现您的源代码之间存在一些差异,它将被跳过并显示下一个新补丁。
我没有应用任何建议的补丁,并在继续下一步之前保持内核处于原始状态。
使用以下命令构建 iptables 包
bash# make KERNEL_DIR=/usr/src/linux |
同样,如果您的内核源代码不在/usr/src/linux 以外的其他位置,请在上面的命令中替换内核源代码目录。
如果一切顺利,编译器将无错误地完成。
在下一步之前,通过键入以下命令检查您是否已安装 iptables 包
bash# rpm -q iptables |
如果 iptables rpm 已安装,您将看到软件包的名称和版本,类似于
iptables-1.1.2-13
在这种情况下,使用以下命令卸载
bash# rpm -e iptables |
安装新创建的软件包
bash# make install KERNEL_DIR=/usr/src/linux |
再次检查您的内核源代码目录。
此命令将在以下位置安装二进制文件(iptables、iptables-save、iptables-restore)/usr/local/sbin,手册在/usr/local/man/man8和模块在/usr/local/lib/iptables.
最后,使用以下命令安装头文件、开发库和相关的开发手册页
bash# make install-devel |
此命令将在以下位置安装 libiptc 库/usr/local/lib.
我认为此命令可能存在问题。它没有正确安装所有头文件,因此您必须使用以下命令自行安装它们
bash# cd /usr/local/src/iptables-1.2.6 bash# cp include/iptables.h /usr/local/include bash# cp include/iptables_common.h /usr/local/include bash# mkdir /usr/local/include/libiptc bash# cp include/libiptc/libiptc.h /usr/local/include/libiptc bash# cp include/libiptc/ipt_kernel_headers.h /usr/local/include/libiptc bash# cp iptables.o /usr/local/lib |
iptables.o上面需要它来编译程序,以便从 netfilter 获取规则信息。
现在您已准备好创建可以直接与 libiptc 通信的程序。