收到syn-recv數量超出閾值的報警

  1. 利用命令查看如圖服務器

wKiom1iVL0GBVDa3AACndQC9b9M409.png-wh_50








能夠發現確實有大量的連接處於syn-recv的狀態
網絡


2.syn-recv如何產生的呢併發

首先,syn-recv是tcp三次握手的中間狀態,是服務端口如應用服務器端口,收到syn包併發送[syn,ack]包所處的狀態,這時若是再收到ACK的包,就完成了三次握手,創建起了TCP連接
負載均衡


3.產生大量syn-recv包狀態主要有兩種可能:tcp

一:客戶端或者請求端未能收到服務器的syn_ack包ide

二:客戶端或者請求端收到服務器的syn_ack包,可是客戶端沒有返回服務端ack包spa


分析且如何判斷這兩種問題:blog

針對第一種問題:能夠先從網絡層次來判斷問題,最簡單快速的是ping檢測
ci

針對第二種問題:一種多是客戶端發送的ACK客戶端拒絕接受,好比SYN Flood類型的DOS/DDOS***;還有一種多是,客戶端或者請求端收到的SYN,ACK包不合法,通常的syn包的目的服務地址和應答的  syn,ack包的源地址不一樣。若是在這種狀況下只配置了DNAT而不進行SNAT的服務網絡環境下容易出現,主要是因爲inbound(syn)和outbound([syn,ack]包)穿越了不一樣的網關/防火牆/負載均衡器,從而致使[syn,ack]路由到互聯網的源地址(通常是防火牆的出口地址)與syn包的目的地址(服務器的虛擬IP)不一樣,這時客戶機沒法將syn包和[syn,ack]包關聯在一塊兒,從而會認爲發出的syn包尚未被應答,因而繼續等待應答包。這樣服務器鏈接一直保持在syn_recv狀態(半開鏈接)直到超時。路由


4.tcp的三次鏈接與四次斷開

在TCP/IP協議中,TCP協議提供可靠的鏈接服務,採用三次握手創建一個鏈接。
第一次握手:創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器 進入SYN_RECV狀態; 第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入 ESTABLISHED狀態,完成三次握手。 完成三次握手,客戶端與服務器開始傳送數據.

TCP的四次斷開:
(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送(報文段4)。
(2)服務器B收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1(報文段5)。和SYN同樣,一個FIN將佔用一個序號。
(3)服務器B關閉與客戶端A的鏈接,發送一個FIN給客戶端A(報文段6)。
(4)客戶端A發回ACK報文確認,並將確認序號設置爲收到序號加1(報文段7)。

相關文章
相關標籤/搜索