目录
- Buildroot 2023 sdk中默认 iptable的版本1.6.1, 本文通过将其升级到1.8版本,介绍buildroot 软件包的一般升级方法 。另外分析了: iptables -t nat错误: iptables: No chain/target/match by that name和ERROR: 0 not a valid target的解决方法。
buildroot 软件包升级方法
buildroot没有类似openwrt opkg一样自带方便易用的包管理工具,应用软件基本上都需要在sdk框架下编译rootfs进行定制。通过,rk3568官方发布的sdk是基于buildroot某个版本定制。应用软件的版本也就随buildroot 基线确定了,如果想升级某个应用软件的版本,就需要自己准备源码进行编译安装了。下面以ipTable为例,介绍buildroot应用软件升级方法。
iptable v1.6.1升级到1.8
首先从官方上下载包含有iptable 1.8版本buildroot包, 不建议直接从其他渠道下载单独的iptable源码,因为buildroot基线 通常有特定版本的应用软件以及想对应的makefile文件 ,还有针对 buildroot做适配的一些补丁。
下载后,从中提取出iptables包及其依赖包。
#下载最新buildroot包
wget https://buildroot.org/downloads/buildroot-2024.02.9.tar.gz
#解压
buildroot-ef2af4b67f3403fc0feaca8a07d1733f17c6b316
#提取其中的iptables包及依赖包,更新到buildroot sdk对应目录下
package\iptables
package\libnftnl
编译问题
#编译错误 [iptables 1.8.8 Configuring] no suitable libnftnl found, :no suitable libnftnl found.
checking for libnftnl >= 1.1.6... no
*** Error: no suitable libnftnl found. ***
Please install the 'libnftnl' package
Or consider --disable-nftables to skip
iptables-compat over nftables support
解决方案是下载libnftnl1.6版本, 重新编译buildroot后升级成功。
iptable nat : No chain/target/match by that name. or ERROR: 0 not a valid target)
现象
buildroot内核中已经设置了iptable相关组件,但是执行命令提示错误。无论 是1.6.1还是1.8版本均存在该问题。现象如下:
root@RK356X:/# iptables -t nat -A POSTROUTING -s 192.18.28.100/24 -j SNAT --to-source 190.99.99.99
iptables: No chain/target/match by that name.
root@RK356X:/# iptables -t nat -L
ERROR: 0 not a valid target)
Aborted
root@RK356X:/# iptables -V
iptables v1.6.1
解决:问题根源 是少一个ko[bpfilter.ko]
分析线索:编译内核过程中生成了一些ko文件 , 其中bpfilter需要手动加载,
-rw-r--r-- 1 root root 173080 9月 28 12:11 ./net/bpfilter/bpfilter.ko
-rw-r--r-- 1 root root 376328 9月 28 12:11 ./net/ipv4/tcp_htcp.ko
-rw-r--r-- 1 root root 369424 9月 28 12:11 ./net/ipv4/tcp_bic.ko
-rw-r--r-- 1 root root 346000 9月 28 12:11 ./net/netfilter/xt_physdev.ko
-rw-r--r-- 1 root root 816864 9月 28 12:11 ./net/bridge/netfilter/ebtables.ko
-rw-r--r-- 1 root root 628256 9月 28 12:11 ./drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
-rw-r--r-- 1 root root 1271088 9月 28 12:11 ./net/8021q/8021q.ko
-rw-r--r-- 1 root root 368936 9月 28 12:11 ./net/ipv4/tcp_westwood.ko
-rw-r--r-- 1 root root 12784112 9月 28 12:11 ./drivers/net/wireless/marvell/mwifiex/mwifiex.ko
-rw-r--r-- 1 root root 20732936 9月 28 12:11 ./drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmdhd.ko
两种解决方案:
**解决方法一: **
拷贝./net/bpfilter/bpfilter.ko到文件系统中,手动inmod
解决方法二:
#检查内核编译选型,将其设置为*
--- BPF based packet filtering framework (BPFILTER)destination x x
x x <M> bpfilter kernel module with user mode helper
使用方法二修改内核编译选型, 更新 内核后, 无需要手动加载ok, iptable工作正常。