增加ip_conntrack_max安全吗?

我经常在日志中看到以下内容:

内核:ip_conntrack:表满,丢包。

目前,我有ip_conntrack_max设置为65536(默认,RHEL5)。

记住内存使用情况,我可以安全地增加这个值多less? 我在这个盒子上有4GB的RAM。 这台机器的function之一是作为一个静态内容服务器,这可能解释了高连接计数,也意味着我想保留尽可能多的用于caching的操作系统内存。

另外,以下两者有什么区别? / proc / sys / net / ipv4 / netfilter / ip_conntrack_max / proc / sys / net / ipv4 / ip_conntrack_max

我应该编辑哪一个?

谢谢!

首先,问自己一个问题:您的设置是否需要连接跟踪? 如果它只是一个服务器,防火墙/ NAT在其他地方完成,那么你可能会一起禁用conntrack。

其次,检查你的conntrack条目是否有意义。 有时候conntrack表会因为某些networking或防火墙的错误configuration而被垃圾填满。 通常那些连接的条目从未完全build立。 这可能发生,例如,当服务器获得传入连接的SYN数据包,但服务器的回复总是丢失在networking的某个地方。

唯一的机器我有一个'ip_conntrack:table full'消息,并且需要ip_conntrack_max增加(而不是固定configuration),其中路由器为相当大的networking(数千个端点)做NAT。

如果你知道你需要conntrack,而且它确实需要比它更大,那么增加这个数字,直到你没有更多的“表格满”的消息。 并观看内存使用情况。

关于conntrack对象的内存分配的一些统计信息可以在/ proc / slabinfo文件中find。

“netfilter”的path是指同一设置的旧方法。 您可以编辑任一文件。

 #cat / proc / sys / net / ipv4 / ip_conntrack_max  
 655360
 #cat / proc / sys / net / ipv4 / netfilter / ip_conntrack_max
 655360
 #echo 655361> / proc / sys / net / ipv4 / ip_conntrack_max
 #cat / proc / sys / net / ipv4 / netfilter / ip_conntrack_max
 655361