iptables交叉编译

[手把手,保姆级]iptables交叉编译

为了能对Linux网卡进行路由配置,可能需要移植一个iptables功能到你的目标板。这里我们来手把手教你,如何交叉编译iptables工具。

准备工作:

1.下载iptables-1.8.9.tar.xz 链接直通车在这里插入图片描述
2. 下载libmnl (git clone git://git.netfilter.org/libmnl)在这里插入图片描述
3. 下载libnftnl (git clone git://git.netfilter.org/libnftnl)在这里插入图片描述

库简单介绍

1.iptables 是一个用于配置 Linux 内核中的防火墙规则的命令行工具。它可以帮助管理员控制进出系统的网络流量,实现网络包过滤、网络地址转换(NAT)和数据包修改等功能。

2.libmnl(Micro Netlink Library) 是一个用户空间库,用于与 Linux 内核通过 Netlink 接口进行通信。

libmnl 是一个用户空间库,用于与 Linux 内核通过 Netlink 接口进行通信。
它提供了一个简单的接口,用于构建和解析 Netlink 消息,这些消息用于与内核进行通信,例如配置网络接口、管理路由表、设置防火墙规则等。
libmnl 可以用于编写应用程序,通过 Netlink 接口与内核网络子系统进行交互,从而实现对网络配置和管理的控制。

3.libnftnl (Netfilter Netlink Library) 是一个用户空间库,用于与 Linux 内核的 Netfilter 子系统进行交互。

Netfilter 是 Linux 内核中的一个框架,用于进行网络数据包过滤和网络地址转换(NAT)等操作。它提供了防火墙功能,允许管理员配置包过滤规则和网络地址转换规则。
libnftnl 提供了一个高级接口,用于构建和解析 Netfilter 规则和对象,以及与内核中的 nftables 工具进行交互。
使用 libnftnl,可以编写应用程序来创建、修改和查询 Netfilter 规则,从而实现对网络数据包过滤和地址转换的控制。

交叉编译

第一个交叉编译libmnl

# 养成好习惯,在libmnl里面创建一个__install文件加来存放最后的输出内容
cd  libmnl
mkdir __install
./autogen.sh
# CC=你自己的交叉编译器的路径
./configure  --host=arm-linux CC=/home/xx/Desktop/code/H3/armv7-eabihf--glibc--stable-2020.08-1/bin/arm-linux-gcc LDFLAGS=-static --prefix=$PWD/__install
make
make install

在这里插入图片描述
在这里插入图片描述

第二个交叉编译libnftnl

# 同样,在libnftnl内创建一个__install用于存放输出
cd  libnftnl
mkdir __install
./autogen.sh
# 这里有个细节就是需要通过PKG_CONFIG_PATH=指定刚才编译的libmnl的pkg的路径,如果不知道,会提示你No package 'libmnl' found;你当然可以通过设置变量跳过这个功能,但是为了保证其完整性我们做全套。
# 另外这个路径就是刚才编译的libmnl的__install/lib/pkgconfig,只要成功编译就会有这个输出
# 记得把下面的交叉编译器换成你自己的交叉编译器路径
./configure  --host=arm-linux CC=/home/xx/Desktop/code/H3/armv7-eabihf--glibc--stable-2020.08-1/bin/arm-linux-gcc LDFLAGS=-static --prefix=$PWD/__install PKG_CONFIG_PATH=/home/xx/Desktop/code/github/test/libmnl/__install/lib/pkgconfig
make
make install

在这里插入图片描述

最后编译iptables

# 先解压
tar -xf iptables-1.8.9.tar.xz
cd iptables-1.8.9
mkdir __install
./autogen.sh
# 将libmnl和libnftnl的pkgconfig路径都添加进去才能顺利配置编译
./configure --host=arm-linux CC=/home/xx/Desktop/code/H3/armv7-eabihf--glibc--stable-2020.08-1/bin/arm-linux-gcc --enable-static --disable-shared --prefix=/home/xx/Desktop/code/github/install --disable-ipv6 --disable-largefile PKG_CONFIG_PATH="/home/xx/Desktop/code/github/test/libmnl/__install/lib/pkgconfig:/home/xx/Desktop/code/github/test/libnftnl/__install/lib/pkgconfig"
make
make install
	

在这里插入图片描述
然后可以将sbin,lib拷贝到你的目标板,进行使用。

最终运行效果

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值