PF ( Packet Filter , также пишется pf ) — это лицензированный BSD фильтр пакетов с отслеживанием состояния , центральная часть программного обеспечения для межсетевого экрана . Его можно сравнить с netfilter ( iptables ), ipfw и ipfilter .
PF был разработан для OpenBSD , но был портирован на многие другие операционные системы .
PF изначально был разработан как замена IPFilter Даррена Рида , от которого он получил большую часть своего синтаксиса правил. IPFilter был удален из дерева CVS OpenBSD 30 мая 2001 года из-за опасений разработчиков OpenBSD по поводу его лицензии. [1]
Первоначальную версию PF написал Дэниел Хартмайер. [2] Он появился в OpenBSD 3.0, выпущенном 1 декабря 2001 года. [3]
Позже он был значительно переработан Хеннингом Брауэром и Райаном МакБрайдом [4], при этом большая часть кода была написана Хеннингом Брауэром. Хеннинг Брауэр в настоящее время является основным разработчиком PF.
Синтаксис фильтрации аналогичен IPFilter, но с некоторыми изменениями, чтобы сделать его более понятным. Трансляция сетевых адресов (NAT) и качество обслуживания (QoS) были интегрированы в PF. Такие функции, как pfsync и CARP для аварийного переключения и резервирования, authpf для аутентификации сеанса и ftp-proxy для упрощения межсетевого экрана сложного протокола FTP , также расширили PF. Также PF поддерживает SMP ( симметричную многопроцессорную обработку ) и STO (опции отслеживания с состоянием).
Одной из многих инновационных функций является ведение журнала PF. Ведение журнала PF настраивается для каждого правила в файле pf.conf, а журналы предоставляются из PF через псевдосетевой интерфейс pflog , который является единственным способом получить данные из режима уровня ядра для программ пользовательского уровня. Журналы можно отслеживать с помощью стандартных утилит, таких как tcpdump , которая в OpenBSD была специально расширена для этой цели, или сохраняться на диске в двоичном формате tcpdump / pcap с помощью демона pflogd .
Помимо работы на своей домашней платформе OpenBSD , PF был портирован на многие другие операционные системы, однако существуют серьезные различия в возможностях. Некоторые порты построены много лет назад. OpenBSD всегда имеет последнюю версию с наибольшим количеством функций.
В настоящее время ПФ используется в: