Интернет-шлюз (простейший)

Поскольку основная часть системы IPFW находится в ядре, необходимо пересобрать ядро. Для того, чтобы пересобрать ярдо системы необходимо из портов установить исходники ядра. Для этого следующая команда под правами суперпользователя:

# sysinstall

Configure -> Distributions -> src -> sys

Отметить пакет "sys" и установить его.

После установки зайти в каталог /usr/src/sys/i386/conf/

# cd /usr/src/sys/i386/conf/

В конец файла GENERIC добавляем следующие строки:

options IPFIREWALL # собственно файрволл

options IPFIREWALL_VERBOSE # логгинг пакетов, если в правиле написано `log`

options IPFIREWALL_VERBOSE_LIMIT=5 # ограничение логов (повторяющихся) - на случай атак типа флудинга(я, правда, 100 ставлю)

options IPFIREWALL_FORWARD # перенаправление (форвардинг) пакетов например, для прозрачного прокси

options IPDIVERT # если нужен NAT (трансляция адресов)

options DUMMYNET # если понадобится ограничивать скорость инета пользователям

options IPFIREWALL_DEFAULT_TO_ACCEPT # дефолтовое правило (последнее) будет разрешающим (во всех других) случаях - запрещающее

Сохранить изменения.

Далее пересборка ядра, для этого:

# config GENERIC

# cd /usr/src/sys/i386/compile/GENERIC/

# make depend

# make

# make install

Если все команды выполнились без ошибок, то перезагружаем компьютер и получаем новое ядро с поддержкой файрвола и механизма IPDivert ("заворачивание" пакетов на дополнительную обработку)

# shutdown -r now

Настройка демона natd и файрвола ipfw. Тип файервола открытый.

Добавляем в файл /etc/rc.conf следующие строки:

ifconfig_le0 = "inet IP интерфеса смотрящего наружу netmask маска"

ifconfig_le1 = "inet IP интерфеса смотрящего внутрь netmask маска"

default_gateway = "IP шлюза (тот что смотрит в инет)"

firewall_enable="YES"

gateway_enable=YES"

natd_enable="YES"

firewall_type = "open" - открытый файервол

router_enable = "YES"

router = "/sbin/routed"

default_router = "IP шлюза (тот что смотрит в инет)"

natd_interface = "le0"

natd_flags = " " (тут именно пробел, без пробела не работает(()

Запуск и перезапуск файервола осуществляется скриптом /etc/rc.d/ipfw

unix-way