PF(Packet Filter 、 pfとも表記)は、BSDライセンスのステートフルパケットフィルタであり、ファイアウォールの中核となるソフトウェアです。netfilter(iptables)、ipfw、ipfilterなどと同等の機能を持っています。
PFはOpenBSD向けに開発されましたが、他の多くのオペレーティングシステムにも移植されています。
PF は元々 Darren Reed のIPFilterの代替として設計され、そのルール構文の多くは IPFilter から派生しています。IPFilter は、OpenBSD 開発者がライセンスに懸念を抱いたため、2001 年 5 月 30 日に OpenBSD のCVSツリーから削除されました。[ 1 ]
PF の初期バージョンは Daniel Hartmeier によって書かれました。[ 2 ]これは 2001 年 12 月 1 日にリリースされた OpenBSD 3.0 に登場しました。[ 3 ]
その後、ヘニング・ブラウアーとライアン・マクブライド[ 4 ]によって大幅に再設計され、コードの大部分はヘニング・ブラウアーによって書かれました。ヘニング・ブラウアーは現在PFの主要開発者です。
フィルタリング構文はIPFilterに似ていますが、より分かりやすくするためにいくつかの変更が加えられています。ネットワークアドレス変換(NAT)とサービス品質(QoS)はPFに統合されています。フェイルオーバーと冗長性のためのpfsyncとCARP 、セッション認証のためのauthpf、複雑なFTPプロトコルのファイアウォール処理を容易にするためのftp-proxyなどの機能もPFを拡張しています。また、PFはSMP(対称型マルチプロセッシング)とSTO(ステートフルトラッキングオプション)もサポートしています。
PFの数多くの革新的な機能の一つに、ログ記録機能があります。PFのログ記録はpf.confファイル内でルールごとに設定可能で、ログはpflogと呼ばれる擬似ネットワークインターフェースを介してPFから提供されます。これは、カーネルレベルモードからユーザーレベルプログラムにデータを取り出す唯一の方法です。ログは、 tcpdumpなどの標準ユーティリティを使用して監視できます。OpenBSDでは、tcpdumpはログ記録のために特別に拡張されています。また、pflogdデーモンを使用して、 tcpdump / pcapバイナリ形式でディスクに保存することもできます。
PFは、本家プラットフォームであるOpenBSD以外にも、多くの他のオペレーティングシステムに移植されていますが、機能には大きな違いがあります。中には何年も前に移植されたものもあります。OpenBSDは常に最新バージョンで、最も多くの機能を備えています。
PFは現在、以下の用途で使用されています。