Linux防火墙导致ping包大量丢包,Q卡顿问题解决
一、问题现象
在Linux系统中,当网络连接数较大时,ping测试显示大量丢包,导致Q(网络请求)响应卡顿,严重影响系统性能。
二、问题原因
检查防火墙状态:
service iptables status
# 或
systemctl status firewall.service
如果防火墙状态为active/running,则可能是防火墙配置问题。当连接数较多时,防火墙的连接跟踪表可能达到上限,导致新连接被丢弃。

三、解决方案
方案1:修改防火墙文件描述符限制
编辑防火墙服务配置文件:
vi /usr/lib/systemd/system/firewalld.service
在[Service]段添加:
LimitNOFILE=1024
重新加载配置并重启防火墙:
systemctl daemon-reload
systemctl restart firewalld

方案2:优化ARP表大小
检查ARP表项数:
arp | wc -l
检查ARP表参数:
cat /proc/sys/net/ipv4/neigh/default/gc_thresh1
cat /proc/sys/net/ipv4/neigh/default/gc_thresh2
cat /proc/sys/net/ipv4/neigh/default/gc_thresh3
编辑sysctl.conf文件,在文件末尾添加:
net.ipv4.neigh.default.gc_thresh1 = 2048
net.ipv4.neigh.default.gc_thresh2 = 4096
net.ipv4.neigh.default.gc_thresh3 = 8192
使配置生效:
sysctl -p

方案3:优化连接跟踪参数
编辑sysctl.conf文件,添加以下参数:
net.ipv4.ip_conntrack_max = 655360
net.ipv4.netfilter.ip_conntrack_max = 655360
net.netfilter.nf_conntrack_max = 655360
使配置生效:
sysctl -p
四、验证效果
测试ping丢包率:
ping -c 100 目标IP
测试网络连接数:
netstat -an | grep ESTABLISHED | wc -l
测试防火墙连接跟踪表:
cat /proc/net/nf_conntrack | wc -l
五、预防措施
- 定期监控系统网络状态
- 及时清理无效连接
- 优化应用连接管理
- 定期检查系统参数
六、注意事项
- 修改系统参数前务必备份
- 根据实际需求调整参数值
- 修改参数后需重启服务
- 定期监控参数效果
七、其他解决方案
方案4:禁用连接跟踪(不推荐)
如果防火墙不需要连接跟踪功能,可以考虑禁用:
modprobe -r nf_conntrack
方案5:使用其他防火墙工具
考虑使用iptables直接管理规则,减少中间层开销。
八、技术支持
如遇技术问题,请联系:
- 系统管理员
- Linux技术支持社区
- 海康威视技术支持:400-800-5992