Большая таблица в ipnat

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