Для оптимизации загрузки сервера решил поднять "ядерный NAT". Преимущества этого чуда достаточно подробно описаны в этой статье.
Итак, приступим! Для начала следует пересобрать ядро, предварительно добавив в него необходимые опции.
Копируем оригинальное ядро:
Редактируем конфиг ядра:
Добавляем необходимые опции:
Сохраняем конфиг (Ctrl+C -> exit) и приступаем к сборке ядра:
По завершению процесса необходимо установить новое ядро:
Ядро установлено! Самое время перезагрузиться!
Итак, приступим! Для начала следует пересобрать ядро, предварительно добавив в него необходимые опции.
Копируем оригинальное ядро:
cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/punkhs
Редактируем конфиг ядра:
ee /usr/src/sys/i386/conf/punkhs
Добавляем необходимые опции:
# Настройки для NAT options IPFIREWALL # Включаем фаерволл options IPFIREWALL_VERBOSE # Включаем логирование для фаерволла options IPFIREWALL_VERBOSE_LIMIT=1000 # Ограничиваем логи кол-вом строк (1000) options IPFIREWALL_NAT # Включаем поддержку kernel NAT options IPFIREWALL_FORWARD # Изменение назначения пакетов options IPFIREWALL_DEFAULT_TO_ACCEPT # Правило по умолчанию options LIBALIAS # Необходимо для kernel NAT options ROUTETABLES=2 # Поддержка двух таблиц маршрутизации options IPDIVERT # Необходимо для kernel NAT options DUMMYNET # Для Kernel NAT + Ограничение пропускной способности
options HZ="1000" # Для DUMMYNET
Сохраняем конфиг (Ctrl+C -> exit) и приступаем к сборке ядра:
cd /usr/src make buildkernel KERNCONF=punkhs
По завершению процесса необходимо установить новое ядро:
make installkernel KERNCONF=punkhs
Ядро установлено! Самое время перезагрузиться!
shutdown -r now