嵌入式 iptables1.4.3.1移植ARM9

一、重新配置内核选项,编译内核支持netfilter

 将netfilter选项选中。

          Networking support --->

              Networking options --->

                   Network packet filtering framework (Netfilter) -->

                            Core Netfilter configuration --->

                                  全选为built-in [*]

                            IP: Netfilter configuration --->

                                  全选为built-in [*]

        注意:这里的所有选项一定选为built-in [*],而不能选为Module [M],如果选为Module,重新烧制的系统内核里用modprobe ip_tables 命令将不能找到iptables模块。(本人是菜鸟,只能按菜鸟的方法来)。上一步还有一点要注意的是IP: Netfilter configuration中的FULL NAT选项 一定要选中,否则将不能使用 iptables -t nat命令。

       5.配置完成后,将配置文件保存。

       6.开始编译内核。make dep; make clean; make bzImage.

       7.编译完成后,生成的新内核"zImage"保存在/usr/src/linux/arch/arm/boot文件夹下。

 

二、交叉编译iptables

       1.安装交叉编译工具链 cross-3.4.1.tar.bz2。将其安装在/usr/local/arm/3.4.1/文件夹下。

       2.配置环境变量,打开/etc/profile 文件,在“export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE”的下一行加入“export PATH=/usr/local/arm/3.4.1/bin:$PATH”

       3.在终端测试命令“arm-linux-gcc”是否成功。

       4.下载到netfilter官方网站下载iptables-1.4.3.1.tar.bz2,解压。

       5.在终端下切换到iptables-1.4.3.1文件夹。运行./configure --prefix=/usr/local/arm/iptables --host=arm-linux --with-curnel=/usr/src/linux。选项--host=arm- linux是指定iptables的运行环境,也就是通知configure在生快成Makefile的时候,编译器选用arm-linux-gcc,调用交叉编译工具链进行交叉编译 ,--prefix=/usr/local/arm/iptables 是指定安装路径 

       6. 终端执行make;make install命令,交叉编译安装iptables。

       7.编译生成的可执行文件 iptables iptables-save iptables-store 等都在iptables-1.4.3.1文件夹内的.libs隐藏文件夹内。而iptables 所调用的动态库都保存在iptables-1.4.3.1/extensions文件夹内。

 

三、下载新系统内核和交叉编译好的iptables到板子

      1.打开飞凌开发板光盘自带的DNW软件,烧制内核。关闭DNW软件。

      2.打开超级终端,连接开发板所在的COM口,重启新系统。

      3.使用超级终端将编译好的把编译生成的

         (1) libiptc.so.0和libxtables.so.2拷贝到开发板的/lib目录中去

         (2) 将iptables-1.4.3.1/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) 将iptables等可执行文件发送到新系统的/sbin目录下,为新拷贝的可执行文件添加执行权限。运行iptables命令 发现错误iptables: error while loading shared libraries: libiptc.so.0: cannot open shared object file: No such file or directory 和iptables: error while loading shared libraries: libxtables.so.2: cannot open shared object file: No such file or directory  原因是缺少libiptc.so.0和libxtables.so.2 两个动态库,从/usr/local/arm/iptables/lib中找到两个动态库,并下载到板子的/lib文件夹。

          (4)  执行iptables -L 命令,执行 成功。但是当添加规则“iptables -A INPUT -t tcp --dport 80 -j ACCEPT”时提示找不到libipt_standard.so文件。而这个文件在编译生成的动 态库中是没有的,只有一个“libxt_standard.so”。其实这两个库是一样的。重命名“libxt_standard.so”为“libipt_standard.so”,将其下载 到/usr/local/libexec/xtables。

          (5) 运行“iptables -t nat -A PREROUTING -d 192.168.1.15 -p tcp -j DNAT --dport 9000 -- to 192.168.1.16:9000”,加入成功,运行“iptables -t nat -L”可以看到规则已经加入到iptables中。

 

 

 

 

 

 

查询资料 原帖:

我是新手,用开发板的都是用来做网络应用的,一直为没有防火墙而烦恼着。本来想偷懒,想直接用别人现成的,可一直没人给帮助,只好自己硬着头皮自己编译了。以下是我的编译过程,假定看客已经按手册学会了编译内核和使用交叉编译工具:
首先把内核文件解压,运行make menuconfig
Networking support --->
Networking options --->
Network packet filtering framework (Netfilter) -->
Core Netfilter configuration  --->
里面的选项很多,我也不搞清是什么了,全选为了built-in的了
然后退出保存,运行make zImage编译新的内核,并更新板上的内核。
下载 iptables-1.4.3.2.tar.bz2
解压 tar -jxcf iptables-1.4.3.2.tar.bz2
进入iptables-1.4.3.2目录运行./configure配置,生成Makefile文件,然后修改Makefile文件里的gcc为arm-linux-gcc
然后运行make KERNEL_DIR=/opt/FriendlyARM/mini2440/linux-2.6.29/kernel
再 make NO.SHARED_LIBS = 1 静态链接编译生成可执行文件
iptables 1.4.3.2版生成的可执行文件在 .libs目录下,把想要的可执行文件 iptables,iptables-save,iptables-restore拷贝到开发板上(我把它们放在/home/plg目录里了)
把libiptc.so.0和libxtables.so.2拷贝到开发板的/lib目录中去
把iptables 1.4.3.2的extensions目录下所有的so文件copy到/usr/local/libexec/xtables中去,开发板本身没有这个目录,可以用命令mkdir -p/usr/local/libexec/xtables 建立
运行iptables -L成功!
以为这就成功了,可是当加规则iptables -A INPUT -t tcp --dport 80 -j ACCEPT 时出错提示找不到libipt_standard.so文件,这下惨了,上网找了很久,没有办法解决~~~
终于看到一篇文章说iptables 1.4.3.2 用的是 libxt_standard.so这个文件,就试着把那个文件拷贝为libxt_standard.so文件 cp /usr/local/libexec/xtables/libxt_standard.so /usr/local/libexec/xtables/libipt_standard.so
再加规则iptables -A INPUT -t tcp --dport 80 -j ACCEPT,终于没出错提示了!
再测试对telnet端口23的开放,也成功了,至止,算是小成了吧,也不知道最后那一步硬改了名字会不会有什么问题,先不管它了,反正已经可以用iptables,连在公司的内网也不至上总是断网了(怀疑公司内有电脑中毒到处攻击)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值