答案是启用或配置已预装的firewalld——因centos 7/8、rhel、fedora等默认自带firewalld,只需用firewall-offline-cmd离线配置规则并systemctl启动服务即可。

Linux 在无公网环境下离线安装防火墙管理工具,关键不是“安装工具”,而是**启用或配置已预装的 firewalld**——因为 CentOS 7/8、RHEL、Fedora 等主流发行版默认已自带 firewalld,它不依赖网络运行,只需正确配置即可使用。
确认 firewalld 是否已存在
大多数离线服务器其实已内置 firewalld(含 firewall-cmd 和 firewall-offline-cmd),无需额外安装:
- 执行 rpm -q firewalld —— 若返回类似
firewalld-0.9.12-3.el7_9.noarch,说明已安装 - 检查命令是否存在:which firewall-cmd 和 which firewall-offline-cmd
- 若提示 command not found,再考虑离线安装 RPM 包(见下文)
离线安装 firewalld(极少数精简系统场景)
仅当系统被最小化裁剪(如某些定制镜像)导致 firewalld 缺失时,才需手动补装。操作分两步:
-
在同版本联网机上下载完整依赖包:
yum install -y yum-utilsyumdownloader --resolve --destdir=/tmp/firewalld-pkgs firewalld -
复制到离线机并安装:
cd /tmp/firewalld-pkgsrpm -Uvh *.rpm --nodeps(如遇依赖冲突,改用--force --nodeps强制安装,但需确保 glibc、systemd 等基础库已存在)
离线配置防火墙规则(核心能力)
即使 firewalld 服务未运行,也能用 firewall-offline-cmd 直接修改配置文件:
- 开放 TCP 80 端口:
firewall-offline-cmd --add-port=80/tcp --permanent - 允许 HTTP 服务:
firewall-offline-cmd --add-service=http --permanent - 设默认区域为 public:
firewall-offline-cmd --set-default-zone=public - 验证配置语法:
firewall-offline-cmd --check-config
所有操作直接写入 /etc/firewalld/ 下的 XML 文件,下次启动 firewalld 或执行 systemctl start firewalld 后自动生效。
启动并启用 firewalld 服务
完成配置后,在离线环境中启用服务:
- 启动服务:
systemctl start firewalld - 开机自启:
systemctl enable firewalld - 确认状态:
systemctl status firewalld(应显示 active (running))
注意:firewalld 不需要公网,只依赖本地 systemd 和配置文件,离线环境完全可正常运行。











