Ipfw


ipfirewall — межсетевой экран, который поставляется с FreeBSD начиная с версии 2.0. С его помощью можно, например, подсчитывать трафик по любым разумным правилам, основывающимся на данных заголовков пакетов протоколов стека TCP/IP, обрабатывать пакеты внешними программами, прятать за одним компьютером целую сеть и т. п.[1]

ipfw — название пользовательской утилиты (запускаемой из командной строки) предназначенной для управления системой IPFW. С её помощью администраторы создают и изменяют правила, управляющие фильтрацией и перенаправлением пакетов.

Утилита ipfw впервые появилась во FreeBSD 2.0. Поддержка dummynet была добавлена позже, начиная с версии 2.2.8. Поддержка divert socket вместе с natd была добавлена начиная с версии 3.x (уточнить). Поддержка NAT на уровне ядра была добавлена начиная с версии 7.0.

Поддержка NAT на уровне ядра была написана Paolo Pisati и впервые появилась в FreeBSD 4.0. До этого преобразование NAT осуществлялось демоном natd, пакеты которому передавались действием divert.

Настроенный брандмауэр представлен упорядоченным списком правил с номерами из диапазона 1-65535. Каждый пакет приходит с различных уровней стека протоколов, и попадая на брандмауэр поочередно сравнивается с критерием каждого правила в списке. Если совпадение найдено, то выполняется действие, закрепленное за данным правилом.

ipfw всегда содержит правило по умолчанию (с номером 65535) которое не может быть ни изменено, ни удалено. Это правило является терминальным, т.е оно применяется к пакетам, не попавшим во все предыдущие. В зависимости от конфигурации ядра это правило может выполнять действия «запретить» или «разрешить»(по умолчанию оно deny ip from any to any, чтобы изменить это, в ядро нужно добавить options IPFIREWALL_DEFAULT_TO_ACCEPT). Все остальные правила могут редактироваться администратором системы.