В DragonFly BSD принята реализация пакетного фильтра ipfw3
В основную кодовую базу DragonFly BSD принят код новой реализации пакетного фильтра, который будет распространяться под именем ipfw3. Новый фильтр можно использовать одновременно с прошлой реализацией ipfw. Для использования нового фильтра следует загрузить модуль ядра ipfw3 (kldload ipfw3) и воспользоваться утилитой ipfw3. Ipfw3 является вариантом пакетного фильтра ipfw2, уже около 10 лет применяемого во FreeBSD и отличающегося переработанной внутренней архитектурой при сохранении синтаксиса правил. Кодовая база DragonFly BSD ответвилась от выпуска FreeBSD 4.8, в то время как поддержка ipfw2 появилась во FreeBSD 4.7, но в то время носила экспериментальный характер и не была включена по умолчанию. Разработчики DragonFly BSD временами пытались перенести актуальные наработки ipfw2, но в 2008 году работа прекратилась и проект оставался на старой реализации ipfw1.
В отличие от ipfw2 от проекта FreeBSD, ipfw3 для DragonFly BSD отличается добавлением дополнительных механизмов для создания расширений (число возможных расширений увеличено с 256 до 65536), поддержкой сокращённого синтаксиса правил (можно указывать «ipfw add allow ip» вместо «ipfw add allow ip from any to any») и задействованием легковесных нитей ядра (LWKT) для привязки отдельного обработчика ipfw3 к каждому ядру CPU, что позволяет избавиться от блокировок и полностью задействовать все возможности многоядерных систем.
Из доступных для ipfw3 модулей-расширений можно отметить работающую на уровне ядра реализацию транслятора адресов (ipfw3_nat), систему ограничения трафика (dummynet3), базовый модуль (типовые директивы count, skipto, forward, prob, keep_state, check_state, tag и т.п.), модуль layer2 для фильтрации по MAC-адресам и модуль layer4 (TCP, UDP, ICMP). В разработке находится модуль layer7, средства для ведения логов и система фильтрации по таблицам.
© OpenNet