乐趣区

关于文件:sysctlconf文件配置详解

net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0

通过源路由,攻击者能够尝试达到外部 IP 地址 – 包含 RFC1918 中的地址,所以不承受源路由信息包能够避免你的外部网络被探测。

net.inet.tcp.drop_synfin=1

平安参数,编译内核的时候加了 options TCP_DROP_SYNFIN 才能够用,能够阻止某些 OS 探测。

kern.maxvnodes=8446

vnode 是对文件或目录的一种外部表白。因而,减少能够被操作系统利用的 vnode 数量将升高磁盘的 I/O。
一般而言,这是由操作系统自行实现的,也不须要加以批改。但在某些时候磁盘 I/O 会成为瓶颈,
而零碎的 vnode 有余,则这一配置应被减少。此时须要思考是非沉闷和闲暇内存的数量。

kern.maxproc: 964 #Maximum number of processes
kern.maxprocperuid: 867 #Maximum processes allowed per userid
kern.maxfiles: 1928 #零碎中反对最多同时开启的文件数量,如果你在运行数据库或大的很吃描述符的过程,那么应该设置在 20000 以上,比方 kde 这样的桌面环境,它同时要用的文件十分多。个别举荐设置为 32768 或者 65536。
kern.argmax: 262144 #maximum number of bytes (or characters) in an argument list.

kern.securelevel: -1

这是零碎默认级别,没有提供任何内核的爱护谬误;
0:基本上作用不多,当你的零碎刚启动就是 0 级别的,当进入多用户模式的时候就主动变成 1 级了。
1:在这个级别上,有如下几个限度:
a. 不能通过 kldload 或者 kldunload 加载或者卸载可加载内核模块;
b. 应用程序不能通过 /dev/mem 或者 /dev/kmem 间接写内存;
c. 不能间接往曾经装在 (mounted) 的磁盘写货色,也就是不能格式化磁盘,然而能够通过规范的内核接口执行写操作;
d. 不能启动 X -windows,同时不能应用 chflags 来批改文件属性;
2:在 1 级别的根底上还不能写没装载的磁盘,而且不能在 1 秒之内制作屡次正告,这个是避免 DoS 控制台的;
3:在 2 级别的级别上不容许批改 IPFW 防火墙的规定。
如果你曾经装了防火墙,并且把规定设好了,不轻易改变,那么倡议应用 3 级别,如果你没有装防火墙,而且还筹备装防火墙的话,不倡议应用。
咱们这里举荐应用 2 级别,可能防止比拟多对内核攻打。

kern.maxfilesperproc: 1735 #每个过程可能同时关上的最大文件数量
kern.ipc.maxsockbuf: 262144 #最大的套接字缓冲区
kern.ipc.somaxconn: 128 #最大的期待连贯实现的套接字队列大小,即并发连接数

kern.ipc.shmmax: 33554432
kern.ipc.shmall: 8192

共享内存和信号灯 (”System VIPC”) 如果这些过小的话有些大型的软件将无奈启动

kern.ipc.shm_use_phys: 0
如果咱们将它设成 1,则所有 System V 共享内存 (share memory,一种程序间沟通的形式)部份都会被留在实体的内存 (physical memory) 中,
而不会被放到硬盘上的 swap 空间。咱们晓得物理内存的存取速度比硬盘快许多,而当物理内存空间有余时,
部份数据会被放到虚构的内存上,从物理内存和虚拟内存之间移转的动作就叫作 swap。如果时常做 swap 的动作
则须要始终对硬盘作 I/O,速度会很慢。因而,如果咱们有大量的程序 (数百个) 须要独特分享一个小的共享内存空间,
或者是共享内存空间很大时,咱们能够将这个值关上。

kern.ipc.shm_allow_removed: 0 #共享内存是否容许移除
kern.ipc.numopensockets: 12 #曾经开启的 socket 数目
kern.ipc.maxsockets: 1928 #这是用来设定零碎最大能够开启的 socket 数目,这个值必须在零碎一开机就设定好,所以如果要批改这项设定,咱们必须批改 /boot/loader.conf 才行 kern.ipc.maxsockets=”16424″

kern.ipc.nsfbufs: 1456
常常应用 sendfile(2) 零碎调用的忙碌的服务器,
有必要通过 NSFBUFS 内核选项或者在 /boot/loader.conf (查看 loader(8)以取得更多细节) 中设置它的值来调节 sendfile(2) 缓存数量。
这个参数须要调节的一般起因是在过程中看到 sfbufa 状态。sysctl kern.ipc.nsfbufs 变量在内核配置变量中是只读的。
这个参数是由 kern.maxusers 决定的,然而它可能有必要因而而调整。
在 /boot/loader.conf 里退出
kern.ipc.nsfbufs=”2496″

kern.maxusers: 59
maxusers 的值决定了处理程序所答应的最大值,20+16*maxusers 就是你将失去的所答应处理程序。
如果你的零碎会呈现 proc table full 的讯息的话,能够就把它设大一点,例如 128。
除非您的零碎会须要同时开启很多档案,否则请不要设定超过 256。
能够在 /boot/loader.conf 中退出该选项的设定,
kern.maxusers=256

kern.coredump: 1
如果设置为 0,则程序异样退出时不会生成 core 文件,作为服务器,不倡议这样。

kern.corefile: %N.core
可设置为 kern.corefile=”/data/coredump/%U-%P-%N.core”
其中 %U 是 UID,%P 是过程 ID,%N 是过程名,当然 /data/coredump 必须是一个理论存在的目录

vm.swap_idle_enabled: 0
vm.swap_idle_threshold1: 2
vm.swap_idle_threshold2: 10

在有很多用户进入、来到零碎和有很多闲暇过程的大的多用户零碎中很有用。
能够让过程更快地进入内存,但它会吃掉更多的替换和磁盘带宽。
零碎默认的页面调度算法曾经很好了,最好不要更改。

vfs.ufs.dirhash_maxmem: 2097152

默认的 dirhash 最大内存, 默认 2M
减少它有助于改善单目录超过 100K 个文件时的重复读目录时的性能
倡议批改为 33554432(32M)

vfs.vmiodirenable: 1

这个变量管制目录是否被零碎缓存。大多数目录是小的,在零碎中只应用单个片断 (典型的是 1K) 并且在缓存中应用的更小 (典型的是 512 字节)。
当这个变量设置为敞开 (0) 时,缓存器仅仅缓存固定数量的目录,即便您有很大的内存。
而将其开启 (设置为 1) 时,则容许缓存器用 VM
页面缓存来缓存这些目录,让所有可用内存来缓存目录。
不利的是最小的用来缓存目录的外围内存是大于 512 字节的物理页面大小 (通常是 4k)。
咱们倡议如果您在运行任何操作大量文件的程序时放弃这个选项关上的默认值。
这些服务包含 web 缓存,大容量邮件系统和新闻零碎。
只管可能会节约一些内存,但关上这个选项通常不会升高性能。但还是应该测验一下。

vfs.hirunningspace: 1048576

这个值决定了零碎能够将多少数据放在写入贮存设施的等待区。通常应用默认值即可,
但当咱们有多颗硬盘时,咱们能够将它调大为 4MB 或 5MB。
留神这个设置成很高的值 (超过缓存器的写极限) 会导致坏的性能。
不要自觉的把它设置太高!高的数值会导致同时产生的读操作的迟延。

vfs.write_behind: 1

这个选项预设为 1,也就是关上的状态。在关上时,在零碎须要写入数据在硬盘或其它贮存设施上时,
它会等到收集了一个 cluster 单位的数据后再一次写入,否则会在一个暂存区空间有写入需要时就立刻写到硬盘上。
这个选项关上时,对于一个大的间断的文件写入速度十分有帮忙。但如果您遇到有很多行程延滞在期待写入动作时,您可能必须敞开这个性能。

net.local.stream.sendspace: 8192

本地套接字连贯的数据发送空间
倡议设置为 65536

net.local.stream.recvspace: 8192

本地套接字连贯的数据接管空间
倡议设置为 65536

net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535

以上六项是用来管制 TCP 及 UDP 所应用的 port 范畴,这个范畴被分成三个部份,低范畴、预设范畴、及高范畴。
这些是你的服务器被动发动连贯时的长期端口的范畴,预设的曾经 1 万多了,个别的利用就足够了。
如果是比拟繁忙的 FTP server,个别也不会同时提供给 1 万多人拜访的,
当然如果很可怜,你的服务器就要提供很多,那么能够批改 first 的值,比方间接用 1024 开始

net.inet.ip.redirect: 1

设置为 0,屏蔽 ip 重定向性能

net.inet.ip.rtexpire: 3600
net.inet.ip.rtminexpire: 10

很多 apache 产生的 CLOSE_WAIT 状态,这种状态是期待客户端敞开,然而客户端那边并没有失常的敞开,于是留下很多这样的东东。
倡议都批改为 2

net.inet.ip.intr_queue_maxlen: 50

Maximum size of the IP input queue,如果上面的 net.inet.ip.intr_queue_drops 始终在减少,
那就阐明你的队列空间有余了,那么能够思考减少该值。

net.inet.ip.intr_queue_drops: 0

Number of packets dropped from the IP input queue, 如果你 sysctl 它始终在减少,
那么减少 net.inet.ip.intr_queue_maxlen 的值。

net.inet.ip.fastforwarding: 0

如果关上的话每个指标地址一次转发胜利当前它的数据都将被记录进路由表和 arp 数据表,节约路由的计算工夫
但会须要大量的内核内存空间来保留路由表。
如果内存够大,关上吧,呵呵

net.inet.ip.random_id: 0

默认状况下,ip 包的 id 号是间断的,而这些可能会被攻击者利用,比方能够晓得你 nat 前面带了多少主机。
如果设置成 1,则这个 id 号是随机的,嘿嘿。

net.inet.icmp.maskrepl: 0

避免播送风暴,敞开其余播送探测的响应。默认即是,毋庸批改。

net.inet.icmp.icmplim: 200

限度零碎发送 ICMP 速率,改为 100 吧,或者保留也可,并不会给零碎带来太大的压力。

net.inet.icmp.icmplim_output: 1

如果设置成 0,就不会看到提醒说 Limiting icmp unreach response from 214 to 200 packets per second 等等了
不过禁止输入容易让咱们漠视攻打的存在。这个本人看着办吧。

net.inet.icmp.drop_redirect: 0
net.inet.icmp.log_redirect: 0

设置为 1,屏蔽 ICMP 重定向性能

net.inet.icmp.bmcastecho: 0

避免播送风暴,敞开播送 ECHO 响应,默认即是,毋庸批改。

net.inet.tcp.mssdflt: 512
net.inet.tcp.minmss: 216

数据包数据段最小值,以上两个选项最好不动!或者只批改 mssdflt 为 1460,minmss 不动。

net.inet.tcp.keepidle: 7200000

TCP 的套接字的闲暇工夫,默认工夫太长,能够改为 600000(10 分钟)。

net.inet.tcp.sendspace: 32768

最大的待发送 TCP 数据缓冲区空间,应用程序将数据放到这里就认为发送胜利了,零碎 TCP 堆栈保证数据的失常发送。

net.inet.tcp.recvspace: 65536

最大的承受 TCP 缓冲区空间,零碎从这里将数据分发给不同的套接字,增大该空间可进步零碎霎时承受数据的能力以进步性能。

这二个选项别离管制了网络 TCP 联机所应用的传送及接管暂存区的大小。预设的传送暂存区为 32K 而接管暂存区为 64K。
如果须要减速 TCP 的传输,能够将这二个值调大一点,但毛病是太大的值会造成系统核心占用太多的内存。
如果咱们的机器会同时服务数百或数千个网络联机,那么这二个选项最好维持默认值,否则会造成系统核心内存不足。
但如果咱们应用的是 gigabite 的网络,将这二个值调大会有显著效力的晋升。
传送及接管的暂存区大小能够离开调整,
例如,假如咱们的零碎次要做为网页服务器,咱们能够将接管的暂存区调小一点,并将传送的暂存区调大,如此一来,咱们就能够防止占去太多的外围内存空间。
net.inet.udp.maxdgram: 9216

最大的发送 UDP 数据缓冲区大小,网上的材料大多都是 65536,我集体认为没多大必要,
如果要调整,能够试试 24576。

net.inet.udp.recvspace: 42080

最大的承受 UDP 缓冲区大小,网上的材料大多都是 65536,我集体认为没多大必要,
如果要调整,能够试试 49152。

以上四项配置通常不会导致问题,一般说来网络流量是不对称的,因而应该依据理论状况调整,并察看其成果。
如果咱们将传送或接管的暂存区设为大于 65535,除非服务器自身及客户端所应用的操作系统都反对 TCP 协定的 windows scaling extension (请参考 RFC 1323 文件)。
FreeBSD 默认已反对 rfs1323 (即 sysctl 的 net.inet.tcp.rfc1323 选项)。

net.inet.tcp.log_in_vain: 0

记录下任何 TCP 连贯,这个个别状况下不应该更改。

net.inet.tcp.blackhole: 0

倡议设置为 2,接管到一个曾经敞开的端口发来的所有包,间接 drop,如果设置为 1 则是只针对 TCP 包

net.inet.tcp.delayed_ack: 1

当一台计算机发动 TCP 连贯申请时,零碎会回应 ACK 应答数据包。
该选项设置是否提早 ACK 应答数据包,把它和蕴含数据的数据包一起发送。
在高速网络和低负载的状况下会稍微进步性能,但在网络连接较差的时候,
对方计算机得不到应答会继续发动连贯申请,反而会让网络更加拥挤,升高性能。
因而这个值我建议您看状况而定,如果您的网速不是问题,能够将封包数量缩小一半
如果网络不是特地好,那么就设置为 0,有申请就先回应,这样其实节约的网通、电信的带宽速率而不是你的解决工夫

net.inet.tcp.inflight.enable: 1
net.inet.tcp.inflight.debug: 0
net.inet.tcp.inflight.rttthresh: 10
net.inet.tcp.inflight.min: 6144
net.inet.tcp.inflight.max: 1073725440
net.inet.tcp.inflight.stab: 20

限度 TCP 带宽提早积和 NetBSD 的 TCP/Vegas 相似。
它能够通过将 sysctl 变量 net.inet.tcp.inflight.enable 设置成 1 来启用。
零碎将尝试计算每一个连贯的带宽提早积,并将排队的数据量限度在恰好能放弃最优吞吐量的程度上。
这一个性在您的服务器同时向应用一般调制解调器,千兆以太网,乃至更高速度的光与网络连接 (或其余带宽提早积很大的连贯) 的时候尤为重要,
特地是当您同时应用滑动窗缩放,或应用了大的发送窗口的时候。
如果启用了这个选项,您还应该把 net.inet.tcp.inflight.debug 设置为 0 (禁用调试),
对于生产环境而言,将 net.inet.tcp.inflight.min 设置成至多 6144 会很有益处。
然而,须要留神的是,这个值设置过大事实上相当于禁用了连贯带宽提早积限度性能。
这个限度个性缩小了在路由和替换包队列的梗塞数据数量,也缩小了在本地主机接口队列阻塞的数据的数量。
在多数的等待队列中、交互式连贯,尤其是通过慢速的调制解调器,也能用低的 往返工夫操作。
然而,留神这只影响到数据发送 (上载 / 服务端)。对数据接管 (下载) 没有成果。
调整 net.inet.tcp.inflight.stab 是 不 举荐的。
这个参数的默认值是 20 示意把 2 个最大包退出到带宽提早积窗口的计算中。
额定的窗口似的算法更为稳固,并改善对于多变网络环境的相应能力,
但也会导致慢速连贯下的 ping 工夫增长 (只管还是会比没有应用 inflight 算法低许多)。
对于这些情景,您可能会心愿把这个参数缩小到 15,10,或 5;
并可能因而而不得不缩小 net.inet.tcp.inflight.min (比如说,3500) 来失去心愿的成果。
缩小这些参数的值,只应作为最初不得已时的伎俩来应用。

net.inet.tcp.syncookies: 1

SYN cookies 是一种用于通过抉择加密的初始化 TCP 序列号,能够对回应的包做验证来升高 SYN’洪水’攻打的影响的技术。
默认即是,不需批改

net.inet.tcp.msl: 30000

这个值网上很多文章都举荐的 7500,
还能够改的更小一些(如 2000 或 2500),这样能够放慢不失常连贯的开释过程三次握手 2 秒、FIN_WAIT4 秒)。

net.inet.tcp.always_keepalive: 1

帮忙零碎革除没有失常断开的 TCP 连贯,这减少了一些网络带宽的应用,然而一些死掉的连贯最终能被辨认并革除。
死的 TCP 连贯是被拨号用户存取的零碎的一个特地的问题,因为用户常常断开 modem 而不正确的敞开流动的连贯。

net.inet.udp.checksum: 1

避免不正确的 udp 包的攻打,默认即是,不需批改

net.inet.udp.log_in_vain: 0

记录下任何 UDP 连贯, 这个个别状况下不应该批改。

net.inet.udp.blackhole: 0

倡议设置为 1,接管到一个曾经敞开的端口发来的所有 UDP 包间接 drop

net.inet.raw.maxdgram: 8192

Maximum outgoing raw IP datagram size
很多文章倡议设置为 65536,如同没多大必要。

net.inet.raw.recvspace: 8192

Maximum incoming raw IP datagram size
很多文章倡议设置为 65536,如同没多大必要。

net.link.ether.inet.max_age: 1200

调整 ARP 清理的工夫,通过向 IP 路由缓冲填充伪造的 ARP 条目能够让歹意用户产生资源耗竭和性能减低攻打。
这项仿佛大家都未做改变,我倡议不动或者略微缩小,比方 300(HP-UX 默认的 5 分钟)

net.inet6.ip6.redirect: 1

设置为 0,屏蔽 ipv6 重定向性能

net.isr.direct: 0

所有 MPSAFE 的网络 ISR 对包做立刻响应, 进步网卡性能,设置为 1。

hw.ata.wc: 1

这个选项用来关上 IDE 硬盘快取。当关上时,如果有数据要写入硬盘时,硬盘会伪装已实现写入,并将数据快取起来。

编辑 /etc/sysctl.conf 文件,在外面退出如下内容:(有正文)

最大的待发送 TCP 数据缓冲区空间

net.inet.tcp.sendspace=65536

最大的承受 TCP 缓冲区空间

net.inet.tcp.recvspace=65536

最大的承受 UDP 缓冲区大小

net.inet.udp.sendspace=65535

最大的发送 UDP 数据缓冲区大小

net.inet.udp.maxdgram=65535

本地套接字连贯的数据发送空间

net.local.stream.sendspace=65535

放慢网络性能的协定

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

当一台计算机发动 TCP 连贯申请时,零碎会回应 ACK 应答数据包。该选项设置是否提早

ACK 应答数据包,把它和蕴含数据的数据包一起发送,在高速网络和低负载的状况下会稍微进步性能,但在网络连接较差的时候,对方计算机得不到应答会继续发动连贯申请,反而会升高性能。

net.inet.tcp.delayed_ack=0

屏蔽 ICMP 重定向性能

net.inet.icmp.drop_redirect=1

net.inet.icmp.log_redirect=1

net.inet.ip.redirect=0

net.inet6.ip6.redirect=0

避免 ICMP 播送风暴

net.inet.icmp.bmcastecho=0

net.inet.icmp.maskrepl=0

限度零碎发送 ICMP 速率

net.inet.icmp.icmplim=100

平安参数,编译内核的时候加了 options TCP_DROP_SYNFIN 才能够用

net.inet.icmp.icmplim_output=0

net.inet.tcp.drop_synfin=1

设置为 1 会帮忙零碎革除没有失常断开的 TCP 连贯,这减少了一些网络带宽的应用,然而一些死掉的连贯最终能被辨认并革除。死的 TCP 连贯是被拨号用户存取的零碎的一个特地的问题,因为用户常常断开 modem 而不正确的敞开流动的连贯

net.inet.tcp.always_keepalive=1

若看到 net.inet.ip.intr_queue_drops 这个在减少,就要调大 net.inet.ip.intr_queue_maxlen,为 0 最好

net.inet.ip.intr_queue_maxlen=1000

避免 DOS 攻打,默认为 30000

net.inet.tcp.msl=7500

接管到一个曾经敞开的端口发来的所有包,间接 drop,如果设置为 1 则是只针对 TCP 包

net.inet.tcp.blackhole=2

接管到一个曾经敞开的端口发来的所有 UDP 包间接 drop

net.inet.udp.blackhole=1

为网络数据连贯时提供缓冲

net.inet.tcp.inflight.enable=1

如果关上的话每个指标地址一次转发胜利当前它的数据都将被记录进路由表和 arp 数据表,节约路由的计算工夫, 但会须要大量的内核内存空间来保留路由表

net.inet.ip.fastforwarding=0

kernel 编译关上 options POLLING 性能,高负载状况下应用低负载不举荐 SMP 不能和 polling 一起用

kern.polling.enable=1

并发连接数,默认为 128,举荐在 1024-4096 之间,数字越大占用内存也越大

kern.ipc.somaxconn=32768

禁止用户查看其余用户的过程

security.bsd.see_other_uids=0

设置 kernel 安全级别

kern.securelevel=0

记录下任何 TCP 连贯

net.inet.tcp.log_in_vain=1

记录下任何 UDP 连贯

net.inet.udp.log_in_vain=1

避免不正确的 udp 包的攻打

net.inet.udp.checksum=1

避免 DOS 攻打

net.inet.tcp.syncookies=1

仅为线程提供物理内存反对,须要 256 兆以上内存

kern.ipc.shm_use_phys=1

线程可应用的最大共享内存

kern.ipc.shmmax=67108864

最大线程数量

kern.ipc.shmall=32768

程序解体时不记录

kern.coredump=0

lo 本地数据流接管和发送空间

net.local.stream.recvspace=65536

net.local.dgram.maxdgram=16384

net.local.dgram.recvspace=65536

数据包数据段大小,ADSL 为 1452。

net.inet.tcp.mssdflt=1460

为网络数据连贯时提供缓冲

net.inet.tcp.inflight_enable=1

数据包数据段最小值,ADSL 为 1452

net.inet.tcp.minmss=1460

本地数据最大数量

net.inet.raw.maxdgram=65536

本地数据流接管空间

net.inet.raw.recvspace=65536

ipfw 防火墙动静规定数量,默认为 4096,增大该值能够避免某些病毒发送大量 TCP 连贯,导致不能建设失常连贯

net.inet.ip.fw.dyn_max=65535

设置 ipf 防火墙 TCP 连贯闲暇保留工夫,默认 8640000(120 小时)

net.inet.ipf.fr_tcpidletimeout=864000
参考链接:
Understanding /etc/sysctl.conf file in Linux

退出移动版