基于CentOS/RHEL9系列,安装最新xtables-addons扩展包
1、安装基础依赖
yum install openssl-devel wget unzip gcc make automake kernel-devel-$(uname -r) iptables-devel perl-Text-CSV_XS epel-release
报错1:找不到匹配的内核开发模块

解决方法:
打开这个网站https://mirrors.vcea.wsu.edu/rocky/9/devel/x86_64/os/Packages/k/,然后按ctrl+f搜索kernel-devel-5.14.0-570.17.1.el9_6.x86_64


或者wget https://mirrors.vcea.wsu.edu/rocky/9/devel/x86_64/os/Packages/k/kernel-devel-5.14.0-570.17.1.el9_6.x86_64.rpm
yum install kernel-devel-5.14.0-570.17.1.el9_6.x86_64.rpm -y

再次安装其它依赖包

确保依赖都已经安装

2、编译xtables-addons源码包
打开官网https://inai.de/projects/xtables-addons/,点击source code release archive下载源码包。


我们这里下载最新的源码包

解压xtables-addons


[root@192 ~]# cd xtables-addons-3.28
[root@192 xtables-addons-3.28]# ./configure


内核检查必须通过后,才能后续编译、安装。
报错2:编译扩展模块

解决方法:
禁用此模块
[root@192 xtables-addons-3.28]# vim mconfig

报错3:编译扩展模块

解决方法:
继续上面的操作,禁用该模块


直到禁用这4个扩展模块后,就可以成功编译了。


看到这里,编译就算完成了。
报错4:编译安装

这个报错虽然不影响后续使用geoip这个模块,但是为了解决这个问题,不显示该错误。
解决方法:
这种情况的出现是由于无法签署内核模块,因为没有什么可签署的。 可以通过几个命令解决这个问题:
[root@192 xtables-addons-3.28]# cd /lib/modules/$(uname -r)/build/certs
[root@192 certs]# cat <<EOF > x509.genkey
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
CN = Modules
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
[root@192 certs]# openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem


再次编译安装就没有上面的错误了。


3、下载并加载geoip数据库
注册maxmind账号
https://www.maxmind.com/en/home
下载csv格式的数据库

默认指定的数据库路径是/usr/share/xt_geoip
[root@192 geoip]# mkdir /usr/share/xt_geoip
解压数据库
[root@192 geoip]# unzip GeoLite2-Country-CSV_20250718.zip
[root@192 geoip]# mv GeoLite2-Country-CSV_20250718/*.csv .
加载数据库
[root@192 geoip]# ./xt_geoip_build_maxmind -D /usr/share/xt_geoip/ *.csv
报错5:加载数据库
解决方法:
[root@192 geoip]# yum -y install perl-App-cpanminus

[root@192 geoip]# cpanm Net::CIDR::Lite


到这里加载数据库就算完成了。
4、加载geoip模块
临时加载模块方法:
[root@192 geoip]# modprobe xt_geoip
[root@192 geoip]# lsmod | grep xt_geoip



永久加载模块方法:
[root@192 ~]# echo 'xt_geoip' > /etc/modules-load.d/modules.conf
到这里整个安装过程就算都完成了。
更多推荐


所有评论(0)