Полезные sysctl для Linux

Маршрутизация

Включить маршрутизацию IPv4:

# sysctl -w net.ipv4.ip_forward=1

Для того, чтобы настройки применялись при перезагрузки системы, нужно вписать их в файл /etc/sysctl.conf

Размер таблицы conntrack

Чтобы посмотреть, переполнилась ли таблица установленных соединений conntrack, можно посмотреть следующие sysctl:

# sysctl net.netfilter.nf_conntrack_max
# sysctl net.netfilter.nf_conntrack_count

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

Размер хэш-таблицы conntrack

Для настройки размера хэш-таблицы можно воспользоваться переменной, доступной через файловую систему /sys. По умолчанию размер хэш таблицы считается как nf_conntrack_max / 8.

Задать значение в реальном времени можно следующим образом:

# echo 24576 > /sys/module/nf_conntrack/parameters/hashsize

Чтобы настройка вступала в силу при перезагрузке, нужно добавить в /etc/modprobe.conf опции модуля ядра conntrack:

options ip_conntrack hashsize=24576

Таймауты таблицы соединений

Список параметров, настраивающих таймауты устаревания записей в таблице conntrack, можно посмотреть следующим образом:

# sysctl -a | grep conntrack | grep timeout

Уменьшение таймаутов снизит количество записей в таблице, т.к. устаревшие записи будут пропадать из неё раньше.

Особое внимание стоит обратить на настройку net.netfilter.nf_conntrack_tcp_timeout_established. По умолчанию установленные TCP-сеансы остаются в таблице 5 дней (432000 секунд). Стоит задать этой настройке значение 30-120 секунд:

# sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=60

Увеличение количества доступных сокетов

Ускоряем повторное использование сокетов (TIME_WAIT)

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1

Уменьшаем время пребывания сокета в состоянии FIN-WAIT-2

net.ipv4.tcp_fin_timeout=30

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

net.ipv4.ip_local_port_range = 1024 65535

Отключение фильтрации трафика на сетевых мостах

По умолчанию ядро Linux фильтрует трафик на сетевых мостах. Для отключения нужно выставить следующие переменные:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Степень вытеснения в область подкачки

По умолчанию ядро Linux стремится вытеснить из оперативной памяти в пространство подкачки до 60% данных. Освободившаяся оперативная память используется в качестве дискового кэша и кэша файловой системы. Настроить степень использования пространства подкачки в процентах можно следующим образом:

vm.swappiness = 1

Полностью отключать использование пространства подкачки, выставляя значение 0, не рекомендуется.

Отключение IPv6

По умолчанию многие программы в Linux предпочитают использовать IPv6-адреса, которые могут быть недоступны. Чтобы отключить использование IPv6, достаточно присвоить следующей переменной ядра значение 1:

net.ipv6.conf.all.disable_ipv6 = 1

Если ранее в системе были запущены демоны, ожидающие подключений на адресах IPv6, после изменения переменной ядра их нужно перезапустить, чтобы они начали прослушивать только адреса IPv4.

Другие материалы