跳转到内容

防火墙把自己锁在门外了怎么办 ​

打开了数据中心或节点级防火墙之后,Web UI 打不开、SSH 连不上——这是配置防火墙时最常见的事故。这篇是专门针对防火墙导致失联的自救流程;如果是改了 IP、网桥配置导致的失联,请看改静态 IP 与失联自救,两篇的退路准备是通用的。

先确认这是防火墙问题,不是网络配置问题

判断方法:如果能 ping 通这台机器的管理 IP,但 Web UI(8006)和 SSH(22)都连不上,通常是防火墙挡住了这两个端口,而不是网络本身断了。如果连 ping 都不通,问题在更底层的网络配置,应该先看改静态 IP 与失联自救。

影响范围:取决于是哪一层防火墙锁死——数据中心级会影响所有节点和已启用防火墙的客户机;节点级只影响这台宿主机;客户机级只影响这台客户机,宿主机本身仍可正常访问。

前置条件:以下所有操作都假设你已经有物理控制台或 IPMI/BMC 访问,或者机器在手边。没有这些条件、只能远程访问的情况下,无法安全地自己解决这个问题,需要联系能物理接触机器的人,或者机房的远程指导(remote hands)。

回退方法:见下文按可行性排序的几种做法,核心思路都是「用不经过防火墙规则的方式登录,然后关闭或修正规则」。

第一步:物理控制台或 IPMI 登录 ​

接显示器和键盘,或者通过 IPMI/BMC 的远程控制台,用 root 登录。这一步不经过网络防火墙,本地控制台的登录本身不受防火墙规则影响。

第二步:判断锁在了哪一层 ​

先看数据中心级是不是开着:

sh
# 宿主机 shell(本地控制台)
cat /etc/pve/firewall/cluster.fw

看 [OPTIONS] 段的 enable 值。是 1 就说明数据中心总开关是开的,问题很可能出在这里,或者出在节点/客户机级的规则本身。

再看节点级:

sh
cat /etc/pve/nodes/$(hostname)/host.fw

第三步:先用最快的方式恢复访问 ​

做法一:临时停掉防火墙服务 ​

这是最快、影响面也最清楚的做法——暂时移除所有防火墙过滤,恢复访问后再慢慢排查规则问题。

sh
# legacy iptables 后端
systemctl stop pve-firewall

# 如果用的是 nftables 后端(proxmox-firewall)
systemctl stop proxmox-firewall

停掉服务等于暂时放行所有流量

这条命令会清空当前生效的所有防火墙规则(nftables 后端还会连带移除它建的两张表)。这是应急手段,不是长期方案,恢复访问后要立刻回到 Web UI 或配置文件里修正规则,不要就这么一直放着。

做法二:直接关闭数据中心总开关 ​

如果不想动服务运行状态,可以直接改配置:

sh
nano /etc/pve/firewall/cluster.fw

把 [OPTIONS] 段里的 enable 改成 0,保存。这个改动通过 pmxcfs 立即对集群生效,不需要额外 reload 命令。

做法三:把当前管理地址加进放行名单 ​

如果不想完全关闭防火墙,只是发现自己的地址没被放行,可以在本地控制台上编辑,把当前用来管理的 IP 加进 management 这个 IP 集合:

sh
nano /etc/pve/firewall/cluster.fw
text
[IPSET management]
203.0.113.10

保存后从远程重新尝试连接。这个改法风险更小,因为防火墙其余部分仍在正常工作。

第四步:确认恢复 ​

用另一台设备(不是刚才失联的那台)尝试:

sh
# 本地电脑
ssh root@<管理IP>

浏览器访问 https://<管理IP>:8006,确认能正常打开且证书告警属于预期(自签名证书)。

第五步:找到根因再重新启用 ​

先别急着重新打开总开关。回顾三级开关与默认策略和防火墙规则,检查最可能的几个原因:

  • 打开总开关前,management IP 集合或规则里没有包含你实际使用的管理地址。
  • 默认策略设成了 DROP/REJECT,但没有为 8006、22 端口单独加放行规则。
  • 改了管理网络(比如换了新网段),但 local_network 别名还是旧的范围,导致原本应该判定为「内部」的流量被当成了外部流量。
  • 客户机层面,网卡的 Firewall 勾选开着,但对应的放行规则没有覆盖客户机自己需要的服务端口。

修正之后,先在一台不重要的测试客户机或测试安全组上验证一遍,确认规则符合预期,再重新打开数据中心/节点级别的总开关。重新打开之前,同样要保证:这次你依然留了一个可行的退路。

常见问题 ​

已经把 enable 改成 0 了,但过一会儿又变回 1。 检查是不是有多人在管理这个集群,或者是不是通过 Web UI 又重新点了启用;也可能是编辑的文件路径不对(数据中心和节点两个 .fw 文件容易搞混)。

关掉了 pve-firewall 服务,但还是连不上。 说明问题不在防火墙,回到改静态 IP 与失联自救排查网络配置本身,比如 IP、路由、/etc/hosts 是否正确。

只是某一台客户机连不上,宿主机和其他客户机都正常。 问题范围缩小到这台客户机自己的防火墙规则或网卡 Firewall 开关,不需要动数据中心或节点级配置,直接编辑 /etc/pve/firewall/<vmid>.fw 或在 Web UI 里检查这台客户机的规则。

改完规则想重新启用防火墙,但担心再锁一次。 参考「安全打开的顺序」(见三级开关与默认策略):先确认自己的地址在放行范围内、保留一个已登录的会话不关、逐层验证之后再打开总开关。

参考资料 ​

延伸阅读 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。