Linux防火墙firewalld列出已开放端口list-all命令
时间:2026-11-15 07:09 作者:emer 分类: Linux
前言
排查外部访问不通时,先要确认防火墙到底放行了哪些端口。CentOS7 默认 firewalld,firewall-cmd --list-all 一次列出所有开放的端口、服务和放行来源。本文讲解 list-all 输出解读、分区域查看、查某端口是否开放和新增放行。
操作步骤
1. 列出当前区域全部放行规则
sudo firewall-cmd --list-all
显示 target、services、ports、protocols、source。
2. 只看开放端口
sudo firewall-cmd --list-ports
3. 查看已放行服务
sudo firewall-cmd --list-services
4. 查某端口是否开放
sudo firewall-cmd --query-port=80/tcp
返回 yes/no。
5. 查看所有区域规则
sudo firewall-cmd --get-zones
sudo firewall-cmd --list-all-zones
6. 临时开放一个端口测试
sudo firewall-cmd --add-port=8080/tcp
永久开放加 --permanent 后 reload。
常见坑
- 只加 --add-port 没加 --permanent,重启后规则丢失。
- 规则加在别的 zone,当前活跃区域看不到。
- list-all 显示的是默认区域,多区域要分别查。
- 云服务器还有安全组,firewalld 通了外部仍可能被云组拦。
- 协议写 tcp/udp 别漏,ICMP 和端口分开。
- 修改永久规则后必须 firewall-cmd --reload 才生效。
- 服务名和端口等效,混用导致重复放行。
总结
firewall-cmd --list-all 一次看清端口、服务、来源,--query-port 单独判断某端口。永久规则加 --permanent 再 reload。注意区分 firewalld 与云安全组,规则加错区域是访问不通的常见原因。
遇到问题加QQ23979811 协助处理