|
|
在防火墙运维中,快速定位和解决问题是关键。以下是一套完整的防火墙排错命令全集,涵盖状态检查、规则验证、日志分析、连接跟踪等核心场景,帮助管理员高效排查故障。
一、基础状态检查
- systemctl status firewalld # CentOS/RHEL (firewalld)
- ufw status # Ubuntu (UFW)
- iptables -L -v -n # 传统iptables(需root权限)
复制代码
- 关键点:确认防火墙是否运行,规则是否加载。
- 检查默认策略
- iptables -L | grep "policy" # 查看默认链策略(ACCEPT/DROP)
复制代码
二、规则验证与调试
- iptables -L -v -n --line-numbers # 显示规则、数据包/字节计数、行号
复制代码
- 用途:通过计数器判断规则是否被命中,定位未生效的规则。
- 模拟规则匹配(不实际修改)
- iptables -t filter -C INPUT -p tcp --dport 80 -j ACCEPT # 检查规则是否存在
- # 或使用nftables(现代系统):
- nft list ruleset
复制代码
- iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT # 插入到链顶部测试
复制代码
三、连接与端口排查
- conntrack -L # 显示所有活动连接(需conntrack模块)
- ss -tulnp | grep <端口> # 检查端口监听状态
复制代码
- iptables -t nat -L -v -n # 查看NAT表规则
复制代码
四、日志分析与故障定位
- iptables -I INPUT -j LOG --log-prefix "FIREWALL DROP: " # 记录被丢弃的包
复制代码
- tail -f /var/log/kern.log | grep 'FIREWALL' # 动态跟踪日志
复制代码
- dmesg | grep -i firewall # 查看内核级防火墙相关错误
复制代码
五、高级诊断工具
- tcpdump -i eth0 port 80 and host 192.168.1.100 # 抓取特定流量
复制代码
- 场景:验证流量是否到达防火墙,或被规则拦截。
- 检查模块加载状态
- lsmod | grep ip_tables # 确认iptables模块已加载
- modprobe ip_tables # 手动加载模块(如未加载)
复制代码
- ip netns exec <namespace> iptables -L # 检查容器/命名空间内的规则
复制代码
六、常见问题速查表
| 问题现象 | 可能原因 | 排查命令 |
|---------------------------|--------------------------------|--------------------------------------|
| 端口无法访问 | 规则未放行、服务未监听、NAT错误 |, |
| 连接被重置(RST) | 状态规则不匹配、连接跟踪异常 |,|
| 规则修改不生效 | 规则顺序错误、策略为DROP |- iptables -L -v --line-numbers
复制代码 |
| 日志无记录但连接失败 | 日志规则未配置、日志模块未加载 |, 检查规则是否存在 |
七、恢复与备份
- iptables-save > /etc/iptables/rules.v4 # 传统方式
- nft list ruleset > /etc/nftables.conf # nftables
复制代码
- iptables -P INPUT ACCEPT # 临时开放(慎用!完成后需恢复)
复制代码
八、自动化辅助工具
- (firewalld):动态管理规则,支持区域和服务。
- (nftables):现代防火墙框架,替代iptables。
- 或:通过配置管理工具批量部署规则。
通过以上命令组合,可以系统化地排查防火墙配置错误、流量拦截、连接异常等问题。建议结合具体场景(如Web服务、VPN、容器网络)针对性分析。 |
|