【问题标题】:centos 8, firewalld error `COMMAND_FAILED: 'python-nftables' failed`centos 8,firewalld错误`COMMAND_FAILED:'python-nftables'失败`
【发布时间】:2022-01-07 14:09:25
【问题描述】:

当我尝试重新加载 firewalld 时,它会告诉我

Error: COMMAND_FAILED: 'python-nftables' failed: internal:0:0-0: Error: Could not process rule: Numerical result out of range


JSON blob:
{"nftables": [{"metainfo": {"json_schema_version": 1}}, {"add": {"chain": {"family": "inet", "table": "firewalld", "name": "filter_IN_policy_allow-host-ipv6"}}}]}

不知道是什么原因,google了之后还是没有解决

【问题讨论】:

    标签: python linux centos8 firewalld


    【解决方案1】:

    我收到了同样的错误信息。我在 firewalld 上启用了详细调试并跟踪日志以进行更深入的研究。在我的情况下,异常最初发生在“361”行的“nftables.py”中。

    例外:

    2022-01-23 14:00:23 DEBUG3: : 使用 JSON blob 调用 python-nftables: {"nftables": [{"metainfo": {"json_schema_version ": 1}}, {"add": {"chain": {"family": "inet", "table": "firewalld", "name": "filter_IN_policy_allow-host-ipv6"}}}]} 2022-01-23 14:00:23 DEBUG1:回溯(最近一次通话最后): 文件“/usr/lib/python3.6/site-packages/firewall/core/fw.py”,第 888 行,在规则中 backend.set_rule(规则,self._log_denied) 文件“/usr/lib/python3.6/site-packages/firewall/core/nftables.py”,第 390 行,在 set_rule self.set_rules([rule], log_denied) 文件“/usr/lib/python3.6/site-packages/firewall/core/nftables.py”,第 361 行,在 set_rules raise ValueError("'%s' failed: %s\nJSON blob:\n%s" % ("python-nftables", error, json.dumps(json_blob))) ValueError:'python-nftables'失败:内部:0:0-0:错误:无法处理规则:数值结果超出范围

    “nftables.py”中的第 361 行:

    self._loader(config.FIREWALLD_POLICIES, "policy")

    为什么会出现这个问题:
    基本上 nftables 是一个后端服务,而 firewalld 是一个前端服务。它们相互依赖才能发挥作用。每次重新启动 firewalld 时,它都必须协调后端,在这种情况下是 nftables。在协调过程中的某个时刻,python 代码中发生了冲突。这是不幸的,因为唯一真正的解决方案可能必须来自 nftables 的代码改进,即它如何能够将策略填充到链和表中。

    解决方法:
    好消息是,如果你和我一样,你不使用 ipv6,在这种情况下,我们只是禁用策略而不是解决问题。我将把解决步骤放在下面。

    解决步骤:
    删除策略的正确方法是使用命令 "firewall-cmd --delete-policy=allow-host- ipv6 --permanent" 但我在尝试执行此操作时在 python 中遇到了其他错误和异常。由于我不关心 ipv6,我从配置中手动删除了 XML 并重新启动了 firewalld 服务。

    rm /usr/lib/firewalld/policies/allow-host-ipv6.xml

    rm /etc/firewalld/policies/allow-host-ipv6.xml

    systemctl 重启防火墙

    旁注: 一旦我解决了这个冲突,我在 nftables/iptables/fail2ban 之间也有一些额外的冲突,必须清除。为此,我只是使用命令“fail2ban-client unban --all”来让fail2ban擦除它添加到iptables的所有链。

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 2020-08-31
      • 1970-01-01
      • 2021-08-19
      • 2016-01-17
      • 2015-11-27
      • 2016-03-27
      • 1970-01-01
      • 2016-05-14
      相关资源
      最近更新 更多