ddwrt 交叉编译 iptables 1.4.21

ddwrt 交叉编译 iptables 1.4.21

Why

*系统自带的iptables 只有最基本的功能, 没有安装任何 iptables extension;
*系统自带的iptables 不会输出错误信息, 并且没有 iptables-save / iptables-load 等工具. (指 ddwrt 自带版本, OPTW2 里的 iptables package 没有这些问题)

Procedure

下载最新版 iptables (iptables-1.4.21)

./configure --build=x86_64-unkown-linux-gnu --host=mipsel-openwrt-linux-uclibc --prefix=/opt/sagan --enable-libipq --with-xtlibdir=/opt/sagan/lib/iptables --sbindir=/opt/sagan/bin
make
make install

configure 参数参考 LFS. 编译出来的 iptables 实际上是 ./iptables/.libs/xtables-multi, 需要 make install 才会生成实际的 iptables, iptables-save 等 symbolic link.

所以推荐的方法是在编辑机器上创建文件夹 /opt/sagan ( sagan 为自定义的名字, 推荐你的用户名), make install 然后把 /opt/sagan 里所有文件复制到路由器对应目录 (只需要复制 bin/ 和 lib/ 两个文件夹里内容即可, include/ (开发所需头文件) 和 share/ (一些 man 文档)不需要). 之所以用 /opt/sagan 作为根目录是为了避免和 /opt 里安装的 OPTW2 软件包冲突.

然后在 profile / 启动脚本里:

把 /opt/sagan/bin 加入 PATH
把 /opt/sagan/lib 加入 LD_LIBRARY_PATH

推荐放在 PATH 的最前面, 这样自己编译安装的程序具有最高优先级

export PATH=$PATH:/opt/sagan/bin
export LD_LIBRARY_PATH=/opt/sagan/lib:$LD_LIBRARY_PATH


comments powered by Disqus