linux常见优化参数 - kyohwang/games GitHub Wiki

禁止包转发,一般用作网关、vpn的机器需要打开此选项
net.ipv4.ip_forward = 0
启用包来源过滤,用于实现反向过滤技术,也即uRPF,它验证反向数据包的流向,以避免伪装IP攻击,用作网关、vpn等需要停用
net.ipv4.conf.default.rp_filter = 1
当SYN队列满了后,TCP会通过源地址端口、目标地址端口和时间戳打造出一个特别的Sequence Number发回去(又叫cookie),如果是攻击者则不会有响应,如果是正常连接,则会把这个 SYN Cookie发回来,然后服务端可以通过cookie建连接(即使你不在SYN队列中)
net.ipv4.tcp_syncookies = 1
启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。
net.ipv4.tcp_sack = 1
每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 2048
定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128
net.core.somaxconn = 2048
参数决定了SYN_RECV状态队列的数量,一般默认值为512或者1024,即超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。可根据情况增加该值以接受更多的连接请求。
net.ipv4.tcp_max_syn_backlog = 2048 官方文档上说tcp_tw_reuse 加上tcp_timestamps(又叫PAWS, for Protection Against Wrapped Sequence Numbers)可以保证协议的角度上的安全
net.ipv4.tcp_timestamps = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_reuse = 1
系统在同时所处理的最大timewait sockets 数目。如果超过此数的话,time-wait socket 会被立即砍除并且显示警告信息
net.ipv4.tcp_max_tw_buckets = 5000
对于本端断开的socket连接,TCP保持在FIN_WAIT_2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为 60 秒
net.ipv4.tcp_fin_timeout = 30
开启keepalive的闲置时 长
net.ipv4.tcp_keepalive_time = 1200
keepalive探测包的发送间隔
net.ipv4.tcp_keepalive_probes = 5
如果对方不予应答,探测包的发送次数
net.ipv4.tcp_keepalive_intvl = 15
端口分配区间
net.ipv4.ip_local_port_range = 1024 65000
对于一个新建的tcp连接,内核要发送几个SYN连接请求才决定放弃,默认值是5
net.ipv4.tcp_syn_retries = 2
这是三次握手的第二次连接,服务器端发送syn+ack响应 这里决定内核发送次数
net.ipv4.tcp_synack_retries = 2