移植iptables至嵌入式设备

移植iptables至嵌入式设备

因开发工作中,信息安全需要,需要使用iptables实现车载以太网网络隔离

iptables移植

  • 下载iptables源码
    https://www.netfilter.org/pub/iptables/
    或者
    git clone git://git.netfilter.org/iptables
  • cd iptables
  • 执行autogen.sh,得到configure文件
  • 配置交叉编译环境和安装路径,执行编译和安装
#!/bin/sh
./configure CC=/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
    --prefix=$(pwd)/__install \
    --host=aarch64-linux-gnu \
    CFLAGS=-I/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/include \
    LDFLAGS=-L/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/lib \
    --disable-nftables \
    --enable-static \
    --disable-shared \
    --disable-ipv6 \
    --disable-largefile
make -j40
make install
  • 进入指定的安装目录,进入sbin
    在这里插入图片描述
  • 拷贝图中编译生成的工具至设备的/bin中
    在这里插入图片描述
  • 进入设备中,执行iptables --version,至此,iptables工具移植完成
    在这里插入图片描述

问题

  • 执行iptables -L,提示找不到ip_tables模块
    在这里插入图片描述
  • 进入到对应的目录下查看modules.order,缺失无该模块,查找网上资料,得知需要内核增加配置重新编译才能解决
    在这里插入图片描述
    在这里插入图片描述

配置内核增加iptables所需的模块

  • 通常需要在原有的内核config文件基础上新增配置,所以要确保我们是基于最新的config文件上新增配置,首先应执行
    make ARCH=arm64 CROSS_COMPILE=/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- s32v234_defconfig
    生成.config文件

  • 根据现有的.config进行menuconfig,需要指定交叉编译工具,进入Networking support
    make ARCH=arm64 CROSS_COMPILE=/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- menuconfig
    在这里插入图片描述

  • 进入Networking options->Network packet filtering framework (Netfilter)在这里插入图片描述
    在这里插入图片描述

  • 首先将Core Netfilter Configuration的子项目都选中,能编译成模块的选择编译成模块,不能的选择编译至内核
    在这里插入图片描述
    在这里插入图片描述

  • IP: Netfilter Configuration的子项目都选中,能编译成模块的选择编译成模块,不能的选择编译至内核
    在这里插入图片描述
    在这里插入图片描述

  • 保存当前配置进.config
    在这里插入图片描述
    在这里插入图片描述

  • 这时候需要将.config格式的配置文件转换为defconfig
    make ARCH=arm64 CROSS_COMPILE=/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- savedefconfig
    在这里插入图片描述

  • config文件一般会放在arch/arm64/configs/中

  • cp ./defconfig arch/arm64/configs/s32v234_defconfig

  • 这时候内核配置完成,我们使用最新的配置文件,生成.config,然后执行image编译,modules编译,modules安装

make ARCH=arm64 CROSS_COMPILE=/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- s32v234_defconfig
make ARCH=arm64 CROSS_COMPILE=/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- -j40
make ARCH=arm64 CROSS_COMPILE=/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- modules
make ARCH=arm64 CROSS_COMPILE=/usr/arm/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/home/thor/Desktop/patch_kernel/linux-eth/arch/arm64/boot/output/
  • 将生成的image,modules放入嵌入式设备中,modules需要放在/lib/
    在这里插入图片描述
  • 查看modules.order,新增许多netfilter模块
    在这里插入图片描述
  • 此时在设备运行iptabels -L,不再报错,可以使用iptables命令新建过滤规则了
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值