Cостояния ipnat
# ipf -T list | grep ipf_nattable_max
ipf_nattable_max min 0x1 max 0x7fffffff current 180000 — максимальное количество запросов в ipnat (по умолчанию 30000)
Делаю себе 300000
#ipnat -s
inuse 32177 -количество запросов сейчас
hash efficiency 43.37%
bucket usage 85.17% — загрузка
Идем /usr/src/sys/contrib/ipfilter/netinet/
находим ip_nat.h правим следующим образом:
Ищем undef LARGE_NAT меняем define LARGE_NAT
ищем # define NAT_SIZE 2047
меняем на # define NAT_SIZE 4093
ищем # define RDR_SIZE 2047
меняем на # define RDR_SIZE 4093
ищем # define HOSTMAP_SIZE 8191
меняем на # define HOSTMAP_SIZE 16383
ищем # define NAT_TABLE_MAX 180000
меняем на # define NAT_TABLE_MAX 300000
ищем # define NAT_TABLE_SZ 16383
меняем на # define NAT_TABLE_SZ 32765
Еще есть такой параметр #define DEF_NAT_AGE 1200 /* 10 minutes (600 seconds) */
Если я правильно понял то это ограничение по времени на TCP сессий в нате
Я уменьшаю значение до 600 (но совсем не уверен что делаю правильно)
Дальше сохраняю этот файл и делаю его копию, потому что после cvsup файл затирается. И об этом нужно помнить, поскольку легко после очередной компиляции ядра упереться в начальные настройки ipfw