firewalld 端口放行
应用没有预置服务定义时,firewalld 按端口放行:支持单个端口、按协议区分以及连续端口段,来源限制通过富规则叠加。规则分运行时与永久两套,加 --permanent 后必须 reload 才落到运行时生效。它是 RPM 系发行版(openEuler、麒麟)的默认防火墙管理方式。
基本信息
| 适用平台 | RPM 系发行版,firewalld 服务 |
|---|---|
| 查看已放行 | firewall-cmd --list-ports |
| 放行端口 | firewall-cmd --add-port=8080/tcp --permanent |
| 端口段 | 9000-9010/tcp 形式 |
| 生效方式 | firewall-cmd --reload |
典型使用场景
- 新上服务的监听端口对外放行
- 数据库端口只允许指定网段访问
- 临时开放端口做迁移或联调,结束后回收
- 排查服务通了但端口被拦的问题
- 端口段批量放行,减少条目数量
端口操作
端口操作
firewall-cmd --list-ports # 查看当前放行的端口
firewall-cmd --add-port=8080/tcp --permanent # 放行单个 TCP 端口
firewall-cmd --add-port=8443/tcp --permanent
firewall-cmd --add-port=9000-9010/tcp --permanent # 连续端口段
firewall-cmd --remove-port=8080/tcp --permanent # 回收端口
firewall-cmd --reload # 让永久规则立即生效
firewall-cmd --query-port=8080/tcp # 单条确认是否已放行只允许指定网段访问数据库
只允许指定网段访问数据库
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.0.0/16 port port=3306 protocol=tcp accept' --permanent
firewall-cmd --reload
firewall-cmd --list-rich-rules # 复核规则内容常见问题对照
| 现象 | 原因 | 处理 |
|---|---|---|
| 规则加了不生效 | 只改永久未 reload | 执行 firewall-cmd --reload |
| 服务仍不可达 | 监听地址或上游设备拦截 | 查 ss -lntp 与网络路径 |
| UDP 服务不通 | 只放行了 TCP | 补放行同端口 /udp |
| 规则看不到 | 查看的是运行时列表 | 加 --permanent 或 reload 后再看 |
分散的多个端口建议写进自定义服务文件统一维护;直接堆端口条目会让审计与交接变得困难,服务名也更便于理解用途。
放行前检查
- 确认服务确实在监听:ss -lntp 看端口与进程
- 确认监听地址不是仅本地回环
- 放行后从客户端侧实际验证连接
- 记录放行用途与申请人,便于日后回收
- 把变更同步到配置文档与监控白名单
端口段与自定义服务的选择:同一应用的多个固定端口建议写成 service 文件长期维护,端口段更适合临时联调场景。