PFPacket Filter ,常缩写为 pf)是一个以 BSD 许可发布的,常被用于 BSD 系统防火墙软件。类似于其他系统中的 netfilter (iptables)、 ipfwipfilter

PF
原作者Daniel Hartmeier
开发者OpenBSD 项目组
首次发布2001年12月1日,​23年前​(2001-12-01
源代码库cvsweb.openbsd.org/src/
编程语言C
操作系统OpenBSD 及其他移植平台
类型防火墙
许可协议BSD许可证
网站www.openbsd.org/faq/pf/index.html

PF 起初是为 OpenBSD 开发的,但已被移植到许多其他操作系统

历史

编辑

PF 的开发始于 OpenBSD 开发人员不满 Darren Reed 开发的 IPFilter 防火墙所用的许可证,而在 IPFilter 于 2001 年 5 月 30 日被从 OpenBSD 的 CVS 源码树中删除后,PF 被设计来取代 IPFilter。它的大部分规则语法也都源自 IPFilter。[1]

PF 的最初版本由 Daniel Hartmeier 编写, [2]并随 OpenBSD 3.0 于 2001 年 12 月 1 日发布[3],在此后 Henning Brauer 和 Ryan McBride [4]对其进行了深度的重新设计,大部分代码由 Henning Brauer 编写。目前 Henning Brauer 是 PF 的主要开发者。

特征

编辑

语法方面,PF 的过滤语法与 IPFilter 类似,但进行了一些修改以使其更清晰。

功能方面,PF 支持 SMP(对称多处理)和 STO(状态跟踪选项),也集成了常见的网络地址转换 (NAT) 和服务质量 (QoS) 管理模块。在扩展方面,PF 支持用于故障转移冗余的 pfsync 和 CARP 、用于会话身份验证的 authpf ,以及使配置复杂的 FTP 协议防火墙更容易的 ftp-proxy 等。

PF 的日志记录是众多创新功能之一。用户可在 pf.conf 中按规则进行配置 PF 的日志记录,被记录的日志会由 PF 通过名为 pflog 的伪网络接口(pseudo-network interface)向应用程序提供。这是从内核态将数据提取至用户态程序的唯一方法。记录下的日志既可以通过 tcpdump (该实用程序在 OpenBSD 中已专门为此目的进行了扩展) 等常见工具来监视,也可以使用 pflogd 守护程序tcpdump / pcap 二进制格式保存到磁盘。

其他平台上的移植版本

编辑

除了在其开发平台 OpenBSD 上运行之外,PF 还被移植到了许多其他操作系统,但功能上存在重大差异。有些移植版的历史可以追溯到很多年前,因此与当下 OpenBSD 上拥有最多功能的最新版本差异巨大。

PF 目前被用于:

另见

编辑

参考

编辑
  1. ^ de Raadt, Theo. CVS: cvs.openbsd.org: src; Remove ipf.. 2001-05-30 [2018-08-20]. (原始内容存档于2022-04-10). 
  2. ^ Hartmeier, Daniel. A new stateful packet filter for OpenBSD. 2017-09-26 [2018-08-20]. (原始内容存档于2023-03-25). 
  3. ^ OpenBSD 3.0. 2001-12-01 [2018-08-20]. (原始内容存档于2018-10-08). 
  4. ^ Brauer, Henning. Henning Brauer Consulting: pf. [2018-08-20]. (原始内容存档于2020-08-10). 
  5. ^ FreeBSD/amd64 5.3-RELEASE Release Notes. 2004-11-03 [2018-08-20]. (原始内容存档于2010-12-23). 
  6. ^ xnu/xnu-1456.1.26/bsd/net/pf.c.auto.html. Apple, Inc. 2008-12-05 [2018-08-20]. (原始内容存档于2023-07-16). 
  7. ^ Changes and NetBSD News in 2005: 23 Dec 2005 - NetBSD 3.0 released. [2018-08-20]. (原始内容存档于2020-01-17). 
  8. ^ pf(4) manual page. DragonFly Kernel Interfaces Manual. 2011-01-02 [2018-08-20]. (原始内容存档于2022-04-10). 
  9. ^ Introduction to Packet Filter. Securing the Network in Oracle® Solaris 11.3. Oracle Corporation. March 2018 [2018-08-20]. (原始内容存档于2022-12-22). 

图书

编辑

外部链接

编辑