Полезные 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.