永久放行tcp端口需三步:先确认firewalld运行并启用,再用--permanent在指定zone(如public)添加端口规则,最后执行--reload使配置生效,漏掉重载则规则不生效。

永久放行 TCP 端口,核心就三步:加规则、重载、验证。漏掉重载,规则只写进配置文件,实际并不生效。
确认 firewalld 正在运行
先确保服务已启动且开机自启:
- 检查状态:
sudo systemctl status firewalld - 若未运行,执行:
sudo systemctl start firewalld && sudo systemctl enable firewalld
指定 zone 并永久添加端口
firewalld 按区域(zone)管理策略,默认通常是 public。建议显式指定 zone,避免因默认值变更导致误配:
- 查看当前默认 zone:
firewall-cmd --get-default-zone - 永久开放 TCP 8080 端口(以 public zone 为例):
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent - 如需开放端口段(比如 9000–9010):
sudo firewall-cmd --zone=public --add-port=9000-9010/tcp --permanent
必须重载配置才能生效
加了 --permanent 只是保存到磁盘配置,不 reload 就不加载进内存运行时:
- 执行重载:
sudo firewall-cmd --reload - 验证是否成功加载:
firewall-cmd --list-ports(显示当前运行时开放的端口) - 对比确认持久配置:
firewall-cmd --permanent --list-ports(应与上一条一致,否则说明 reload 漏了)
额外建议:优先用服务名,限制源 IP 更安全
如果端口对应标准服务(如 HTTP、SSH),推荐用服务名代替端口号,语义清晰且自动适配协议:
- 例如:
sudo firewall-cmd --permanent --add-service=http(等效于开放 TCP 80) - 如只需特定 IP 访问该端口,用富规则限制来源:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" port port="8080" protocol="tcp" accept'











