> 文章列表 > iptables移植+内核修改

iptables移植+内核修改

iptables移植+内核修改

iptables移植,交叉编译后的文件,如果交叉编译工具一致可以直接使用-嵌入式文档类资源-CSDN文库

移植iptables过程中出现一些问题,这里记录一下

Iptables是用户态提供的更改过滤规则的便捷工具,通过使用这个工具,可以方便的改变内核下netfilter的默认规则,也可以根据自己的需求添加自定的规则。

  • iptables官网(Netfilter):http://www.netfilter.org/projects/iptables/index.html。
  • iptables下载地址:ftp://ftp.netfilter.org/pub/iptables/。

移植步骤:

http://www.netfilter.org/projects/iptables/files/

在这里选择移植的版本号,网上很多使用iptables-1.4.12.2.tar.bz2版本,但是我针对这个版本一直编译不过,提示错误是交叉编译工具的一个头文件的结构体未定义,这里我不想深入去研究他为啥编译不通过了,我就直接换一个版本做同样的操作,竟然编译通过了。

所以我的下载版本是

iptables-1.4.19.1.tar.bz2

下载到该软件版本后

解压到当前文件夹

tar -jxf iptables-1.4.19.1.tar.bz2

创建安装文件夹

mkdir install

打开源码文件夹

cd iptables-1.4.19.1

配置

./configure --host=arm-linux-gnueabihf --enable-static --disable-shared --prefix=/home/ltt/work/filesystem/install --disable-ipv6 --disable-largefile

其中,

  • --host: 指定交叉编译工具,一般为arm-none-linux-gnueabi、arm-linux-gnueabihf、arm-linux等,具体要和目标板用的交叉编译工具对应
  • --prefix: 指定安装目录,编译后的文件会全部放在安装目录中。必须是绝对路径!
  • --enable-static:使用静态编译。
  • --disable-shared:禁止动态编译。
  • --with-ksource:指定目标板的内核目录。如果不指定,可能会提示:/usr/sbin/iptables: line 1: syntax error: unexpected ")"错误。当然,因为这个是可选项,如果没有提示错误,也可以不加这一项。

这里的这条指令需要根据自己的平台使用的交叉编译工具,进行配置,很多时候交叉编译工具可能会找不到,这里就需要修改环境变量完成;指定的安装文件夹是我们刚开创建的install文件夹。

make

make install

make
make install

将 install/sbin 目录下的所有可执行文件拷贝到开发板即可

其实只有一个需要拷贝的,其他三个都是软链接

 只需要拷贝xtables-multi到开发板的/sbin

登录开发板,切换到/sbin目录

输入如下指令

cd /sbin
chmod 777 xtables-multi
ln -s xtables-multi iptables
ln -s xtables-multi iptables-restore
ln -s xtables-multi iptables-save

测试指令,不报错即可

iptables -L
iptables -A INPUT -t tcp --dport 80 -j ACCEPT
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移植,交叉编译后的文件,如果交叉编译工具一致可以直接使用-嵌入式文档类资源-CSDN文库