TCP SYN cookie 啟用後總是開啟?

TCP SYN cookie 啟用後總是開啟?

對於 Linux 核心 2.6.32,如果我設定net.ipv4.tcp_syncookies = 1它是始終使用還是僅在 SYN 洪水攻擊期間使用?

我發現兩個消息來源的說法相反。

1:

「但是,使用 SYN cookie 時有兩個注意事項。首先,伺服器僅限於 8 個唯一的 MSS 值,因為這是可以用 3 位元編碼的所有值。其次,伺服器必須拒絕所有TCP 選項(例如大視窗或時間戳記),因為伺服器會丟棄原本儲存該資訊的SYN 佇列項目[1]。

雖然這些限制必然會導致次優體驗,但客戶很少注意到它們的影響,因為它們僅在受到攻擊時才應用。在這種情況下,為了保存連線而失去 TCP 選項通常被認為是合理的妥協。

2:

“缺點是並非所有 TCP 資料都適合 32 位元序號字段,因此高效能所需的一些 TCP 選項可能會被停用。”這意味著如果您打開 SYN Cookie,選擇性 ACK 和 TCP 視窗縮放等選項將不起作用,即使您的伺服器目前沒有受到攻擊。

答案1

第二個來源

“這意味著如果您打開 SYN Cookie,選擇性 ACK 和 TCP 視窗縮放等選項將不起作用,即使您的伺服器目前沒有受到攻擊”

簡直就是廢話,直到

“TCP:request_sock_TCP:連接埠 53 上可能存在 SYN 泛洪。正在傳送 cookie。檢查 SNMP 計數器”

發生什麼都沒有被禁用。

透過將您的效能與 iperf3 進行比較並啟用/停用「net.ipv4.tcp_sack」和「net.ipv4.tcp_window_scaling」同時保持「net.ipv4.tcp_syncookies = 1」啟用,可以輕鬆證明這一點。

為什麼你閱讀隨機來源而不是官方來源? https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

tcp_syncookies - BOOLEAN
    Only valid when the kernel was compiled with CONFIG_SYN_COOKIES
    Send out syncookies when the syn backlog queue of a socket
    overflows. This is to prevent against the common 'SYN flood attack'
    Default: 1

    Note, that syncookies is fallback facility.
    It MUST NOT be used to help highly loaded servers to stand
    against legal connection rate. If you see SYN flood warnings
    in your logs, but investigation shows that they occur
    because of overload with legal connections, you should tune
    another parameters until this warning disappear.
    See: tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.

    syncookies seriously violate TCP protocol, do not allow
    to use TCP extensions, can result in serious degradation
    of some services (f.e. SMTP relaying), visible not by you,
    but your clients and relays, contacting you. While you see
    SYN flood warnings in logs not being really flooded, your server
    is seriously misconfigured.

相關內容