Для оптимизации загрузки сервера решил поднять "ядерный NAT". Преимущества этого чуда достаточно подробно описаны в
этой статье.
Итак, приступим! Для начала следует пересобрать ядро, предварительно добавив в него необходимые опции.
Копируем оригинальное ядро:
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