在linux运维排查网络故障的时候,最常见的疑问就是“业务连不通,会不会是防火墙策略拦截了?”,靠猜测修改规则远不如直接查看拦截统计来得高效,接下来就给大家整理不同防火墙架构下,查看拦截详细统计的实用方法。
iptables:原生防火墙的内置统计
很多自定义防火墙规则的老服务器仍在使用iptables,它本身自带内置规则计数功能,不需要安装额外工具。直接执行命令`iptables -l -n -v`就能输出所有规则的详细统计:参数-l表示列出所有规则,-n关闭ip反解析能大幅加快输出速度,-v开启详细统计信息。输出结果中,每一条规则前都会标注`pkts`(匹配数据包总数)和`bytes`(匹配总字节数),如果规则动作配置为drop或reject,这两个数值就是被该规则拦截的网络连接总统计。如果要查看nat等其他表的拦截统计,只需要加上`-t`参数指定表名,比如`iptables -t nat -l -n -v`。如果需要从零统计新的请求,可以执行`iptables -z`清空所有现有计数,方便排查新问题。

firewalld:主流发行版默认防火墙的统计方法
当前centos 7+、ubuntu 20.04+等主流发行版默认都用firewalld做防火墙管理,查看拦截统计非常便捷。直接执行`firewall-cmd --statistics --zone=public`,就能输出对应区域下所有规则的处理统计,包括允许、拒绝、转发的数据包总数,被拦截的连接数一目了然。如果使用图形界面管理,打开自带的firewall-config工具,选中对应区域后就能直接看到可视化的统计数据,适合新手快速排查。firewalld底层基于iptables/nftables,也可以结合原生命令查看更底层的计数细节。
nftables:新一代防火墙的统计查看
近几年debian、ubuntu等发行版已经默认把nftables作为底层防火墙,查看统计的方式十分简洁,执行`nft list ruleset`就能列出所有规则集,每一条规则末尾都会直接标注`packets 数字 bytes 数字`,对应匹配的连接统计,如果规则动作是drop,对应数值就是被拦截的总数量。如果只想过滤出filter表的统计,可以用`nft list table ip filter`缩小输出范围,想要重置计数只需要执行`nft reset rules`即可。
综上,linux下查看防火墙拦截统计不需要复杂工具,只要根据自身的防火墙架构选择对应命令,就能快速拿到准确的拦截统计,大幅提升网络故障排查的效率,全文约690字。



































