分类: BSD
2009-11-18 10:58:01
freebsd 下sysctl.conf详解说明
这个是一网友发的一份配置。FREEBSD老大亲自解释了。我从中学到不少。移动来大家参考
把这份sysctl.conf贴在这里,让大家帮我分析分析。也避免别的人按这个优化出现同样的问题。
--------------------------------------
# $FreeBSD: src/etc/sysctl.conf,v 1.8 2003/03/13 18:43:50 mux Exp $
#
# This file is read when going to multi-user and its contents piped thru
# ``sysctl'' to adjust kernel values. ``man 5 sysctl.conf'' for details.
#
# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
security.bsd.see_other_uids=0
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=65536
#net.inet.udp.sendspace=65536
net.inet.udp.maxdgram=65536
net.local.stream.sendspace=65536
net.inet.tcp.rfc1323=1
#net.inet.tcp.rfc1644=1
net.inet.tcp.rfc3042=1
net.inet.tcp.rfc3390=1
kern.ipc.maxsockbuf=2097152
kern.maxfiles=65536
kern.maxfilesperproc=32768
net.inet.tcp.delayed_ack=0
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
net.inet.icmp.icmplim=100
net.inet.icmp.icmplim_output=0
#net.inet.tcp.drop_synfin=1
net.inet.tcp.always_keepalive=1
net.inet.ip.intr_queue_maxlen=1000 (这儿太大了。建议不用或小点值)
net.inet.tcp.msl=7500 (太大了。建议2500-2000左右)
net.inet.tcp.blackhole=2
net.inet.tcp.inflight.enable=1
net.inet.ip.fastforwarding=0
kern.ipc.somaxconn=32768
kern.securelevel=0
#net.inet.tcp.log_in=1
#net.inet.udp.log_in=1
net.inet.udp.checksum=1
net.inet.tcp.syncookies=1
kern.ipc.shm_use_phys=1
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
kern.coredump=0
net.local.stream.recvspace=65536
net.local.dgram.maxdgram=16384
net.local.dgram.recvspace=65536
#net.inet.tcp.mssdflt=1460
#net.inet.tcp.minmss=1640
net.inet.raw.maxdgram=65535
net.inet.raw.recvspace=65535
net.inet.ip.fw.dyn_max=65535
net.inet.ipf.fr_tcpidletimeout=864000
以上是原文。我把有错误的给#号了。不然大家抄回去死得惨
老大亲自加的注解哦。大家好好参详
加的东西实在太多了……
sylion 写到:
security.bsd.see_other_uids=0
这个通常没有必要,除非系统需要让不信任的人登录。
sylion 写到:
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=65536
#net.inet.udp.sendspace=65536
net.inet.udp.maxdgram=65536
这些配置通常不会导致问题,但是这么配置会导致开销增大,一般说来网络流量是不对称的,因此应该根据实际情况调整,并观察其效果。
sylion 写到:
net.local.stream.sendspace=65536
这个我的经验是意义不大。
sylion 写到:
net.inet.tcp.rfc1323=1
#net.inet.tcp.rfc1644=1
net.inet.tcp.rfc3042=1
net.inet.tcp.rfc3390=1
所有rfc相关的选项都是默认启用的。
sylion 写到:
kern.ipc.maxsockbuf=2097152
2MB这个值对许多应用都不合适。
sylion 写到:
kern.maxfiles=65536
这个值的调整有意义,不过如果默认的32768不够用的话,请确认一下程序里面是否有fd泄露。
sylion 写到:
kern.maxfilesperproc=32768
除非用异步I/O或大量线程,打开这么多的文件恐怕是不太正常的。
sylion 写到:
net.inet.tcp.delayed_ack=0
通常这样改无非让网络更拥堵一些而已。
sylion 写到:
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
这个没什么问题。
sylion 写到:
net.inet.ip.redirect=0
非路由器关掉无妨。
sylion 写到:
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
没必要,默认值如此。
sylion 写到:
net.inet.icmp.icmplim=100
net.inet.icmp.icmplim_output=0
个人认为默认的200不会导致太大压力。禁止输出容易让我们忽视攻击的存在。
sylion 写到:
#net.inet.tcp.drop_synfin=1
除了能阻止某些OS探测之外,它还违反了TCP标准。
sylion 写到:
net.inet.tcp.always_keepalive=1
访问量大的时候通常我们不会希望这样设置。或者至少应该把keepalive的时间缩短。
sylion 写到:
net.inet.ip.intr_queue_maxlen=1000
老天!如果这个queue达到了1000的话恐怕机器先扛不住了……
sylion 写到:
net.inet.tcp.msl=7500
这个值我通常会改的更小一些(2000或2500),这样可以加快不正常连接的释放过程(三次握手2秒、FIN_WAIT4秒)。
sylion 写到:
net.inet.tcp.blackhole=2
这个没什么问题。
sylion 写到:
net.inet.tcp.inflight.enable=1
没必要,默认值如此。
sylion 写到:
net.inet.ip.fastforwarding=0
没必要,默认值如此。
sylion 写到:
kern.ipc.somaxconn=32768
这个根据需要设就可以了。
sylion 写到:
kern.securelevel=0
这个最好配到 /etc/rc.conf 里面。
sylion 写到:
#net.inet.tcp.log_in=1
#net.inet.udp.log_in=1
?? 这两个参数是干嘛的?
sylion 写到:
net.inet.udp.checksum=1
没必要,默认值如此。
sylion 写到:
net.inet.tcp.syncookies=1
没必要,默认值如此。
sylion 写到:
kern.ipc.shm_use_phys=1
不理解为什么要这样改。我个人认为没有必要。
sylion 写到:
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
这个除非程序有特殊需要,一般情况下并不需要调整。
sylion 写到:
kern.coredump=0
除非永远不打算知道signal 11/6是什么原因。我一般的做法是改kern.corefile指定core的位置,防止把磁盘填满。当然生产系统上这样做问题不大,必要的时候可以打开。
sylion 写到:
net.local.stream.recvspace=65536
net.local.dgram.maxdgram=16384
net.local.dgram.recvspace=65536
我个人认为这些没有必要调整。
sylion 写到:
net.inet.tcp.mssdflt=1460
1460似乎是给ADSL配置的?
sylion 写到:
net.inet.tcp.minmss=1640
如果要赌一个能导致问题的话,我赌这个。
sylion 写到:
net.inet.raw.maxdgram=65535
net.inet.raw.recvspace=65535
个人认为没必要。
sylion 写到:
net.inet.ip.fw.dyn_max=65535
net.inet.ipf.fr_tcpidletimeout=864000
这些只有使用防火墙,并且明白设置到底是什么意思的时候才有意义。此外我认为第二个配置是错的。