Linux系統調優 核心相關引數(五)

2022-05-24 11:45:18 字數 2935 閱讀 2196

修改核心引數有3種辦法:一種臨時修改,兩種永久修改。

臨時修改是使用sysctl [選項] [引數名=值]命令;永久修改是修改/etc/sysctl.conf檔案或修改/proc/sys/目錄下的對應檔案(例如,修改net.ipv4.tcp_synack_retries=0,即echo 0 > /proc/sys/net/ipv4/tcp_synack_retries)。

最常見的核心引數調優就是為了防止dos(拒絕服務攻擊)和ddos(分布式拒絕服務攻擊)。其中syn flood是當前最流行的dos與ddos的方式之一,這是種利用tcp協議缺陷,傳送大量偽造的tcp連線請求,常用假冒的ip或ip號段發來的海量請求連線的第乙個握手包(syn包),被攻擊伺服器回應第二個握手包(syn+ack包),因為對方是假冒ip,對方永遠收不到包且不會回應第三個握手包。導致被攻擊伺服器保持大量syn_recv狀態的「半連線」,並且會重試預設5次回應第二個握手包,塞滿tcp等待連線佇列,資源耗盡(cpu滿負荷或記憶體不足),讓正常的業務請求連線不進來。

解決辦法就是配置相關引數,可以新增到/etc/sysctl.conf檔案中,也可以直接修改/proc/sys/目錄下的對應檔案。

[root@youxi1 ~]# vim /etc/sysctl.conf  //新增或修改引數

net.ipv4.tcp_synack_retries = 0

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_max_syn_backlog = 20480

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 10

fs.file-max = 819200

net.core.somaxconn = 65535

net.core.rmem_max = 1024123000

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 165536

net.ipv4.ip_local_port_range = 10000 65535

引數說明:

1)主要引數

net.ipv4.tcp_synack_retries  表示回應第二個握手包(syn+ack包)給客戶端ip後,如果收不到第三次握手包(ack包),進行重試的次數(預設為5)。修改這個引數為0,可以加快**半連線,減少資源消耗,但是有乙個***:網路狀況很差時,如果對方沒收到第二個握手包,可能連線伺服器失敗,但對於一般**,使用者重新整理一次頁面即可。根據抓包經驗,這種情況很少,但為了保險起見,可以只在被tcp洪水攻擊時臨時啟用這個引數。之所以可以把

tcp_synack_retries改為

0,因為客戶端還有

tcp_syn_retries引數,預設是5,即使伺服器端沒有重發

syn+ack包,客戶端也會重發

syn握手包。

net.ipv4.tcp_syn_retries  表示當沒有收到伺服器端的syn+ack包時,客戶端重發syn握手包的次數(預設為5)。

net.ipv4.tcp_max_syn_backlog  半連線佇列長度(預設為1024),加大syn佇列長度可以容納更多等待連線的網路連線數,具體多少數值受限於記憶體

2)輔助引數

fs.file-max  系統允許的檔案控制代碼的最大數目(也就是能開啟檔案的最大數量),因為連線需要占用檔案控制代碼。注意:/etc/security/limits.conf檔案內對nofile的配置(使用ulimit -n檢視),還有/etc/security/limits.d/20-nproc.conf檔案內對nproc的配置(使用ulimit -u檢視),最好配置玩這兩個引數重啟下系統。

net.core.somaxconn  用來應對突發的大併發connect 請求

net.core.rmem_max  最大的tcp 資料接收緩衝(位元組)

net.core.wmem_max  最大的tcp 資料傳送緩衝(位元組)

net.core.netdev_max_backlog  網路裝置接收資料報的速率比核心處理這些包的速率快時,允許送到佇列的資料報的最大數目

net.ipv4.ip_local_port_range  本機主動連線其他機器時的埠分配範圍,比如說,在vsftpd主動模式會用到

3)次級輔助引數

注意:以下引數面對外網時,不要開啟。因為***很明顯。

net.ipv4.tcp_syncookies  當出現半連線佇列溢位時是否向對方傳送syncookies(預設為0),1表示啟用cookies來處理,可防範少量syn攻擊;0表示關閉。

調大半連線佇列後沒必要

net.ipv4.tcp_tw_reuse  time_wait狀態的連線重用功能是否開啟(預設為0),1表示允許將time-wait sockets重新用於新的tcp連線;0表示關閉。

net.ipv4.tcp_tw_recycle  時間戳選項,與前面net.ipv4.tcp_tw_reuse引數配合,1表示開啟tcp連線中time-wait sockets的快速**,預設為0,表示關閉。

net.ipv4.tcp_fin_timeout  time_wait狀態的連線**功能,預設值是60,對於本端斷開的socket連線,tcp保持在fin_wait_2狀態的時間

擴充套件:tcp三次握手

client-------------------------server

syn  ------------------------->

<------------------------syn+ack

ack  ------------------------->    (syn flood就是這一步不回)

參考:linux下防禦ddos攻擊的操作梳理

linux系統核心引數優化

linux之核心引數調優

調優1 調優2調優3 調優4net.ipv4.tcp syncookies 1 net.ipv4.tcp tw reuse 1 net.ipv4.tcp tw recycle 1 net.ipv4.tcp fin timeout 30 net.ipv4.tcp keepalive time 1200...

linux系統之核心調優

1 編輯核心配置檔案 永久性 vim etc sysctl.con2 引數及簡單說明 net.ipv4.tcp fin timeout 2 保持在fin wait 2狀態的時間,使系統可以處理更多的連線。此引數值為整數,單位為秒。net.ipv4.tcp tw reuse 1 開啟重用,允許將tim...

Linux核心 修改TCP IP調優引數

所有的tcp ip調優引數都位於 proc sys net 目錄.例如,下面是最重要的一些調優引數,後面是它們的含義 1.proc sys net core rmem max 最大的tcp資料接收緩衝 2.proc sys net core wmem max 最大的tcp資料傳送緩衝 3.proc ...