我尝试添加此规则:
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 规则直接在服务器上安装,则无需执行此操作:安装已完成。