正在运行的 Fedora Server 32 遭遇电源故障,随后 Firewalld 丢失了其配置;我该如何解决这个问题?

正在运行的 Fedora Server 32 遭遇电源故障,随后 Firewalld 丢失了其配置;我该如何解决这个问题?

做作业的时候,此服务器故障问题显示的错误消息相同,并且可能有相同的原因,但我到达那里的方式可能不同,并且可能提供线索。

在我的案例中,有问题的系统是少数几台执行防火墙/网关服务的服务器之一,这些服务器配置正确,运行良好。不幸的是,我们的不朽电源最近出现故障,而且在遭遇严重电力中断时还没有更换。(提示:永远不要让你的会计师说服你可以在没有电源保护的情况下暂时运行你的服务器!)

除了防火墙/网关盒之外,所有系统都恢复了。它重新启动正常,但防火墙的行为不符合配置,所以我去调查了。

我不记得盒子上的区域名称是什么,所以我注意到的第一件事是这个命令没有返回任何内容:

# firewall-cmd --get-active-zones

嗯。这很奇怪吗?因此,我获取了隐藏在根目录的主目录中的脚本,该脚本用于配置此系统的网络(以便于克隆),它似乎运行了各种防火墙命令,但不包括这些:

# firewall-cmd --add-interface=enp2s0 --zone=public
# firewall-cmd --add-interface=enp3s0 --zone=internal

相反,它发出了两个几乎完全相同的噪音:

Error: COMMAND_FAILED: 'python-nftables' failed: internal:0:0-0: Error: No such file or directory


JSON blob:
{"nftables": [{"metainfo": {"json_schema_version": 1}}, {"add": {"rule": {"family": "inet", "table": "firewalld", "chain": "filter_IN_public", "index": 4, "expr": [{"match": {"left": {"meta": {"key": "l4proto"}}, "op": "==", "right": {"set": ["icmp", "icmpv6"]}}}, {"accept": null}]}}}, {"add": {"rule": {"family": "inet", "table": "firewalld", "chain": "filter_FWDI_public", "index": 4, "expr": [{"match": {"left": {"meta": {"key": "l4proto"}}, "op": "==", "right": {"set": ["icmp", "icmpv6"]}}}, {"accept": null}]}}}, {"insert": {"rule": {"family": "inet", "table": "firewalld", "chain": "raw_PREROUTING_ZONES", "expr": [{"match": {"left": {"meta": {"key": "iifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "raw_PRE_public"}}]}}}, {"insert": {"rule": {"family": "inet", "table": "firewalld", "chain": "mangle_PREROUTING_ZONES", "expr": [{"match": {"left": {"meta": {"key": "iifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "mangle_PRE_public"}}]}}}, {"insert": {"rule": {"family": "ip", "table": "firewalld", "chain": "nat_PREROUTING_ZONES", "expr": [{"match": {"left": {"meta": {"key": "iifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "nat_PRE_public"}}]}}}, {"insert": {"rule": {"family": "ip6", "table": "firewalld", "chain": "nat_PREROUTING_ZONES", "expr": [{"match": {"left": {"meta": {"key": "iifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "nat_PRE_public"}}]}}}, {"insert": {"rule": {"family": "ip", "table": "firewalld", "chain": "nat_POSTROUTING_ZONES", "expr": [{"match": {"left": {"meta": {"key": "oifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "nat_POST_public"}}]}}}, {"insert": {"rule": {"family": "ip6", "table": "firewalld", "chain": "nat_POSTROUTING_ZONES", "expr": [{"match": {"left": {"meta": {"key": "oifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "nat_POST_public"}}]}}}, {"insert": {"rule": {"family": "inet", "table": "firewalld", "chain": "filter_INPUT_ZONES", "expr": [{"match": {"left": {"meta": {"key": "iifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "filter_IN_public"}}]}}}, {"insert": {"rule": {"family": "inet", "table": "firewalld", "chain": "filter_FORWARD_IN_ZONES", "expr": [{"match": {"left": {"meta": {"key": "iifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "filter_FWDI_public"}}]}}}, {"insert": {"rule": {"family": "inet", "table": "firewalld", "chain": "filter_FORWARD_OUT_ZONES", "expr": [{"match": {"left": {"meta": {"key": "oifname"}}, "op": "==", "right": "enp2s0"}}, {"goto": {"target": "filter_FWDO_public"}}]}}}]}

我对 不是很熟练python,但它似乎丢失了一些配置信息。如果它告诉我丢失了哪些文件,我可能能够从它的一个兄弟文件中恢复,或者也许还有其他方法。

另一个线索可能是,尽管所有其他配置命令都运行正常,尽管我可以看到更改,尽管我使用了--runtime-to-permanent,但重启后这些命令的结果丢失了,并且系统拒绝遵守其新配置的 IP 地址(基本上是在修复期间将其停止服务)并坚持要求它是旧的公共 IP。不行!所以,我只是拔掉了电缆。谢天谢地,私有接口确实重新配置正确,所以我们仍然可以访问它,而不必在控制台。

有想法吗?

我正在考虑删除相关的软件包并重新安装/重新配置 - 这些是:

firewalld-filesystem-0.8.3-1.fc32.noarch
python3-firewall-0.8.3-1.fc32.noarch
firewalld-0.8.3-1.fc32.noarch

但我还不太清楚是否存在我未考虑过的依赖关系或诸如此类的东西。...“刷新”这些包是否有机会?我想这是我发布这个问题后要做的第一件事!

相关内容