Linux下支持netfilter机制的配置工具就是iptables,它也就相当与一个应用程序,可以对netfilter进行配置(包过滤规则,NAT等等)。所以要实现netfilter(iptables)就要从两方面来着手:
1)内核支持netfilter;
2)用户层的iptables配置命令。
一、配置内核并编译,支持netfilter
在宿主机上进入Linux内核目录,配置所需的内核模块:
[lingyun@localhost yangzheng]$ cd linux-3.0
[lingyun@localhost linux-3.0]$ vt100
[lingyun@localhost linux-3.0]$ make menuconfig
[*] Networking support --->
Networking options --->
[*] Network packet filtering framework (Netfilter) --->
Core Netfilter Configuration --->(全部选上)
IP: Netfilter Configuration ---> (全部选上)
[lingyun@localhost linux-3.0]$ sudo make
注意:这里的所有选项一定选为built-in [*],而不能选为Module [M],如果选为Module,重新烧制的系统内核里用modprobe ip_tables 命令将不能找到iptables模块。上一步还有一点要注意的是IP: Netfilter configuration中的FULL NAT选项一定要选中,否则将不能使用 iptables -t nat命令。
到这里内核已经支持netfilter了,接下来就开始移植iptables。
二、iptables的移植
[lingyun@localhost wireless]$ wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.12.2.tar.bz2
[lingyun@localhost wireless]$ tar -jxf iptables-1.4.12.2.tar.bz2
[lingyun@localhost wireless]$ cd iptables-1.4.12.2
[lingyun@localhost iptables-1.4.12.2]$ ls
aclocal.m4 config.guess config.status COPYING INCOMPATIBILITIES libipq ltmain.sh Makefile.in tests
autogen.sh config.h config.sub depcomp INSTALL libiptc m4 missing utils
COMMIT_NOTES config.h.in configure extensions install-sh libtool Makefile release.sh
compile config.log configure.ac include iptables libxtables Makefile.am stamp-h1
[lingyun@localhost wireless]$ mkdir install
[lingyun@localhost install]$ pwd
/home/lingyun/yangzheng/wireless/install
[lingyun@localhost iptables-1.4.12.2]$ ./configure --host=arm-linux --enable-static --disable-shared --prefix=/home/lingyun/yangzheng/wireless/install --disable-ipv6 --disable-largefile
[lingyun@localhost iptables-1.4.12.2]$ sudo make
[lingyun@localhost iptables-1.4.12.2]$ make install
[lingyun@localhost iptables-1.4.12.2]$ /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-strip ~/yangzheng/wireless/install/sbin/xtables-multi
[lingyun@localhost install]$ rm -rf sbin/iptables*
[lingyun@localhost install]$ mv sbin/xtables-multi sbin/iptables
到这里呢,iptables已经交叉编译完成,接下来就是把一些文件下载到开发板上:
1)、libiptc.so.0和libxtables.so.7拷贝到开发板的/lib目录中去;
libiptc.so.0,libxtables.so.7 在/usr/local/lib/lib目录下。
2)、将iptables-1.4.12.2/extensions中的libipt_SNAT.so,libipt_DNAT.so,libipt_tcp.so下载到开发板 的/usr/local/libexec/xtables中去,开发板本身没有这个目录,可以用命令mkdir -p/usr/local/libexec/xtables 建立。注:这些动态库是在用 iptables的一些选项时调用的。如,libipt_SNAT.so,libipt_DNAT.so 支持 “--to”、“-j SNAT”和 “-j DNAT”选项,libipt_tcp.so支持“-- dport”选项。如果用到其他命令选项,自行查找是哪个动态库支持,将其下载到开发板的/usr/local/libexec/xtables目录。
3)、将install/sbin下的iptables可执行文件发送到新系统的/sbin目录下,为新拷贝的可执行文件添加执行权限。
4)、执行iptables -L 命令,执行成功。
现在我们的linux系统就已经有iptables这个命令了!!!!
参考文档:http://blog.csdn.net/hanzengyi/article/details/5991917
http://blog.chinaunix.net/uid-7396260-id-2056583.html