You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian 11环境下Fail2ban使用nftables执行封禁操作失败问题求助

Debian 11环境下Fail2ban使用nftables执行封禁操作失败问题求助

看起来你在Debian 11上用Fail2ban配合nftables做WordPress封禁时碰了壁,核心问题是nft add set命令执行失败,连带后续的规则添加也跟着报错了。我来帮你一步步排查解决:

先抓核心问题

从日志里能看到两个关键错误:

  1. 创建set时的Numerical result out of range
  2. 后续引用不存在的set导致的No such file or directory

第二个错误是第一个错误的连锁反应,所以咱们先搞定set创建失败的问题。

第一步:手动验证set创建命令

先直接在终端里手动执行Fail2ban尝试运行的set创建命令,看能不能成功:

nft add set inet f2b-table addr-set-wordpress { type ipv4_addr; }
  • 如果这行命令直接报和日志里一样的错:

    1. 先确认你的f2b-table确实存在:
      nft list table inet f2b-table
      
    2. 如果table存在,试试给set加上flags interval参数(虽然ipv4_addr类型默认不需要,但某些环境下可能需要这个声明):
      nft add set inet f2b-table addr-set-wordpress { type ipv4_addr; flags interval; }
      
    3. 检查你的nftables版本:Debian 11默认是0.9.8,执行nft --version确认,稳定版的版本一般没问题,但如果版本过低可以尝试更新。
  • 如果手动执行命令成功,那问题出在Fail2ban的执行环境或配置上:

    1. 打开Fail2ban的nftables动作配置文件/etc/fail2ban/action.d/nftables.conf,看看里面默认的set创建模板是不是和你手动执行的有差异——比如默认可能同时兼容ipv4和ipv6,而你的环境只需要ipv4,这时候可以在jail配置里明确指定family。

第二步:调整Fail2ban的jail配置

在你的jail.local的[wordpress]节里加上family = inet4,明确指定只针对ipv4,避免Fail2ban尝试创建兼容ipv6的set:

[wordpress]
enabled = true
banaction = nftables[type=multiport]
filter = wordpress
maxretry = 2
bantime = 1h
findtime = 1d
port = http,https
logpath = /var/log/apache2/*access*.log
family = inet4  # 新增这一行,限定为ipv4

第三步:清理现有冲突规则并重启Fail2ban

有时候已存在的table/chain/set可能会导致创建冲突,先清理掉现有f2b相关的nft规则,再重启Fail2ban让它重新创建:

nft delete table inet f2b-table
systemctl restart fail2ban

之后查看Fail2ban的日志,看是否还有报错。

第四步:逐行执行Fail2ban的动作脚本

把日志里Fail2ban执行的完整命令复制出来,逐行执行,精准定位哪一步出问题:

nft add table inet f2b-table
nft -- add chain inet f2b-table f2b-chain { type filter hook input priority -1 ; }
nft add set inet f2b-table addr-set-wordpress { type ipv4_addr; }
for proto in $(echo 'tcp' | sed 's/,/ /g'); do
nft add rule inet f2b-table f2b-chain $proto dport { $(echo 'http,https' | sed s/:/-/g) } ip saddr @addr-set-wordpress reject
done

比如如果add chain报错,说明这个chain已经存在,跳过这一步直接执行后续命令,看set创建是否正常。

另外提个小细节:你的现有nft规则里chain的优先级是filter -1,和Fail2ban执行的priority -1是等价的(因为filter钩子默认优先级是0),这部分没问题不用调整。

备注:内容来源于stack exchange,提问作者Michael T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:54:30