Packet Filter (from here on referred to as PF) is OpenBSD’s system for filtering TCP/IP traffic and doing Network Address Translation. PF is also capable of normalizing and conditioning TCP/IP traffic and providing bandwidth control and packet prioritization. PF has been a part of the GENERIC OpenBSD kernel since OpenBSD 3.0. Previous OpenBSD releases used a different firewall/NAT package which is no longer supported.
PF was originally developed by Daniel Hartmeier and is now maintained and developed by Daniel and the rest of the OpenBSD team.
This set of documents, also available in PDF format, is intended as a general introduction to the PF system as run on OpenBSD. Even if it covers all of PF’s major features, it is only intended to be used as a supplement to the man pages, and not as a replacement for them.
For a complete and in-depth view of what PF can do, please start by reading the pf(4) man page.
As with the rest of the FAQ, this set of documents is focused on users of OpenBSD 4.2. As PF is always growing and developing, there are changes and enhancements between the 4.2-release version and the version in OpenBSD-current as well as differences between 4.2 and earlier versions. The reader is advised to see the man pages for the version of OpenBSD they are currently working with.