当前位置:首页 > 问答 > 正文

Linux 防火墙 如何查看linux防火墙状态的方法与步骤

如何查看Linux防火墙状态?手把手教你搞定

场景引入:为什么需要检查防火墙?

"奇怪,我的网站服务明明启动了,怎么外网还是访问不了?" 小张盯着屏幕挠头,隔壁工位的老王探头看了一眼:"八成是防火墙拦住了,你先看看防火墙状态吧!"

在Linux系统中,防火墙就像大楼的保安,控制着哪些网络流量可以进出,无论是排查网络问题还是配置新服务,了解防火墙状态都是必备技能,下面我就用最直白的方式,教你几种查看防火墙状态的方法。


主流防火墙工具检查方法

方法1:iptables(传统防火墙)

如果你的系统还在使用经典的iptables(比如CentOS 6或某些老系统),试试这些命令:

# 查看所有规则(包含输入/输出/转发链)
sudo iptables -L -n -v
# 只看INPUT链的规则(常用)
sudo iptables -L INPUT -n -v

输出示例

Chain INPUT (policy ACCEPT 100 packets, 15000 bytes)
 pkts bytes target     prot opt in     out     source               destination
   50  3000 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 DROP       tcp  --  *      *       192.168.1.100        0.0.0.0/0            tcp dpt:22

怎么看懂

  • policy ACCEPT表示默认允许所有流量
  • 下方列表显示具体规则,比如第二条就是阻止192.168.1.100通过SSH连接

方法2:firewalld(主流现代系统)

现在大多数Linux发行版(如CentOS 7+/RHEL/Fedora)都用firewalld:

Linux 防火墙 如何查看linux防火墙状态的方法与步骤

# 查看运行状态
sudo firewall-cmd --state
# 获取详细信息(包含活跃区域和规则)
sudo firewall-cmd --list-all

典型输出

running  # 表示防火墙正在运行
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: ssh dhcpv6-client http
  ports: 8080/tcp
  forward: no

关键信息

  • running表示防火墙已启用
  • services列出允许的服务(如ssh/http)
  • ports显示额外开放的端口(比如这里的8080)

方法3:ufw(Ubuntu系最爱)

Ubuntu/Debian用户常用的简化工具ufw:

# 查看状态(最简版)
sudo ufw status
# 详细模式(带规则编号)
sudo ufw status numbered

输出示例

Linux 防火墙 如何查看linux防火墙状态的方法与步骤

Status: active  # 防火墙已激活
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       192.168.1.0/24

特殊情况处理

情况1:防火墙服务未安装?

如果遇到"command not found",可能需要先安装:

  • firewalldsudo yum install firewalld(CentOS/RHEL)
  • ufwsudo apt install ufw(Ubuntu/Debian)

情况2:服务没启动?

用systemctl检查服务状态:

# 适用于firewalld
sudo systemctl status firewalld
# 适用于ufw
sudo systemctl status ufw

看到active (running)表示服务正常运行,如果是inactive,需要启动:

sudo systemctl start firewalld
sudo systemctl enable firewalld  # 设置开机自启

实用小技巧

  1. 快速检测端口是否开放

    Linux 防火墙 如何查看linux防火墙状态的方法与步骤

    sudo netstat -tuln | grep 80  # 检查80端口
  2. 临时关闭防火墙(调试用)

    sudo systemctl stop firewalld  # 停止firewalld
    sudo ufw disable              # 禁用ufw
  3. 查看防火墙日志

    sudo journalctl -u firewalld -f  # 实时查看firewalld日志
    sudo grep UFW /var/log/syslog    # 查看ufw日志

总结建议

  • 生产环境不要长期关闭防火墙
  • 修改规则前建议先备份:sudo iptables-save > ~/iptables_backup.txt
  • 不确定时可以用--dry-run参数测试规则(firewalld支持)

下次再遇到网络问题,先按这些方法检查防火墙状态,说不定一分钟就能解决问题!

发表评论