网络内核参数优化
作者:互联网
1 、 /proc/sys/net/ipv4/tcp_syn_retries
/proc/sys/net/ipv4/tcp_syn_retries 参数标识对一个新建连接,内核要发送多少个SYN连接请求才决定放弃,此值不应该大于255,默认值是5, 建议设置为2 设置方法如下:
echo 2 > /proc/sys/net/ipv4/tcp_syn_retries
2、/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_time 参数表示 当 keepalive 启用的时候,TCP发送keepalive消息的频度。默认值是7200秒,建议修改为300秒。设置方法
echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time
3、/proc/sys/net/ipv4/tcp_orphan_retries
/proc/sys/net/ipv4/tcp_orphan_retries 参数表示孤儿Socket 废弃前重试的次数,重负载web服务器建议调小。普通Web服务器建议设置为 1。设置方法
echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries
4、/proc/sys/net/ipv4/tcp_syncookies
/proc/sys/net/ipv4/tcp_syncookies 参数表示开启SYN Cookies。当出现SYN等待队列溢出时,启用Cookies 来处理,可防范少了SYN攻击。默认值为0,表示关闭,普通web服务器建议设置如下:
echo 1 > //proc/sys/net/ipv4/tcp_syncookies
这里提到SYN攻击,他是当前最流行的DoS(拒绝服务)和DDos(分布式拒绝服务)的方式之一,它利用TCP协议缺陷,发送大量的TCP连接请求,常用假冒的IP和IP号段发送海量的请求连接第一个握手包。被攻击服务器回应第二个握手包,因为是假冒IP,对方永远收不到(不会回应)第三个握手包,导致被攻击服务器处于拥有大量的SYN_RECV状态的“半连接”,并且默认重试5次之后回应第2次握手包,直到塞满整个TCP队列,导致CPU/内存资源耗尽。
5、/proc/sys/net/ipv4/tcp_max_syn_backlog
/proc/sys/net/ipv4/tcp_max_syn_backlog 参数表示 设置SYN队列最大长度,默认值为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数,普通Web服务器建议设置为:
echo 8192 > /proc/sys/net/ipv4/tcp_max_syn_backlog
6、/proc/sys/net/ipv4/tcp_synack_retries
/proc/sys/net/ipv4/tcp_synack_retries 用来降低服务器SYN+ACK 报文重试次数(默认是5次),尽快释放等待资源,对于远端的SYN请求,内核会发送 SYN+ACK 数据报文,以确认收到上一个SYN请求包,这就是所谓的三次握手 机制的第二次。此参数是觉得内核放弃连接之前所送出的SYN+ACK的数目。
上面三个参数对于SYN攻击的危害一一对应,完完全全是对症下药,但这些措施也是双刃剑,设置过大可能会造成更多的服务器资源消耗,因此设置前需评估服务器资源压力。
7、/proc/sys/net/ipv4/tcp_synack_retries
标签:proc,SYN,tcp,sys,参数,内核,net,优化,ipv4 来源: https://www.cnblogs.com/wag1027/p/16520140.html