我尝试添加此规则:
iptables -A INPUT -m geoip ! --src-cc CZ,SK -j DROP
我根据这个答案设置了 GeoIP 支持:Ubuntu IPTables allow only allow 1 country | 超级用户
但它不起作用,因为我收到消息: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
我该如何解决?
链接的 Q/A 不完整。除了用户空间工具之外,您还需要内核方面的等效工具:您必须安装包
xtables-addons-dkms
。注意是推荐,所以安装前者应该要么安装了后者,要么提到了推荐。不这样做会严重限制.xtables-addons-common
xtables-addons-dkms
xtables-addons-common
请注意,它会拉取
dkms
. 确保你得到了这个linux-headers-4.9.0-4-amd64
包,因为它不是最新的可用并且可能不会被自动拉取。如果这对于生产系统来说是可以理解的,那么它必须安装在开发系统上,并且必须手动运行。确切的命令可能取决于目标内核的版本:
新构建的包发现:
然后可以安装在生产服务器上(连同
xtables-addons-common
软件包)。再说一遍:
dkms mkbmdeb ...
只需要“两阶段”安装。如果xtables-addons-dkms
使用 iptables 规则直接安装在服务器上,则不必这样做:安装已经处理好了。