RHEL/CentOS修改ip_conntrack的HASHSIZE

一、概念

-允许的最大跟踪连接条目:CONNTRACK_MAX(默认值是 2^16=65536 )
-存储跟踪连接条目列表的哈西表的大小:HASHSIZE
-每个哈西表的条目(叫一个bucket),包含了一个链接起来的跟踪连接条目
-哈希表大小HASHSIZE,表现为 条目bucket的多少,在iptables启动时在日志中会显示。

图表形象解释:

通过修改HASHSIZE的值,可以自动扩展ip_conntrack_max,不需要额外再去修改ip_conntrack_max值了,ip_conntrack_max的值会被自动设置为HASHSIZE值的8倍。

二、实战

1、RHEL/CentOS 5.4系统

默认值8192(2^13),我们增大为131072(2^17):

# echo "options ip_conntrack hashsize=131072" >> /etc/modprobe.conf

然后重启 iptables 服务,即可生效。

2、RHEL/CentOS 6.4系统

6.4系统没有/etc/modprobe.conf文件,以在/etc/modprobe.d/目录中添加配置文件来实现:

# cd /etc/modprobe.d/# echo "options nf_conntrack hashsize=131072" > nf_conntrack.conf # reboot

改完要重启系统才能生效。

# cat /sys/module/nf_conntrack/parameters/hashsize

这样修改完之后,不需要额外再去修改ip_conntrack_max值了,ip_conntrack_max的值会被自动设置为HASHSIZE值的8倍:

# sysctl -a |grep conntrack_maxnet.netfilter.nf_conntrack_max = 1048576net.nf_conntrack_max = 1048576

3、参数的名字到底用ip_conntrack还是nf_conntrack?

这个取决于系统里模块名到底是ip_conntrack还是nf_conntrack,可以通过lsmod查看模块列表来看出来你的模块到底是ip_conntrack还是nf_conntrack:

# lsmod |grep conntracknf_conntrack           79357  5 iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state


转自:http://ju.outofmemory.cn/entry/45769

你可能感兴趣的:(内核)