Надо не статью смотреть, а включить голову:
- посмотреть скрипты
- почитать документацию
Уже давно не нужно пересобирать ядро, достаточно загружать модули.
NAT:
- есть user space реализация, используется демон natd - жутко старый конструктив
- есть ядерная реализация и этим все сказано
загрузить ipfw можно через /boot/loader.conf, но в системе это делают
через rc-скрипты расположенные в /etc/rc.d, а опции задаются в /etc/rc.conf
Есть только две ядерных переменных, которые нужно загружать через
loader.conf до загрузки самого модуля ipfw, man ipfw:
net.inet.ip.fw.default_to_accept
net.inet.ip.fw.tables_max
Чтобы понять первоначальное состояние firewall'а, необходимо
все проделать руками (предварительно закоментарьте все loader.conf/rc.conf)
Загружаем чистую систему:
Код: Выделить всё
# kldstat
Id Refs Address Size Name
1 12 0xffffffff80200000 2448f20 kernel
2 1 0xffffffff82822000 2668 intpm.ko
3 1 0xffffffff82825000 b50 smbus.ko
4 1 0xffffffff82826000 18a0 uhid.ko
5 1 0xffffffff82828000 1aa0 wmt.ko
# ipfw list
ipfw: retrieving config failed: Protocol not available
# kldload ipfw
# ipfw list
65535 deny ip from any to any
# sysctl net.inet.ip.fw.default_to_accept
net.inet.ip.fw.default_to_accept: 0
#
выше видно что ни в ядре, ни модулем не загружен firewall
по kldstat и ответ на `ipfw list`, далее грузим kldload ipfw
и на консоли получим:
Код: Выделить всё
ipfw2 (+ipv6) initialized, divert loadable, nat loadable, default to deny, logging disabled
что говорит о том что модуль ipfw загружен, divert и nat можгут быть подгрудены,
logging = disabled и политика by default = deny!
теперь в /boot/loader.conf пропишите
перезагрузитесь и выполните:
# kldload ipfw
# ipfw list
получите
65535 allow ip from any to any
Вот Вам и вся логика загрузки.
важное: очень не рекомендую использовать одновременно два firewall'а,
убьетесь отслеживать что куда и когда попадает (порядок следования пакетов)