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文库