Linux下支持netfilter机制的配置工具就是iptables,它也就相当与一个应用程序,可以对netfilter进行配置(包过滤规则,NAT等等)。所以要实现netfilter(iptables)就要从两方面来着手:1)内核支持netfilter;2)用户层的iptables配置命令。
1) 编译内核,支持netfilter
在宿主机上进入Linux内核目录,配置所需的内核模块:
make menconfig
选中如下内核选项:
General setup --->
[*] Sysctl support (在ROMFS文件系统中/proc/sys/net/ipv4/出现ip_forward)
Networking options --->
[*] Network packet filtering (replaces ipchains)
IP: Netfilter Configuration --->(全部选择即可)
这样在内核中就选择支持了netfilter。接下来只需编译并生成内核映像文件并烧写到嵌入式系统即可。如果烧写后重起成功进入Linux,则说明新的支持netfiter的内核已经正常运行。(注意,这里的内核选项只是一些支持netfilter/iptables的选项。这里假设原有内核已支持嵌入式系统的相关硬件,并能在嵌入式平台上运行)。
[root@localhost iptables-1.4.1.1]# CC=arm-linux-gcc ./configure --host=arm-linux
注意我用的编译器是3.4.1的
[root@localhost iptables-1.4.1.1]# make KERNEL_DIR=/home/kernel/linux-2.6.14/
[root@localhost iptables-1.4.1.1]# ls
aclocal.m4 iptables.8
compile iptables.8.in
config.guess iptables-apply
config.h iptables-apply.8
config.h.in iptables.c
config.log iptables-multi
config.status iptables-multi.c
config.sub iptables-multi.h
configure iptables_multi-iptables-multi.o
configure.ac iptables_multi-iptables.o
COPYING iptables_multi-iptables-restore.o
depcomp iptables_multi-iptables-save.o
extensions iptables_multi-iptables-standalone.o
include iptables_multi-iptables-xml.o
INCOMPATIBILITIES iptables_multi-xtables.o
INSTALL iptables.o
install-sh iptables-restore
ip6tables iptables-restore.8
ip6tables.8 iptables-restore.c
ip6tables.8.in iptables-restore.o
ip6tables.c iptables-save
ip6tables-multi iptables-save.8
ip6tables-multi.c iptables-save.c
ip6tables-multi.h iptables-save.o
ip6tables_multi-ip6tables-multi.o iptables-standalone.c
ip6tables_multi-ip6tables.o iptables-standalone.o
ip6tables_multi-ip6tables-restore.o iptables-xml
ip6tables_multi-ip6tables-save.o iptables-xml.8
ip6tables_multi-ip6tables-standalone.o iptables-xml.c
ip6tables_multi-xtables.o iptables-xml.o
ip6tables.o iptables.xslt
ip6tables-restore libipq
ip6tables-restore.8 libiptc
ip6tables-restore.c libtool
ip6tables-restore.o ltmain.sh
ip6tables-save Makefile
ip6tables-save.8 Makefile.am
ip6tables-save.c Makefile.in
ip6tables-save.o missing
ip6tables-standalone.c stamp-h1
ip6tables-standalone.o xtables.c
iptables xtables.o
将生成 iptables copy到开发板上
一般配置iptables写shell的脚本就可以,
在开发板启动时候,自动运行iptables的shell