This article needs additional citations for verification. (July 2011) (Learn how and when to remove this template message)
|Developer(s)||Daniel Hartmeier and Henning Brauer|
|Initial release||1 December 2001|
|Operating system||FreeBSD, OpenBSD, Oracle Solaris, macOS|
PF was originally designed as replacement for Darren Reed's IPFilter, from which it derives much of its rule syntax. IPFilter was removed from OpenBSD's CVS tree on 30 May 2001 due to OpenBSD developers' concerns with its license.
It was later extensively redesigned by Henning Brauer and Ryan McBride with most of the code written by Henning Brauer. Henning Brauer is currently the main developer of PF.
The filtering syntax is similar to IPFilter, with some modifications to make it clearer. Network Address Translation (NAT) and Quality of Service (QoS) have been integrated into PF, QoS by importing the ALTQ queuing software and linking it with PF's configuration. Features such as pfsync and CARP for failover and redundancy, authpf for session authentication, and ftp-proxy to ease firewalling the difficult FTP protocol, have also extended PF. Also PF supports SMP (Symmetric multiprocessing) & STO (Stateful Tracking Options).
One of the many innovative features is PF's logging. PF's logging is configurable per rule within the pf.conf and logs are provided from PF by a pseudo-network interface called pflog, which is the only way to lift data from kernel-level mode for user-level programs. Logs may be monitored using standard utilities such as tcpdump, which in OpenBSD has been extended especially for the purpose, or saved to disk in the tcpdump/pcap binary format using the pflogd daemon.
Apart from running on its home platform OpenBSD, PF has been ported to many other operating systems.
However it must be noted that there are major differences in capabilities. Some ports date back many years. OpenBSD always has the latest version with the most features.
PF is currently used in:
- FreeBSD starting with version 5.3
- Apple Mac OS X Lion (OS X 10.7), Mountain Lion (OS X 10.8), Mavericks (OS X 10.9) Yosemite (OS X 10.10), El Capitan (OS X 10.11), Sierra (macOS Sierra 10.12).
- Apple iOS the operating system used by all iPhones and iPads
- NetBSD from version 3.0
- DragonFly BSD from version 1.2
- Debian GNU/kFreeBSD
- Oracle Solaris
- QNX and thereby in many BlackBerry smartphones models
- pfSense free open source FreeBSD based firewall/router
- OPNSense free open source FreeBSD based firewall/router
- "CVS: cvs.openbsd.org: src; Remove ipf". 2001-05-30. Retrieved 2014-11-07.
- "OpenBSD 3.0". 2001-12-01. Retrieved 2014-11-07.
- "Mac OS X 10.7 PF Firewall & GUI IceFloor" (PDF). Apple, Inc. 2012-03-23. Retrieved 2017-08-16.
pf (new to Mac OS)
- "IPFW(8) Manual Page". Apple, Inc. 2012-09-27. Retrieved 2014-11-07.
This utility is DEPRECATED. Please use pfctl(8) instead.
- Hansteen, Peter N.M. (October 2014). The Book of PF: A No-Nonsense Guide to the OpenBSD Firewall (3 ed.). No Starch Press. p. 248. ISBN 978-1-59327-589-1.
- Jeremy C. Reed, ed. (August 2006). The OpenBSD PF Packet Filter Book: PF for NetBSD, FreeBSD, DragonFly, and OpenBSD. Reed Media Services. ISBN 978-0-9790342-0-6.
|The Wikibook Guide to Unix has a page on the topic of: OpenBSD PF|
- OpenBSD Kernel Interfaces Manual –
- OpenBSD System Manager's Manual –
- The OpenBSD PF guide
- The OpenBSD 3.6 release song with humorous background information on PF's creation
- FreeBSD Handbook - Firewalls
- PF section on Daniel Hartmeier's site
- PF tutorial by Peter N. M. Hansteen
- OpenBSD/pf Troubleshooting for the less gifted