安全地增加ip_conntrack_max?


9

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

内核:ip_conntrack:表已满,正在丢弃数据包。

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

记住内存使用情况,我可以安全地增加多少?我在这个盒子上有4GB的内存。这台机器充当静态内容服务器的功能之一,这可能解释了高连接数,也意味着我想尽可能多地保留用于缓存的OS内存。

另外,以下两个之间有何区别?/ proc / sys / net / ipv4 / netfilter / ip_conntrack_max / proc / sys / net / ipv4 / ip_conntrack_max

我应该编辑哪个?

谢谢!

Answers:


9

首先,问一个问题:您的设置是否需要连接跟踪?如果这只是一台服务器,并且在其他地方进行了防火墙/ NAT,则可以一起禁用conntrack。

其次,检查您的conntrack条目是否有意义。有时候,由于某些网络或防火墙配置错误,conntrack表中充满了垃圾。通常,这些是从未完全建立的连接条目。例如,当服务器获取传入的连接SYN数据包时,可能会发生这种情况,但是服务器答复始终丢失在网络上的某个位置。

我唯一的机器上有一条“ ip_conntrack:表已满”消息,并且需要增加ip_conntrack_max(而不是固定配置),在这些机器中,路由器对相当大的网络(成千上万的端点)进行NAT。

如果您知道需要conntrack,并且确实需要大于它,则增加数量,直到没有更多的“表已满”消息为止。并观察内存使用情况。

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


6

“ netfilter”路径是引用相同设置的旧方法。您可以编辑任何一个文件。

#猫/ proc / sys / net / ipv4 / ip_conntrack_max  
655360
#cat / proc / sys / net / ipv4 / netfilter / ip_conntrack_max
655360
#回声655361> / proc / sys / net / ipv4 / ip_conntrack_max
#cat / proc / sys / net / ipv4 / netfilter / ip_conntrack_max
655361

在ubuntu 10.04 / 2.6.32-45服务器中,仅存在ipv4 / netfilter / ip_conntrack_max
okwap

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.