解决 Linux 系统中nf_conntrack: table full, dropping packet问题的方法

Linux

问题描述:

如下图显示的是 Linux 系统中关于 nf_conntrack(网络连接跟踪)的日志信息,提示“table full, dropping packet”,意思是连接跟踪表已满,正在丢弃数据包。这通常是因为系统的连接跟踪表容量不足,无法处理当前大量的网络连接,导致新的连接相关数据包被丢弃,可能会影响网络通信等相关功能。

image-20250923165618733

解决办法:

以下是一些解决Linux系统中nf_conntrack: table full, dropping packet问题的方法:

增加连接跟踪表大小

通过修改内核参数来增加nf_conntrack表的大小,从而能容纳更多连接跟踪信息。

  1. 临时修改:在终端中输入以下命令(以将连接跟踪表大小设置为655360为例,你可以根据实际情况调整数值 )
echo 655360 > /proc/sys/net/netfilter/nf_conntrack_max
  1. 永久修改:编辑/etc/sysctl.conf文件,在文件末尾添加或修改这一行内容:
net.netfilter.nf_conntrack_max = 655360

添加或修改完成后,在终端执行sudo sysctl -p命令,让修改后的内核参数生效。

优化连接跟踪超时时间

缩短那些长时间未活动连接的跟踪时间,使连接跟踪表能更快释放空间。同样编辑/etc/sysctl.conf文件,添加或修改类似下面这些参数(参数值可根据实际需求调整):

net.netfilter.nf_conntrack_tcp_timeout_established = 1800  # 已建立TCP连接的超时时间,单位是秒
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60    # TCP连接处于TIME_WAIT状态的超时时间,单位是秒

添加或修改完成后,执行sudo sysctl -p 让设置生效。

排查异常连接

使用诸如netstatss等命令查看当前网络连接情况,分析是否存在异常的大量连接,比如是否有恶意程序发起的DDoS攻击,或是应用程序存在连接泄漏问题等。若是应用程序导致,需要修改应用程序代码以优化连接管理;若是受到攻击,可能需要部署防火墙、入侵检测和防护系统(IDS/IPS) 等安全设备进行防护。

硬件升级

如果服务器的网络流量持续较大,频繁出现连接跟踪表满的情况,在软件优化无法满足需求时,可以考虑升级服务器硬件,比如增加内存。因为连接跟踪表的存储需要占用内存,更大的内存能支持更大的连接跟踪表 。

本文链接:https://www.orcy.net.cn/4291.html,转载请附上原文出处链接

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注