Для ядра Linux 2.6.32, если я установил net.ipv4.tcp_syncookies = 1
будет ли это использоваться всегда или только во время атаки SYN flood?
Я нашел 2 источника, которые говорят об обратном.
1:
"Однако есть два предупреждения, которые вступают в силу при использовании файлов cookie SYN. Во-первых, сервер ограничен только 8 уникальными значениями MSS, так как это все, что может быть закодировано в 3-х битах. Во-вторых, сервер должен отклонить все Параметры TCP (например, большие окна или временные метки), поскольку сервер отбрасывает запись очереди SYN, в которой в противном случае сохранялась бы эта информация. [1]
Хотя эти ограничения обязательно приводят к неоптимальному опыту, их эффект редко замечается клиентами, потому что они применяются только при атаке. В такой ситуации потеря опций TCP для сохранения соединения обычно считается разумным компромиссом ».
2:
«Обратной стороной является то, что не все данные TCP помещаются в 32-битное поле порядкового номера, поэтому некоторые параметры TCP, необходимые для высокой производительности, могут быть отключены». Это означает, что такие параметры, как выборочные ACK и масштабирование окна TCP, не будут работать, если вы включите файлы cookie SYN, даже если ваш сервер в настоящее время не подвергается атаке ».
второй источник «это означает, что такие параметры, как выборочные ACK и масштабирование окна TCP не будут работать, если вы включите файлы cookie SYN, даже если ваш сервер в настоящее время не подвергается атаке» - это просто чушь, пока «TCP: request_sock_TCP: Possible SYN» лавинная рассылка на порт 53. Отправка файлов 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 Действителен только в том случае, если ядро было скомпилировано с CONFIG_SYN_COOKIES. Отправлять файлы cookie синхронизации при переполнении очереди ожидания синхронизации сокета. Это сделано для предотвращения распространенной атаки SYN flood. По умолчанию: 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.