#  避免放大攻击

net.ipv4.icmp_echo_ignore_broadcasts = 1


# 开启恶意icmp错误消息保护

net.ipv4.icmp_ignore_bogus_error_responses = 1


# 开启SYN洪水攻击保护

net.ipv4.tcp_syncookies = 1


# 开启并记录欺骗,源路由和重定向包

net.ipv4.conf.all.log_martians = 1

net.ipv4.conf.default.log_martians = 1


# 处理无源路由的包

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0


# 开启反向路径过滤

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

# 确保无人能修改路由表

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.default.secure_redirects = 0


# 开启execshild

kernel.exec-shield = 1

kernel.randomize_va_space = 1


# 增加系统文件描述符限制

fs.file-max = 65535


# 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768

kernel.pid_max = 65536


# Tcp窗口等

net.core.rmem_max = 8388608

net.core.wmem_max = 8388608

net.core.netdev_max_backlog = 4096

net.ipv4.tcp_window_scaling = 1


# 不充当路由器

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0


# 增加TCP最大缓冲区大小

net.ipv4.tcp_mem = 192000 300000 732000

net.ipv4.tcp_rmem = 51200 131072 204800

net.ipv4.tcp_wmem = 51200 131072 204800


#增大SYN队列的长度,容纳更多连接(默认值:128)

net.ipv4.tcp_max_syn_backlog = 4096


#针对TIME-WAIT,配置其上限(默认值:262144)。如果降低这个值,可以显著的发现time-wait的数量减少,但系统日志中可能出现如下记录:kernel: TCP: time wait bucket table overflow对应的,如果升高这个值,可以显著的发现time-#wait的数量增加。

net.ipv4.tcp_max_tw_buckets = 4096


#间隔多少秒发送1次keepalive探测包(默认值:7200)

net.ipv4.tcp_keepalive_time = 20


#探测失败后,间隔几秒后重新探测(默认值:75)

net.ipv4.tcp_keepalive_intvl = 5


#探测失败后,最多尝试探测几次(默认值:9)

net.ipv4.tcp_keepalive_probes = 2


# 设置较小的数值,可以有效降低orphans的数量

net.ipv4.tcp_orphan_retries = 3


#较低的系统重试率

net.ipv4.tcp_syn_retries = 3


# 表示本机向外发起TCP SYN连接超时重传的次数

net.ipv4.tcp_synack_retries = 3


# 在丢弃激活(已建立通讯状况)的TCP连接之前,需要进行多少次重试

net.ipv4.tcp_retries2 = 5


#TCP时间戳(默认值:60)

net.ipv4.tcp_fin_timeout = 30


# orphans的最大值(默认值:16384)

net.ipv4.tcp_max_orphans = 2000


#表示开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接,默认为0,表示关闭

net.ipv4.tcp_tw_reuse = 1


#针对TIME-WAIT,不要开启(默认值:0)。不少文章提到同时开启tcp_tw_recycle和tcp_tw_reuse,会带来C/S在NAT方面的异常。个人接受的做法是,开启tcp_tw_reuse,增加ip_local_port_range的范围,减小tcp_max_tw_buckets和tcp_fin_timeout的值

net.ipv4.tcp_tw_recycle = 1


# 减少交换内存使用,默认60,建议10-30;0为关闭。

vm.swappiness = 40


#表示强制Linux VM最低保留多少空闲内存(Kbytes)。

当可用内存低于这个参数时,系统开始回收cache内存,以释放内存,直到可用内存大于这个值

vm.min_free_kbytes=409600


#该项表示内核回收用于directory和inode cache内存的倾向:

缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比

降低该值低于100,将导致内核倾向于保留directory和inode cache

增加该值超过100,将导致内核倾向于回收directory和inode cache。

网上文章建议 sysctl -w  vm.vfs_cache_pressure=200  

其实一般情况下不需要调整,只有在极端场景下才建议进行调整,只有此时,才有必要进行调优,这也是调优的意义所在

vm.vfs_cache_pressure=200


#指定脏数据能存活的时间。在这里它的值是30秒。当 pdflush/flush/kdmflush 进行起来时,它会检查是否有数据超过这个时限,如果有则会把它异步地写到磁盘中。毕竟数据在内存里待太久也会有丢失风险。

vm.dirty_expire_centisecs = 1500


#指定多长时间 pdflush/flush/kdmflush 这些进程会起来一次。

vm.dirty_writeback_centisecs = 1000


#是绝对的脏数据限制,内存里的脏数据百分比不能超过这个值。如果脏数据超过这个数量,新的IO请求将会被阻挡,直到脏数据被写进磁盘。这是造成IO卡顿的重要原因,但这也是保证内存中不会存在过量脏数据的保护机制。

vm.dirty_ratio = 2


#是内存可以填充“脏数据”的百分比。这些“脏数据”在稍后是会写入磁盘的,pdflush/flush/kdmflush这些后台进程会稍后清理脏数据。举一个例子,如有32G内存,那么有3.2G的内存可以待着内存里,超过3.2G的话就会有后来进程来清理它。

vm.dirty_background_ratio = 100