• iptables交叉编译记事


    内核支持

    需要内核支持,需要重新编译内核。

    为了确认生出的.config文件合适,使用diff命令,不做更改保存.config,确定.config文件是否一致。

    以上主要是确定make menuconfig命令所保存的文件属于arm架构的文件。(有些时候,默认使用是的x86架构,所以虽然前面步骤不会出错,但是在make过程中,会有一些问题,导致认为是代码本身的缺陷)

    因此需要使用以下:

    (sinlinx提供了build.sh文件)

    make menuconfig ARCH=arm
    做完覆盖.config到arch/arm/configs/sinlinx...之类
    ./build.sh

    在meunconfig中,为了避免问题,提供所有的network options之类的选项,使用*,编译到内核中。尤其注意filter表和nat表之类的相关支持。

    交叉编译

    不管是什么了,编译代码用下面这句:主要是为了减少一些不必要的麻烦

    ./configure CC=arm-linux-gnueabihf-gcc 
        --prefix=$(pwd)/__install 
        --host=arm-linux-gnueabihf 
        CFLAGS=-I/usr/local/include 
        LDFLAGS=-L/usr/local/lib 
        --disable-nftables 
        --enable-static 
        --disable-shared 
        --disable-ipv6 
        --disable-largefile
    

    推荐使用交叉编译的iptables版本为:1.8.4吧。问题少一点。

    传送门:https://www.netfilter.org/projects/iptables/downloads.html

    iptables编译,早期使用的1.4或者1.6版本,或者其它之类,需要注意的问题在于:

    so文件问题:部分文件找不到

    有时候需要做一些覆盖问题,如某些文件找不到,而又在某路径下,则对应到/lib等目录下!

    特殊的问题如,文件名过短等错误,则删除该过短文件,将其重新命名为对应的长文件。

    ln -s /opt/lib/libip4tc.so.2.0.0 /lib/libip4tc.so.2
    ln -s /opt/lib/libip4tc.so.2.0.0 /lib/libip4tc.so.2
    ln -s /opt/lib/libxtables.so.12.0.0 /lib/libxtables.so.12
    
    mv /opt/sbin/xtables-multi /opt/sbin/iptables
    

      

    另外关于--port等命令选项不识别的问题,尝试在做交叉编译过程中使用如上的编译代码。出现该问题当然是一些在lib下的xtables中的so文件没有正确的加入到交叉编译的iptables中。

    不过放遍了所有的路径,还是做了以上代码处理。这样,在/lib/xtables中就没有文件了,也许,在里面呢??

    另外一些问题是关于xtables本身的。在生出的xtables中:有时候需要将/sbin/multxxx之类的文件,重新命名为iptables,以便运行(删除原来的iptables)。

    测试用例

    附上测试用例:

    iptables -t nat -A PREROUTING -p tcp -d 10.8.0.6 --dport 102 -j DNAT --to 192.168.1.105:102
    

      

  • 相关阅读:
    jquery easyui 推荐博客 (MVC+EF+EasyUI+Bootstrap)
    添加主键
    SSAS IIS 发布
    NLB
    实现验证码图像文字的识别(C#调用DLL)
    c#中高效的excel导入sqlserver的方法
    C# 控件的缩写
    c#3.0提供的扩展方法
    菜鸟谈谈C#中的构造函数和析构函数
    C#对注册表的操作
  • 原文地址:https://www.cnblogs.com/bai2018/p/12196309.html
Copyright © 2020-2023  润新知