想确认 Linux 服务器有没有防火墙设置,最快的方法是登录后依次执行 systemctl status firewalld、sudo ufw status verbose、sudo iptables -L -n -v,再回到云控制台检查安全组;结论是系统防火墙、内核规则和云安全组要分开看,任何一层拦截都会让端口不通。
Linux服务器防火墙状态怎么查看:先分清三层防线
Linux 里的“防火墙”不是一个单独开关,它通常分成三层:系统服务层、内核包过滤层、云平台安全组层,行业共识认为,只查其中一层,很容易误判。
| 层级 | 常见工具 | 查看命令 | 判断重点 |
|---|---|---|---|
| 系统服务层 | firewalld、ufw | systemctl status firewalld、ufw status verbose |
服务是否运行,规则是否启用 |
| 内核包过滤层 | iptables、nftables | iptables -L -n -v、nft list ruleset |
实际过滤规则是否存在 |
| 云平台层 | 安全组、网络 ACL | 云控制台查看 | 入站、出站端口是否放行 |
系统服务层:firewalld与ufw
多数现代发行版默认使用 firewalld 或 ufw,前者常见于 CentOS、RHEL、Rocky Linux、AlmaLinux,后者常见于 Ubuntu、Debian。
查看 firewalld:
systemctl status firewalldfirewall-cmd --statefirewall-cmd --list-allfirewall-cmd --list-ports
如果输出 running,说明 firewalld 正在运行。--state 返回 not running,说明服务层没有启用。
查看 ufw:
sudo ufw statussudo ufw status verbosesudo ufw status numbered
如果返回 Status: inactive,表示 ufw 未启用,返回 active,就要继续看放行规则。
内核包过滤层:iptables与nftables
有些服务器没有 firewalld 或 ufw,但内核里仍有 iptables 或 nftables 规则,安全软件、Docker、Kubernetes、云监控代理都可能写入规则。
查看 iptables:
sudo iptables -L -n -vsudo iptables -Ssudo iptables -t nat -L -n -v
查看 nftables:
sudo nft list rulesetsudo nft list tables
iptables -S 输出大量 -A 规则,说明内核层存在过滤,如果只有默认策略 -P INPUT ACCEPT
,且没有额外规则,通常表示没有明显拦截。
云平台安全组层:别只盯着SSH
云服务器还有一层安全组,它不在 Linux 系统内,但会直接决定外部能否访问,近年来,多数云厂商都把安全组作为默认网络防护。
检查路径通常是:
- 登录云控制台
- 找到实例详情
- 查看安全组或防火墙
- 检查入站规则是否放行 22、80、443 等端口
- 检查出站规则是否限制
CentOS查看防火墙是否开启和Ubuntu有什么区别
不同发行版的默认工具不同,排查时不要用 Ubuntu 的命令去套 CentOS,也不要用 CentOS 的思路判断 Ubuntu。
CentOS/RHEL:firewalld常用命令
CentOS 7 以后默认使用 firewalld,常用查看命令:
systemctl status firewalldfirewall-cmd --statefirewall-cmd --get-default-zonefirewall-cmd --list-all-zonesfirewall-cmd --list-servicesfirewall-cmd --list-ports
如果只想看当前生效区域:
firewall-cmd --get-active-zonesfirewall-cmd --zone=public --list-all
临时关闭 firewalld 可用于测试,但不建议长期关闭:
systemctl stop firewalldsystemctl disable firewalld
Ubuntu/Debian:ufw常用命令
Ubuntu 常见 ufw,查看命令:
sudo ufw statussudo ufw status verbosesudo ufw show addedsudo ufw status numbered
ufw 未安装,可以执行:
which ufwdpkg -l | grep ufw
没有 ufw 不代表没有防火墙,可能还有 iptables、nftables 或云安全组。
多个工具同时存在时以谁为准
业内专家指出,判断防火墙是否生效,不能只看服务状态,要看实际包过滤规则和外部连通性,一个实用顺序是:
- 先看云安全组。
- 再看 firewalld 或 ufw 服务。
- 再看 iptables、nftables 规则。
- 最后从外部测试端口。
云服务器上怎么检查防火墙有没有开:控制台与系统双线排查
云服务器场景更复杂,系统里看起来放行了,外部仍可能不通,原因常常在安全组。
国内云服务器查看防火墙设置时,先看安全组
国内云服务器查看防火墙设置时,先看安全组,路径通常是:控制台 → 云服务器 → 实例 → 安全组 → 入站规则,重点看:
- 22 端口是否只允许你的公网 IP
- 80、443 是否对
0.0.0/0放行 - 是否有拒绝所有入站的规则
- 是否绑定了多个安全组,规则叠加
安全组规则有优先级,拒绝规则可能覆盖允许规则。
SSH端口不通的排查顺序
SSH 连不上时,按这个顺序查:
- 本地
ping服务器公网 IP,判断网络是否可达。 telnet IP 22或nc -zv IP 22,判断端口是否开放。- 云控制台查安全组 22 端口。
- 系统内查
systemctl status sshd。 - 系统内查
ss -lntp | grep :22。 - 查 firewalld、ufw、iptables 是否拦截 22。
用监听与外部探测验证
系统内查看监听端口:
ss -lntpnetstat -lntp
外部探测:
nc -zv 服务器IP 端口telnet 服务器IP 端口curl -v http://服务器IP:端口
如果系统内 ss 显示监听,但外部 nc 不通,优先查安全组和系统防火墙。
宝塔面板Linux服务器防火墙怎么看:面板与命令行对照
宝塔面板用户常遇到“面板放行了,端口还是不通”,这时要区分面板防火墙插件和系统防火墙。
宝塔安全菜单与系统防火墙的关系
宝塔面板的“安全”菜单通常管理面板层放行规则,它可能调用 firewalld、ufw 或 iptables,查看时不要只看面板界面。
建议并行检查:
- 宝塔面板 → 安全 → 查看放行端口
firewall-cmd --list-portssudo ufw status numberedsudo iptables -S- 云控制台安全组
面板放行后仍不通怎么办
按下面顺序处理:
- 确认云安全组已放行。
- 确认系统防火墙已放行。
- 确认服务正在监听
0.0.0,而不是仅0.0.1。 - 确认 SELinux 或 AppArmor 没有额外限制。
- 使用
nc从外部测试。
如果服务只监听 0.0.1:端口,外部访问一定失败,这不是防火墙问题,而是监听地址问题。
免费查看Linux服务器防火墙状态的方法:巡检脚本与基线对比
日常运维不需要付费工具,用系统命令就能完成免费查看 Linux 服务器防火墙状态的方法。
一条组合命令快速巡检
可以执行:
echo '== firewalld ==' systemctl is-active firewalld 2>/dev/null firewall-cmd --state 2>/dev/null firewall-cmd --list-ports 2>/dev/null echo '== ufw ==' sudo ufw status verbose 2>/dev/null echo '== iptables ==' sudo iptables -S 2>/dev/null echo '== nft ==' sudo nft list ruleset 2>/dev/null echo '== listen ==' ss -lntp
这段命令覆盖服务、规则和监听端口,输出可以保存为文件。
保存基线并定期对比
建议保存基线:
date >> /tmp/fw-check.txtiptables -S >> /tmp/fw-check.txtfirewall-cmd --list-all >> /tmp/fw-check.txtufw status verbose >> /tmp/fw-check.txt
下次出现异常时,用 diff 对比变化,这样能快速发现规则被改动。
常见误区与判断标准
服务未运行不等于没有防火墙
firewalld 停止,不代表没有 iptables 规则,Docker 启动后常会写入 nat 和 filter 规则,查看 iptables -S 更可靠。
规则为空不等于没有拦截
规则为空,但默认策略可能是 DROP,查看:
iptables -Siptables -L -n -vnft list ruleset
如果看到 -P INPUT DROP,即使没有额外规则,也会拦截入站。
Docker与Kubernetes会改动规则
Docker 会管理 iptables 规则,Kubernetes 会使用 NetworkPolicy、kube-proxy,这类环境不能只看 firewalld 或 ufw,需要同时查:
iptables -t nat -L -n -viptables -L DOCKER-USER -n -vkubectl get networkpolicy- 云安全组
查看 Linux 服务器有没有防火墙设置,核心是同时确认云安全组、系统防火墙服务和内核包过滤规则,只查一层就下结论,很容易把安全组拦截误判成系统防火墙问题。
查看Linux服务器防火墙设置常见问题Q&A
怎么查看Linux服务器有没有防火墙设置?
登录服务器后执行 systemctl status firewalld、sudo ufw status verbose、sudo iptables -L -n -v、sudo nft list ruleset,再检查云控制台安全组,服务运行、规则非空、安全组有限制,都说明存在防火墙设置。
firewalld和iptables同时存在,以哪个为准?
以实际生效的内核规则和外部连通性为准,firewalld 底层通常调用 nftables 或 iptables,查看 firewall-cmd --list-all 和 iptables -S,再用 nc 从外部测试端口,才能判断最终效果。
云服务器安全组和系统防火墙哪个优先?
外部流量先经过云安全组,再到系统防火墙,安全组拒绝时,系统防火墙放行也无法建立连接。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/709766.html





