firewalld默认不限制出站流量,因其核心模型仅管理input链和入站规则,不支持output链配置;禁止出站需直接使用iptables或nftables操作output链。

firewalld 默认允许所有出站流量,不拦截服务器主动发起的连接。它主要设计用于管理入站(inbound)规则,对出站(outbound)方向不做限制——firewalld 本身不支持配置出站黑名单或拒绝特定端口的出站请求。
为什么 firewalld 不处理出站拒绝?
firewalld 的核心模型基于 zone + service + source,所有规则默认作用于 INPUT(入站)链;OUTPUT(出站)链在 firewalld 中被刻意忽略,既无 zone 关联,也不响应 --add-port、--add-rich-rule 等命令对出站方向的设置。
即使你尝试运行类似以下命令:
firewall-cmd --zone=public --remove-port=8080/tcp --permanent这只是移除“允许入站 8080”,不会影响本机是否能访问外部 8080 端口。
想禁止出站连接,得用 iptables 或 nftables
Linux 内核的 netfilter 框架支持 OUTPUT 链过滤,但 firewalld 不暴露该能力。你需要绕过 firewalld,直接使用底层工具:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 添加拒绝本机访问外部 TCP 3306 端口的规则:
sudo iptables -A OUTPUT -p tcp --dport 3306 -j REJECT
- 若需拒绝 UDP 出站(如 DNS 查询):
sudo iptables -A OUTPUT -p udp --dport 53 -j DROP
- 保存规则(CentOS/RHEL/Fedora):
sudo firewall-cmd --runtime-to-permanent(仅保存当前 firewalld 规则)sudo iptables-save > /etc/sysconfig/iptables(传统方式)
或使用 iptables-services 包并启用服务:sudo systemctl enable iptables
注意事项与替代建议
禁止出站可能影响系统基础功能(如 yum 更新、NTP 同步、DNS 解析),操作前请确认必要性。
- 优先考虑应用层控制:比如 MySQL 客户端不配置远程 host,或用
curl --connect-timeout限制连接行为 - 若必须系统级拦截,建议搭配
ipset管理 IP 列表,再通过 iptables 引用,便于批量维护 - 注意 firewalld 和 iptables 不能共存管理同一链——启用 firewalld 后,iptables 服务应禁用,否则规则冲突
验证是否生效
执行后测试出站连接:
telnet example.com 3306(应显示 Connection refused 或 timeout)sudo iptables -L OUTPUT -n --line-numbers(查看 OUTPUT 链中是否有对应 REJECT 规则)










