9. 安装 iptables + libiptc

要安装 libiptc,请按照以下步骤操作

  1. http://netfilter.samba.org/ 下载 iptables-1.2.6.tar.bz2

  2. iptables tar 文件复制到/usr/local/src:

    bash# cp iptables-1.2.6.tar.bz2 /usr/local/src
  3. 解包

    bash# tar xjvf iptables-1.2.6.tar.bz2
  4. 进入 iptables 目录

    bash# cd iptables-1.2.6
  5. 检查您的内核是否需要一些额外的补丁,使用命令

    bash# make pending-patches KERNEL_DIR=/usr/src/linux

    如果您的内核源代码位于/usr/src/linux 以外的其他位置,请在上面的命令行中用您的源代码目录替换内核源代码目录。

    请谨慎使用此选项。此命令会调用 patch-o-matic,这是 Rusty Russell 开发的一个新的补丁验证实用程序。该实用程序将向您显示内核源代码可用的新补丁列表(一些是建议的,一些是提交的,一些是被接受的)。正如 Rusty 自己所说,“其中一些新补丁存在错误”,您不必应用所有这些补丁。

    仔细阅读显示的每个补丁的信息,并用 y (应用补丁) 或 N (跳过此补丁) 回答。在某些情况下,回答 y 将尝试应用补丁,但如果补丁发现您的源代码之间存在一些差异,它将被跳过并显示下一个新补丁。

    我没有应用任何建议的补丁,并在继续下一步之前保持内核处于原始状态。

  6. 使用以下命令构建 iptables 包

    bash# make KERNEL_DIR=/usr/src/linux

    同样,如果您的内核源代码不在/usr/src/linux 以外的其他位置,请在上面的命令中替换内核源代码目录。

    如果一切顺利,编译器将无错误地完成。

  7. 在下一步之前,通过键入以下命令检查您是否已安装 iptables 包

    bash# rpm -q iptables

    如果 iptables rpm 已安装,您将看到软件包的名称和版本,类似于

    iptables-1.1.2-13

    在这种情况下,使用以下命令卸载

    bash# rpm -e iptables
  8. 安装新创建的软件包

    bash# make install KERNEL_DIR=/usr/src/linux

    再次检查您的内核源代码目录。

    此命令将在以下位置安装二进制文件(iptables、iptables-save、iptables-restore/usr/local/sbin,手册在/usr/local/man/man8和模块在/usr/local/lib/iptables.

  9. 最后,使用以下命令安装头文件、开发库和相关的开发手册页

    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 通信的程序。