>>Научите, пожалуйста, задавать description через ngctl.
>>
>>На такое ругается:
>>msg nat1: redirectport { local_addr=x.x.x.x local_port=8865 alias_port=8865 proto=6 description="aaaa"}
>
>Вообще, надо показывать, как ругается. Подозреваю, что пробел перед закрывающей фигурной забыли. Спасибо! Без пробела (как указано выше) заработало.
С пробелом перед закрывающей скобкой ругается:
ngctl: send msg: Invalid argument
Однако, в следующем виде прекрасно добавляет (пробел после протокола):
msg nat1: redirectport { local_addr=x.x.x.x local_port=8865 alias_port=8865 proto=6 }
А нужно без пробелов в начале и в конце в любом случае?
>[оверквотинг удален]
>>И кто-нибудь знает ещё, как ограничить размер таблицы соединений NAT, чтобы ядерная
>>память не кончалась, а наиболее старые соединения выкидывались. А
>>также как увеличить память ядра под эту таблицу.
>>У меня тысячи одновременных коннектов. Через несколько дней начинает глючить. sysctl
>>показывает полную загрузку одного проца, а ping любого адреса выдает: cannot
>>allocate memory. Причем память свободная есть.
>
>Это памяти ядра ему не хватает. Да, есть такая проблема, но, к
>сожалению, полного решения для неё нет. Во-первых, можно увеличить в /boot/loader.conf
>значение vm.kmem_size, во-вторых, прошлым летом в 7-ку был патч, который более
vm.kmem_size: 335544320 (такой же vm.kmem_size_max)
А оперативки всего 1 Гб стоит.
Не верится что таблица NAT пожирает 300 мегов.
Её никак нельзя посмотреть? Про ipfw nat вроде говорилось что есть команда ipfw nat N show, которая показывает содержимое таблицы.
http://wiki.freebsd.org/Libalias
"ipfw nat N show - show nat instance N sessions"
Проверил, ничего не показывает.
>агрессивно удаляет старые соединения, чтобы меньше текло: http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/netinet/libali... (это только часть,
>в том коммите еще и другие файлы трогали, чтоб побыстрее работало).
>Если у вас 7-ка старше года - обновитесь.
>
>В 6-ку его, к сожалению, не смержили, можно попробовать накатить руками.
7.1 RELEASE так что должен уже быть.
>[оверквотинг удален]
>>все не подходит. Потому что допустим я хочу направить 1000-2000 на
>>некий хост, а _все_остальные_ на другой (в SOHO роутерах это называется
>>DMZ).
>
>Воспользуйтесь rc-скриптом с http://antigreen.org/vadim/freebsd/ng_nat/ - там рядом описано, как пользоваться, пишется в
>rc.conf в стиле natd (а ipfw nat тоже старается быть похожим
>на natd). Он диапазоны умеет, перечислит все порты за вас. На
>самом деле, технически ipfw nat и natd тоже перечисляют внутри, но
>скрывают это от пользователя, здесь же в показе всех редиректов это
>будет видно. Но думаю, что это не проблема :)
Спасибо! Раз реализация одинаковая, то и не важно, как оно описывается.
Но в ipfw nat есть полезная опция смены привязанного IP адреса при смене его на указанном интерфейсе:
if nic Use ip addres of NIC for aliasing, dynamically changing it if NIC's ip address change.
Также в ng_nat не видно опции USE_SOCKETS, или она недоступна в kernel режиме?
А ещё разработчик ipfw nat указывает вот что:
To load/unload a libalias module (kernel):
kldload alias_ftp # active ftp work ok now
kldunload alias_ftp
При этом видимо и опция libalias PKT_ALIAS_PUNCH_FW активизируется? И по идее должно влиять и на ng_nat?