无法在 iptables 中设置 GeoIP 规则

无法在 iptables 中设置 GeoIP 规则

我尝试添加此规则:

iptables -A INPUT -m geoip ! --src-cc CZ,SK -j DROP

我根据这个答案设置了 GeoIP 支持:Ubuntu IPTables 仅允许 1 个国家/地区 | 超级用户

但它不起作用,因为我收到消息:iptables:No chain/target/match by that name.

我使用 Debian 9。

更新:

运行后结果uname -a

Linux Andromeda 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux

我该如何修复它?

答案1

链接的问答不完整。除了用户空间工具之外,您还需要内核端等效工具:您必须安装软件包xtables-addons-dkms。 注意xtables-addons-common 建议 xtables-addons-dkms,因此安装前者应该已经安装了后者,或者提到了建议。不这样做会严重限制 的实用性xtables-addons-common

注意,它将拉取所需的整个编译套件dkms. 确保你得到linux-headers-4.9.0-4-amd64包,因为它不是最新的可用包并且可能不会被自动拉取。

如果这对于生产系统来说是不可接受的,则必须将其安装在开发系统上,并且必须手动运行。确切的命令可能取决于目标内核的版本:

dkms mkbmdeb xtables-addons/2.12 -k 4.9.0-4-amd64

新建的包中发现:

find /var/lib/dkms/ -name 'xtables-addons*deb'

然后可以安装在生产服务器上(连同xtables-addons-common包裹)。

再次说明:dkms mkbmdeb ...仅用于“两阶段”安装。如果xtables-addons-dkms使用 iptables 规则直接在服务器上安装,则无需执行此操作:安装已完成。

相关内容