为什么需要关注Proxmox VE的防火墙革新?
在Proxmox VE最新的官方文档(2026年1月版)中,一个低调但重要的技术切换正在进行:官方正在使用 nftables 全面重构其防火墙系统,标志着 iptables 时代的逐步落幕。
本文将解读官方文档的核心信息,通过对比表格、关键变化和操作指南,帮助你在5分钟内搞清楚新防火墙的升级重点,评估它是否适合你的测试或生产环境,并掌握安全启用与回滚的方法。
新老防火墙核心对比速览
下面的表格可以让你快速了解 proxmox-firewall(新版,基于nftables)与 pve-firewall(旧版,基于iptables)的主要区别:
| 维度 |
旧版 pve-firewall |
新版 proxmox-firewall |
| 底层框架 |
iptables |
nftables |
| 生产状态 |
稳定 |
Tech Preview(技术预览版) |
| 配置语法 |
完全相同 |
100% 兼容旧配置文件 |
| 性能 |
中等 |
理论更高(内核级 nft) |
| 策略差异 |
支持 REJECT |
对访客流量仅 DROP |
| 桥接行为 |
自动创建 fwbrX 接口 |
Linux 桥不再创建 fwbrX |
| NDP/RA/DHCP |
受默认策略控制 |
强制放行(无视默认策略) |
| 回滚难度 |
—— |
修改1个开关 + 重启虚拟机即可 |
新防火墙的六大核心变化
-
无感迁移
现有的防火墙配置文件(如 /etc/pve/nodes/<节点名>/host.fw 和虚拟机/容器的防火墙规则)无需任何修改。切换底层框架后,现有配置可直接生效。
-
桥接“瘦身”
在旧版中,为应用防火墙规则,每台虚拟机(VM)或容器(CT)的网络接口前都会自动创建一个名为 fwbrX 的虚拟桥接接口。新版利用了 Linux 桥和 nftables 在内核层面的深度集成,可以直接在桥接设备上过滤流量,使虚拟网络拓扑更加清晰简洁。这对于理解和管理网络/系统层面的连接非常有帮助。
-
REJECT 行为的调整
新版防火墙在处理虚拟机或容器的流量时,只支持 DROP 动作,不再支持 REJECT。这意味着被拒绝的连接将直接丢弃数据包,而不会向客户端返回“端口不可达”的 ICMP 回应。虽然这对某些排障场景(如快速判断端口状态)略有不便,但减少了生成拒绝响应的 CPU 开销。
-
关键协议强制放行
这是一个重要的安全增强。即使你将防火墙的默认策略设置为 DROP,对于 IPv6 邻居发现(NDP)、路由通告(RA)和 DHCP 等关键的网络发现和地址分配协议,防火墙会自动插入白名单规则,确保基础网络功能不会因防火墙策略而中断,避免了“一开防火墙,网络就瘫痪”的情况。
-
更严格的连接跟踪(conntrack)逻辑
旧版防火墙在处理流量时,如果连接已存在于连接跟踪表中(例如由已放行的回包建立),通常会直接放行。而新版要求每条防火墙规则都会独立判断一次,即使连接已在跟踪表中。这提升了安全策略执行的严格性,但在高并发、大流量的生产环境中,可能需要关注其对性能的潜在影响并进行压测。
-
自定义表的规则隔离
proxmox-firewall 服务只管理其专属的两张 nftables 表:proxmox-firewall 和 proxmox-firewall-guests。这意味着,如果你需要手动编写自定义的 nftables 规则,可以创建自己的新表,完全不会与 Proxmox VE 管理的规则发生冲突,管理起来更加清晰,对于喜欢深度定制运维/DevOps/SRE环境的用户来说是个好消息。
五步尝鲜:从旧版迁移到 nftables 预览版
你可以通过以下步骤在测试环境中启用新防火墙:
# 1. 在所有集群节点上安装新包
apt update && apt install proxmox-firewall
# 2. 启用 nftables 支持(二选一)
# 方式一:Web管理界面
# 路径:数据中心 → 节点 → 防火墙 → 选项 → 设置“nftables”为“是”
# 方式二:命令行
echo "nf_tables: 1" >> /etc/pve/nodes/$(hostname)/host.fw
# 3. 重启防火墙服务,并重启所有虚拟机/容器(必须!)
# 重启服务使新配置生效
systemctl restart proxmox-firewall
# 重启VM以应用新的桥接过滤规则(旧iptables规则可能仍驻留在内存中)
for vm in $(qm list | awk 'NR>1{print $1}'); do qm reboot $vm; done
# 容器同理:pct restart <CTID>
# 4. 验证是否生效
systemctl status proxmox-firewall
nft list ruleset | grep proxmox # 应能看到 proxmox-firewall 相关表
# 5. 如何回滚(如果遇到问题)
# 删除启用开关
sed -i '/nf_tables/d' /etc/pve/nodes/$(hostname)/host.fw
# 重启旧防火墙服务并建议重启节点
systemctl restart pve-firewall && reboot
调试锦囊:三条命令解决大部分问题
当新防火墙行为不符合预期时,可以尝试以下调试命令:
# 1. 查看编译后的完整规则(JSON格式,便于分析)
PVE_LOG=trace /usr/libexec/proxmox/proxmox-firewall compile > fw_debug.json
# 2. 实时跟踪特定数据包(例如ICMP)
# 在独立的nft表中创建跟踪规则
nft -f - <<'EOF'
table bridge tracebridge
delete table bridge tracebridge
table bridge tracebridge {
chain trace { meta l4proto icmp meta nftrace set 1 }
chain prerouting { type filter hook prerouting priority -350; jump trace }
}
EOF
# 启动跟踪监视器
nft monitor trace # 按 Ctrl+C 停止
# 3. 调整日志级别,避免日志过多(“日志炸弹”)
systemctl edit proxmox-firewall
# 在打开的编辑器中加入以下内容并保存:
# [Service]
# Environment="PVE_LOG=info"
生产环境部署决策指南
技术预览版意味着它尚未被官方认定为完全稳定。以下决策卡可以帮助你判断:
| 场景 |
建议 |
| 全新部署或测试集群 |
✅ 大胆使用,遇到问题可轻松回滚。 |
| 承载7x24小时线上业务的集群 |
❌ 暂缓使用,建议等待官方发布正式版(GA)。 |
| 急需优化 IPv6 网络性能 |
⚠️ 谨慎评估,务必在模拟环境中进行充分压测,特别关注连接跟踪性能。 |
| 深度依赖自动化工具(Ansible/Terraform) |
✅ 可以测试,配置接口和格式完全不变,现有脚本无需修改。 |
总结
Proxmox VE 的开发策略非常清晰:将当下的“稳定性”锚定在成熟的 iptables 上,而将“未来”押注于更现代、性能潜力更大的 nftables 框架。
现在,你可以以近乎零成本的方式在非核心环境进行尝鲜。最关键的操作点在于:在切换后,务必记得重启受影响的虚拟机和容器,然后再进行流量测试。 当官方文档中移除“Tech Preview”标签之时,便是你可以安心迎接 Proxmox VE 防火墙全新时代的信号。
延伸阅读与资源
|