悠悠楠杉
Linux防火墙状态查看完全指南:firewall与iptables实战
一、防火墙管理的重要性
作为Linux系统管理员,防火墙状态检查是日常运维的核心工作。笔者曾遇到因未及时检查防火墙规则导致服务异常的案例——某次深夜紧急上线后,新部署的服务始终无法访问,最终发现是防火墙未放行端口。本文将用实战经验教你高效掌握防火墙状态查看技巧。
二、firewalld防火墙状态查看
2.1 基础状态检查
bash
查看运行状态(适用于CentOS/RHEL 7+)
sudo firewall-cmd --state
详细状态信息输出
sudo systemctl status firewalld
典型输出示例:
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since Wed 2023-05-17 09:15:32 CST; 2 days ago
2.2 高级功能检查
bash
查看当前活动区域
sudo firewall-cmd --get-active-zones
列出所有开放端口
sudo firewall-cmd --list-ports
查看富规则(Rich Rules)
sudo firewall-cmd --list-rich-rules
生产环境建议:定期使用--permanent
参数检查永久规则与运行时规则的差异:
bash
sudo firewall-cmd --list-all
sudo firewall-cmd --list-all --permanent
三、iptables防火墙状态查看
3.1 传统检查方式
bash
查看过滤表规则(最常用)
sudo iptables -L -n -v
带行号显示规则(方便删除修改)
sudo iptables -L --line-numbers
查看NAT表规则
sudo iptables -t nat -L -n
3.2 实用技巧组合
bash
查看规则命中计数器
sudo iptables -L -v | grep -E 'Chain|pkts'
追踪数据包匹配过程(调试神器)
sudo iptables -t raw -A OUTPUT -p icmp -j TRACE
常见问题:当同时存在firewalld和iptables时,建议使用iptables-save
查看最终生效规则:
bash
sudo iptables-save | less
四、UFW防火墙(Ubuntu系专用)
bash
简洁状态查看
sudo ufw status
详细规则输出
sudo ufw status verbose
查看应用配置文件
sudo ls /etc/ufw/applications.d/
五、深度实践案例
案例1:快速定位被拦截的SSH连接
bash
在firewalld中检查ssh服务
sudo firewall-cmd --list-services | grep ssh
在iptables中检查22端口
sudo iptables -L -n | grep ':22'
案例2:诊断Docker与防火墙冲突
bash
检查Docker生成的iptables链
sudo iptables -L DOCKER-USER -n
查看NAT表端口映射
sudo iptables -t nat -L -n
六、自动化监控建议
- 创建定期检查脚本:bash
!/bin/bash
echo "[$(date)] Firewall Status"
sudo firewall-cmd --state 2>/dev/null || sudo iptables -L -n
- 配置Zabbix监控项:
UserParameter=firewall.status[*], sudo /usr/bin/firewall-cmd --state 2>/dev/null || echo "iptables_active"
七、安全注意事项
生产环境修改规则前务必备份:
bash sudo iptables-save > /etc/iptables.rules.backup
避免直接使用
iptables -F
清空规则,可能导致瞬间失联
总结:掌握firewall-cmd
和iptables
的状态查看方法,就像获得了一把打开网络安全之门的钥匙。建议在日常工作中养成检查防火墙日志的习惯(journalctl -u firewalld
),这将帮助您快速定位80%的网络访问问题。记住:看得见的规则才是安全的规则!