我对 xtables-addons 有一个奇怪的问题,特别是 xt_geoip 模块。
我正在使用 Ubuntu 18.04.3 LTS x64 4.15.0-1051,所有软件包都已更新,
我安装了以下软件包:xtables-addons-common pkg-config xtables-addons-source libnet-cidr-lite-perl libtext-csv-xs-perl
并编译xtables-addons-3.5(最新版本)。
使用 xt_geoip_dl 和 xt_geoip_build 生成 GeoIP 数据库的过程正常,我可以看到模块 xt_geoip 已加载到内核(lsmod)中,而 geoip 已加载到 iptables(cat /proc/net/ip_tables_matches)中。
我的 iptables 配置很简单:它的目的是记录并丢弃所有来自未列入白名单的国家/地区的连接尝试,具体如下:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3607180:3023592144]
:GEOIP - [0:0]
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -d 10.0.0.0/8 -j ACCEPT
-A INPUT -d 172.16.0.0/12 -j ACCEPT
-A INPUT -d 192.168.0.0/16 -j ACCEPT
-A INPUT -i eth0 -m geoip ! --source-country IT,IE,GB -j GEOIP
-A OUTPUT -o lo -j ACCEPT
-A GEOIP -m limit --limit 2/min -j LOG --log-prefix "GEOIP-Dropped: "
-A GEOIP -j DROP
COMMIT
问题在于 GEOIP 链从未命中,实际上数据包数量为零:
# iptables -L -v -n
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4884K 3949M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
30094 2417K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 10.0.0.0/8
41 23221 ACCEPT all -- * * 0.0.0.0/0 172.16.0.0/12
0 0 ACCEPT all -- * * 0.0.0.0/0 192.168.0.0/16
0 0 GEOIP all -- eth0 * 0.0.0.0/0 0.0.0.0/0 -m geoip ! --source-country IT,IE,GB
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3609K packets, 3025M bytes)
pkts bytes target prot opt in out source destination
517K 810M ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
Chain GEOIP (1 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 2/min burst 5 LOG flags 0 level 4 prefix "GEOIP-Dropped: "
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
如果我尝试从其他国家的 IP 进行连接,则连接不会断开。
在最新内核升级之前,我运行的是 4.15.0-1043 版本,编译的 xtables-addons 版本是 3.3,所有 GEOIP 流程均运行顺利。
唯一奇怪的是,我在 /var/log/kern.log 中看到以下内容:
xt_geoip: loading out-of-tree module taints kernel.
xt_geoip: module verification failed: signature and/or required key missing - tainting kernel
由于内核模块已加载,这似乎只是一个警告。
有人能帮我解决这个问题吗?非常感谢
答案1
没关系,编译 xtables-addon 后需要重新启动服务器。