PF (Packet Filter ,常縮寫為 pf)是一個以 BSD 許可發布的,常被用於 BSD 系統的防火牆軟件。類似於其他系統中的 netfilter (iptables)、 ipfw 或 ipfilter。
歷史
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 目前被用於:
- Snow Leopard (Mac OS X 10.6) 及以上版本的 Apple macOS [6]
- 所有 iPhone 和 iPad 使用的 Apple iOS 和 iPadOS
- NetBSD 3.0 及以上版本[7]
- DragonFly BSD 1.1 及以上版本[8]
- Debian GNU/kFreeBSD
- 甲骨文Solaris [9]
- QNX 及許多搭載搭載 QNX 的黑莓智能手機型號
另見
參考
圖書
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.