Настройка Linux для высоконагруженных проектов и защиты от DDoS - 2

Понедельник, 2017-01-23, 20:53

Приветствую Вас Гость | RSS

Главная » Статьи » Разное

Настройка Linux для высоконагруженных проектов и защиты от DDoS - 2

Максимум: максимальный размер буфера, который может быть автоматически выделен для приема сокету TCP. Это значение не отменяет максимума, заданного в файле /proc/sys/net/core/rmem_max. При «статическом» выделении памяти с помощью SO_RCVBUF этот параметр не имеет значения.

net.ipv4.tcp_wmem = 4096 65536 16777216

Векторная переменная в файле tcp_wmem содержит 3 целочисленных значения, определяющих минимальное, принятое по умолчанию и максимальное количество памяти, резервируемой для буферов передачи сокета TCP.

Минимум: каждый сокет TCP имеет право использовать эту память по факту своего создания. Размер минимального буфера по умолчанию составляет 4 Кбайт (4096)

Значение по умолчанию: количество памяти, допустимое для буфера передачи сокета TCP по умолчанию. Это значение применяется взамен параметра /proc/sys/net/core/wmem_default, используемого другими протоколами и обычно меньше, чем /proc/sys/net/core/wmem_default. Размер принятого по умолчанию буфера обычно (по умолчанию) составляет 16 Кбайт (16384)

Максимум: максимальное количество памяти, которое может быть автоматически выделено для буфера передачи сокета TCP. Это значение не отменяет максимум, заданный в файле /proc/sys/net/core/wmem_max. При «статическом» выделении памяти с помощью SO_SNDBUF этот параметр не имеет значения.

net.ipv4.tcp_orphan_retries = 0

 

Целочисленной значение tcp_orphan_retries определяет число неудачных попыток, после которого уничтожается соединение TCP, закрытое на локальной стороне. По умолчанию используется значение 7, соответствующее приблизительно периоду от 50 секунд до 16минут в зависимости от RTO. На сильно загруженных WEB-серверах имеет смысл уменьшить значение этого параметра, поскольку закрытые соединения могут поглощать достаточно много ресурсов.

net.ipv4.tcp_syncookies = 0

Согласно рекомендациям разработчиков ядра, этот режим лучше отключить.

net.ipv4.netfilter.ip_conntrack_max = 16777216

Максимальное количество соединений для работы механизма connection tracking(используется, например, iptables). При слишком маленьких значениях ядро начинает отвергать входящие подключения с соответствующей записью в системном логе.

net.ipv4.tcp_timestamps = 1

Разрешает временные метки протокола TCP. Их наличие позволяет управлять работой протокола в условиях серьезных нагрузок (см. tcp_congestion_control).

net.ipv4.tcp_sack = 1

Разрешить выборочные подтверждения протокола TCP. Опция необходима для эффективного использования всей доступной пропускной способности некоторых сетей.

net.ipv4.tcp_congestion_control = htcp

Протокол, используемый для управления нагрузкой в сетях TCP. bic и cubicреализации, используемые по умолчанию, содержат баги в большинстве версий ядра RedHat и ее клонов. Рекомендуется использовать htcp.

net.ipv4.tcp_no_metrics_save = 1

Не сохранять результаты измерений TCP соединения в кеше при его закрытии. В некоторых случаях помогает повысить производительность.

net.ipv4.route.flush = 1

Актуально для ядер 2.4. По странной причине в ядрах 2.4, если в рамках TCP сессии произошел повтор передачи с уменьшенным размером окна, все соединения с данным хостом в следующие 10 минут будут иметь именно этот уменьшенный размер окна. Данная настройка позволяет этого избежать.

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

Активируем защиту от IP-спуфинга.

net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

Запрещаем маршрутизацию от источника.

net.ipv4.ip_local_port_range = 1024 65535

Увеличиваем диапазон локальных портов, доступных для установки исходящих подключений

net.ipv4.tcp_tw_reuse = 1

Разрешаем повторное использование TIME-WAIT сокетов в случаях, если протокол считает это безопасным.

net.ipv4.tcp_window_scaling = 1

Разрешаем динамическое изменение размера окна TCP стека

net.ipv4.tcp_rfc1337 = 1

Защищаемся от TIME_WAIT атак.

net.ipv4.ip_forward = 0

Запрещаем переадресацию пакетов, поскольку мы не роутер.

net.ipv4.icmp_echo_ignore_broadcasts = 1

Не отвечаем на ICMP ECHO запросы, переданные широковещательными пакетами

net.ipv4.icmp_echo_ignore_all = 1

Можно вообще не отвечать на ICMP ECHO запросы (сервер не будет пинговаться)

net.ipv4.icmp_ignore_bogus_error_responses = 1

Не отвечаем на ошибочно сформированные сообщения

net.core.somaxconn = 65535

Максимальное число открытых сокетов, ждущих соединения. Имеет смысл увеличить значение по умолчанию.

net.core.netdev_max_backlog = 1000

Параметр определяет максимальное количество пакетов в очереди на обработку, если интерфейс получает пакеты быстрее, чем ядро может их обработать.

net.core.rmem_default = 65536

Размер буфера приема данных по умолчанию для всех соединений.

net.core.wmem_default = 65536

Размер буфера передачи данных по умолчанию для всех соединений.

net.core.rmem_max = 16777216

Максимальный размер буфера приема данных для всех соединений.

net.core.wmem_max = 16777216

Максимальный размер буфера передачи данных для всех соединений.

Это всё.
Удачи!

P.S. Количество соединений обычно можно подсчитать с помощью
wc -l /proc/net/ip_conntrack

Категория: Разное | Добавил: prostranstvo (2014-08-12)
Просмотров: 199 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]