Пытаюсь самостоятельно разобраться в настройке ng_nat, но что-то не получается - запутался. Интересует принцип установки режимов работы ng_nat через ngctl msg nat: setmode { flags= mask= }.
Я нашел ваш скрипт ( http://antigreen.org/vadim/freebsd/ng_nat/ng_nat.sh ). Там есть такая функция ng_nat_set_mode(), а в ней проверка на необходимость установки какого-либо режима с последующей конфигурацией через setmode.
Если можно вопрос: как правильно устанавливать параметр setmode mask= ? У вас при начальном конфигурировании экземпляра ng_nat он установлен в mask=0. Я прочитал в мане про libalias, что оно ожидает от нас флаги и маску которая указывает какие конкретно биты надо менять (?). Я вот не программист и мне как-то сложновато сходу понять в чем соль :)
Скажем если я устанавливаю конфигурацию вида: log=1 deny_incoming=2 same_ports=4 unregistered_only=16 reset_on_addr_change=32
ng_nat и установка режима через setmode
Date: 2011-03-06 06:59 pm (UTC)Пытаюсь самостоятельно разобраться в настройке ng_nat, но что-то не получается - запутался. Интересует принцип установки режимов работы ng_nat через ngctl msg nat: setmode { flags= mask= }.
Я нашел ваш скрипт ( http://antigreen.org/vadim/freebsd/ng_nat/ng_nat.sh ).
Там есть такая функция ng_nat_set_mode(), а в ней проверка на необходимость установки какого-либо режима с последующей конфигурацией через setmode.
Если можно вопрос: как правильно устанавливать параметр setmode mask= ? У вас при начальном конфигурировании экземпляра ng_nat он установлен в mask=0. Я прочитал в мане про libalias, что оно ожидает от нас флаги и маску которая указывает какие конкретно биты надо менять (?). Я вот не программист и мне как-то сложновато сходу понять в чем соль :)
Скажем если я устанавливаю конфигурацию вида:
log=1
deny_incoming=2
same_ports=4
unregistered_only=16
reset_on_addr_change=32
это значит 32+16+4+2+1=55 (00000000 00000000 00000000 00110111)
ngctl msg nat: setmode { flags=55 mask=0 }
А если я теперь хочу на лету выключить логирование то какое значение маски применять?
Может достаточно просто указать новое значение при нулевой маске чтобы ng_nat заместил все старые биты им:
ngctl msg nat: setmode { flags=54 mask=0 }
Или надо все же указать еще и маску 4294967294 (11111111 11111111 11111111 11111110)
ngctl msg nat: setmode { flags=54 mask=4294967294 }
Заранее спасибо.