欢迎来到天天文库
浏览记录
ID:20283764
大小:56.00 KB
页数:4页
时间:2018-10-12
《关于iptables中ip》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、关于iptables中ip 这是关于使用iptables来调优防火墙性能的一篇短文。 谢谢freenode上#debian-zh中的pnt_。 原文ipv4/ip_conntrack_max 在Linuxkernel2.4.2123下一页友情提醒:,特别!3版本后,使用: #cat/proc/sys/ipv4/filter/ip_conntrack_max (旧的/proc/sys/ipv4/ip_conntrack_max是不建议使用的!) 当前的HASHSIZE总是可以在syslog信息中找到(对任何一个内核版本),桶(也就是HAS
2、HSIZE)的数目是在ip_conntrack初始化的时候显示出来的。 对于linux内核2.4.24以后,当前的HASHSIZE值可以在运行时使用下面的命令读取: #cat/proc/sys/ipv4/filter/ip_conntrack_buckets 修改CONNTRACK_MAX和HASHSIZE ==================================== 默认的CONNTRACK_MAX和HASHSIZE的值都会因主机的不同而不同,但你可以在只做防火墙的高负载的系统上增加他们。 因此CONNTRACK_MAX和H
3、ASHSIZE值如果需要的话可以手工更改。 读取桶是一个连续性的操作(我们的兴趣在于得到一个哈西列表),请记得内核需要不停的遍历一个链接的列表去查找一个跟踪连接条目。因此一个链接列表(CONNTRACK_MAX/HASHSIZE的值在优化的状态下并且达到上限)的平均值不能设置太大。这个比值默认值是8(当值是自动计算的时候)。 在系统有足够的内存并且性能真的很重要的时候,你可以试着使平均值是一个跟踪连接条目配一个哈西桶,这意味着HASHSIZE=CONNTRACK_MAX。 设置CONNTRACK_MAX -------------------
4、-- 跟踪连接的条目是存储在链接的表中的,因此最大的跟踪链接条目(CONNTRACK_MAX)可以很容易的动态调整。 linux内核2.4.23之前,使用: #echo$CONNTRACK_MAX>/proc/sys/ipv4/ip_conntrack_max linux内核2.4.23之后,使用: #echo$CONNTRACK_MAX>/proc/sys/ipv4/filter/ip_conntrack_max 这里$CONNTRACK_MAX是一个整数。 设置HASHSIZE ---------------- 因为
5、数学上的原因,哈西表占有固定的大小。因此HASHSIZE必须在哈西表被创建和开始填充之前就确定。 在linux内核2.4.21之前,必须使用素数作为哈西表的大小,而且要保证这个哈西表能够有效并通用。非素数的奇数或者其他的数值都是强烈不推荐使用的,因为这样哈西的分配不能达到最优化的状态。 从linux内核2.4.21(还有2.6内核)跟踪连接使用jenkins2b算法,这样就可以使用所有的数值,但是使用2次方运作的最有效。 如果filter的跟踪连接是被编译进内核中的,哈西表的大小就可以在编译的时候设置,或者(2.6内核之后)可以作为一个启动选
6、项ip_conntrack.hashsize=$HASHSIZE。 如果filter的跟踪连接是编译成一个模块,哈西表的大小可以在加载模块的时候设置,使用下面的命令: #modprobeip_conntrackhashsize=$HASHSIZE 这里$HASHSIZE是一个整数。 一个理想的例子:只做防火墙的机器 ------------------------------------ 在理想的例子中,你有一台机器只做包过滤和NAT(也就是说,基本上没有用户空间的使用,至少不会有象代理这样会不断的耗费内存空间的东西......) fi
7、lter跟踪连接使用的内核内存大小是: size_of_mem_used_by_conntrack(以bytes记)= CONNTRACK_MAX*sizeof(structip_conntrack)+ HASHSIZE*sizeof(structlist_head) -这里:sizeof(structip_conntrack)可以有很大的区别,依赖于机器的体系架构,内核版本和编译时间的配置。要想知道它的大小,可以查看ip_conntrack初始化时候kenel的日志信息。sizeof(structip_conntrack)在i386架构、2
8、.6.5内核上大约是300bytes,但是在2.6.10的内核上,这个值可以在352至192bytes之间变
此文档下载收益归作者所有