日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
PFCTL(8) FreeBSD システム管理者マニュアル PFCTL(8) 名称 pfctl -- パケットフィルタ (PF) デバイスを制御する 書式 pfctl [-AdeghmNnOPqRrvz] [-a anchor] [-D macro= value] [-F modifier] [-f file] [-i interface] [-K host | network] [-k host | network | label | id] [-o level] [-p device] [-s modifier] [-t table -T command [address ...]] [-x level] 解説 pfctl ユーティリティは、pf(4) に記述された ioctl インタフェースを使用して パケットフィルタデバイスと通信します。それは、ルールセット、パラメータの 設定、とパケットフィルタからの状態情報の検索を可能とします。 パケットフィルタリングは、pf.conf(5) に記述されるフィルタ規則に基づくホス トに入るか出るネットワークインタフェースを通り抜けるパケットのタイプを制 限します。また、パケットフィルタは、パケットのアドレスとポートを置き換え ることができます。発信パケットのソースアドレスとポートを置き換えること は、NAT (ネットワークアドレス変換) と呼ばれて、外部のホストへのすべての接 続が、ゲートウェイから来るようにすることによって内部のネットワーク (通 常、予約されたアドレス空間) から外部のネットワーク (インターネット) に接 続するために使用されます。着信パケットの宛先アドレスとポートを置き換える ことは、異なったホスト、および/または、ポートへの接続をリダイレクトするた めに使用されます。両方の変換の組み合わせ (双方向の NAT) もサポートされて います。変換規則は、pf.conf(5) に記述されています。 変数 pf が rc.conf(5) で YES に設定されるとき、変数 pf_rules で指定される 規則ファイルは、rc(8) スクリプトによって自動的にロードされ、パケットフィ ルタは、有効にされます。 パケットフィルタは、インタフェースの間のそれ自体のパケットを転送しませ ん。sysctl(8) 変数 net.inet.ip.forwarding そして/または、 net.inet6.ip6.forwarding を 1 に設定することによって、転送は、有効にする ことができます。それらを sysctl.conf(5) に永久に設定します。 pfctl ユーティリティは、いくつかのコマンドを提供します。オプションは、次 の通りです: -A 規則ファイルの現在のキュー規則だけをロードします。他の規則とオプ ションは、無視されます。 -a anchor フラグ -f, -F と -s だけを指定された anchor の規則に適用してくだ さい。主なルールセットに加えて、pfctl は、アンカと呼ばれる名前に よって追加ルールセットをロードして操作することができます。主な ルールセットは、デフォルトのアンカです。 アンカは、名前によって参照され、ファイルシステム階層構造がどのよ うに配置されているかと同様に、`/' 文字で分離されたアンカのパスの 様々なコンポーネントで入れ子にされるかもしれません。アンカのパス の最後のコンポーネントは、ルールセット操作が実行されるところで す。 主なルールセットからの anchor 規則の評価は、pf.conf(5) に記述され ます。 例えば、次は、authpf(8), PID 1234: によってユーザ ``smith'' のた めに、作成されたアンカ ``authpf/smith(1234)'' 内のすべてのフィル タ規則 (下記の -s フラグ参照) を表示します: # pfctl -a "authpf/smith(1234)" -s rules アンカでロードされる pf.conf(5) ファイルのテーブル文を持つことに よってか、または次のように定期的なテーブルコマンドを使用すること によって、プライベートテーブルは、アンカ内にも置くことができま す。 # pfctl -a foo/bar -t mytable -T add 1.2.3.4 5.6.7.8 テーブルを参照する規則がアンカでロードされるとき、規則は、それが 定義してあれば、プライベートテーブルを使用し、次に、主なルール セットで定義されたテーブルへのフォールバック、それがあるなら、を 使用します。これは、変数スコープの C の規則と同様です。グローバル なルールセットとアンカで同じ名前で異なったテーブルを作成すること が可能ですが、これは、しばしば悪い設計で、その場合、警告が出力さ れます。 デフォルトで、アンカの再帰的なインライン印刷は、ルールセットのイ ンラインで指定されたアンカを無名にするためだけに適応します。アン カ名が `*' 文字で終っているなら、-s フラグは、大括弧で区切られた ブロック中のすべてのアンカを再帰的に印刷します。例えば、次は、 ``authpf'' ルールセットを再帰的に印刷します: # pfctl -a 'authpf/*' -sr 主なルールセットを再帰的に印刷するためには、アンカ名として `*' だ けを指定します: # pfctl -a '*' -sr -D macro=value コマンドラインで value に設定される macro を定義します。ルール セットの macro の定義を上書きします。 -d パケットフィルタを無効にします。 -e パケットフィルタを有効にします。 -F modifier (簡略化される) modifier によって指定されたフィルタパラメータをフ ラッシュします: -F nat NAT 規則をフラッシュします。 -F queue キュー規則をフラッシュします。 -F rules フィルタ規則をフラッシュします。 -F states ステートテーブル (NAT とフィルタ) をフラッシュしま す。 -F Sources ソース追跡テーブルをフラッシュします。 -F info フィルタ情報 (規則に縛られない統計) をフラッシュし ます。 -F Tables テーブルをフラッシュします。 -F osfp パッシブオペレーティングシステム指紋をフラッシュし ます。 -F all 上記のすべてをフラッシュします。 -f file file に含まれた規則をロードします。この file は、マクロ、テーブ ル、オプション、正規化、キューイング、変換、およびフィルタリング 規則を含みます。マクロとテーブルを除いて、文は、その順序で現れな ければなりません。 -g デバッグのために役立つ出力を含めます。 -h ヘルプ。 -i interface 操作を与えられた interface に制限します。 -K host | network 指定された host または network を起源とするソースの追跡エントリの すべてを kill します。2 番目の -K host または -K network オプショ ンは、最初のホスト/ネットワークから 2 番目までのソースの追跡エン トリをすべて kill されるように指定されます。 -k host | network | label | id 指定された host, network, label または id にマッチするすべての状 態エントリを kill します。 例えば、``host'' を起源とするすべての状態エントリを kill するため には: # pfctl -k host 2 番目の -k host または -k network オプションは、最初のホスト/ ネットワークから 2 番目までの状態エントリをすべて kill されるよう に指定されます。``host1'' から ``host2'' までの状態エントリのすべ てを kill するためには: # pfctl -k host1 -k host2 192.168.1.0/24 から 172.16.0.0/16 までを起源とするすべての状態を kill するためには: # pfctl -k 192.168.1.0/24 -k 172.16.0.0/16 ワイルドカードとして長さ 0 のネットワーク接頭辞を使用することがで きます。ターゲット ``host2'' ですべての状態を kill するためには: # pfctl -k 0.0.0.0/0 -k host2 また、規則ラベルまたは状態 ID によって状態を kill することが可能 です。このモードで、最初の -k 引数は、2 番目の引数のタイプを指定 するために使用されます。次のコマンドは、ラベル ``foobar'' がある 規則から作成されたすべての状態を kill するでしょう: # pfctl -k label -k foobar (pfctl -s state -vv によって示されるような) ユニークな状態 ID に よって 1 つの特有の状態を kill するには、id 修飾子と 2 番目の引数 として、状態 ID とオプションのクリエータ (creator) ID を使用しま す。ID 4823e84500000003 がある状態を kill するために、次を使用し ます: # pfctl -k id -k 4823e84500000003 ホスト ID 00000002 があるバックアップファイアウォールから作成され た ID 4823e84500000018 がある状態を kill するためには、次を使用し ます: # pfctl -k id -k 4823e84500000018/2 -m 省略されるものをリセットしないで、明白に与えられたオプションで マージします。単一のオプションは、他を妨げないで変更できます: # echo "set loginterface fxp0" | pfctl -mf - -N 規則ファイル中の現在の NAT 規則だけをロードします。他の規則とオプ ションは、無視されます。 -n 実際に規則をロードしないで、ただそれらを解析します。 -O 規則ファイル中の現在のオプションだけをロードします。他の規則とオ プションは、無視されます。 -o level 任意の規則ファイル設定を上書きして、ルールセットオプティマイザ (最適化ツール) を制御します。 -o none ルールセットオプティマイザを無効にします。 -o basic 基本的なルールセット最適化を有効にします。これは、 デフォルトの振る舞いです。 -o profile プロファイルを行う基本的なルールセット最適化を有効 にします。 ルールセットオプティマイザの詳細については、pf.conf(5) を参照して ください。 -P ポート特有の規則のためのサービス名の検索を実行せず、代わりに、数 値のポートを表示します。 -p device デフォルト /dev/pf の代わりにデバイスファイル device を使用しま す。 -q 単にエラーと警告を印刷 (表示) します。 -R 規則ファイル中の現在のフィルタ規則だけをロードします。他の規則と オプションは、無視されます。 -r それらを表示するとき逆の DNS 検索を実行します。 -s modifier (簡略化されるかもしれない) modifier によって指定されたフィルタパ ラメータが表示します: -s nat 現在ロードされた NAT 規則を表示します。 -s queue 現在ロードされたキュー規則を表示します。-v と共に 使用されるとき、キュー毎の統計値も表示されます。-v -v と共に使用されるとき、pfctl は、ループし、1 秒 毎の測定帯域幅とパケットを含んで、5 秒毎に更新され たキュー統計値を表示します。 -s rules 現在ロードされたフィルタ規則を表示します。-v, と共 に使用されるとき、規則毎の統計値 (評価、パケット、 とバイトの数) も表示されます。カーネルによって自動 的に行われる ``skip step'' 最適化は、可能であれば 規則の評価をスキップすることに注意してください。ス テートフルに渡されたパケットは、(規則は、全体の接 続のために二度以上評価されませんが) 状態を作成した 規則で数えられます。 -s Anchors 主なルールセットに直接アタッチされた現在ロードされ たアンカを表示します。-a anchor もまた指定されるな ら、与えられた anchor の直下にロードされたアンカが 代わりに表示されます。-v が指定されるなら、ター ゲットアンカの下でアタッチされたすべてのアンカは、 再帰的に表示されます。 -s states 状態テーブルの内容を表示します。 -s Sources ソース追跡テーブルの内容を表示します。 -s info フィルタ情報 (統計値とカウンタ) を表示します。-v と共に使用されるとき、ソースの追跡統計値も表示され ます。 -s Running 実行している状態を表示し、無効にされるとき、0 でな い終了ステータスとなります。 -s labels アカウントの役に立つラベルでフィルタ規則の規則毎の 統計値 (ラベル、評価、パケット合計、バイト合計、パ ケット入力、バイト入力、パケット出力、バイト出力、 状態作成) を表示します。 -s timeouts 現在のグローバルなタイムアウトを表示します。 -s memory 現在のプールメモリのハードの制限を表示します。 -s Tables テーブルのリストを表示します。 -s osfp オペレーティングシステム指紋のリストを表示します。 -s Interfaces PF に利用可能なインタフェースとインタフェースドラ イバのリストを表示します。-v と共に使用されると き、さらに、インタフェースで活性化された規則をス キップするものをリストします。-vv と共に使用される とき、インタフェースの統計値も表示されます。-i は、インタフェースかインタフェースのグループを選択 するために使用することができます。 -s all インタフェースとオペレーティングシステム指紋のリス トを除いて、上記のすべてを表示します。 -T command [address ...] テーブルに適用するために、(簡略化されるかもしれない) command を指 定します。コマンドは、次を含みます: -T kill テーブルを kill します。 -T flush テーブルのすべてのアドレスをフラッシュします。 -T add テーブルに 1 つ以上のアドレスを追加します。自動的に 非存在テーブルを作成します。 -T delete テーブルから 1 つ以上のアドレスを削除します。 -T expire number 前の number 秒を超えるクリアされたそれらの統計値を クリアされたアドレスを削除します。それらの統計値を 一度もクリアしたことがないエントリについて、number は、それらがテーブルに追加された時刻を参照します。 -T replace テーブルのアドレスを置き換えます。自動的に非存在 テーブルを作成します。 -T show テーブルの内容 (アドレス) を表示します。 -T test 与えられたアドレスがテーブルに適合するかテストしま す。 -T zero テーブルのすべての統計値をクリアします。 -T load pf.conf(5) からテーブル定義のみをロードします。これ は、次のように -f フラグに関連して使用されます: # pfctl -Tl -f pf.conf add, delete, replace と test コマンドのために、アドレスのリスト は、-f フラグを使用して、直接コマンドラインおよび/またはアン フォーマットされたテキストファイルのいずれかで指定することができ ます。`#' で始まるコメントがテキストファイルで許されています。 pfctl が、次の文字の 1 つによって前に付けられる、それぞれの個々の アドレスのための操作の詳細な結果を印刷する場合に、これらのコマン ドで、-v フラグは、一度か二度使用することもできます: A アドレス/ネットワークが追加されました。 C アドレス/ネットワークが変更されました (否定されます)。 D アドレス/ネットワークは、削除されました。 M アドレスは、適合します (test 操作専用)。 X アドレス/ネットワークは、コピーされ、したがって、無視されま す。 Y アドレス/ネットワークは、相反する `!' 属性のために追加/削除 することができません。 Z アドレス/ネットワークは、クリアされました (統計値)。 各テーブルは、pfctl の -v フラグを使用して検索することができる 1 組のカウンタを維持することができます。例えば、次のコマンドは、 OpenBSD FTP サーバから出て行くか、またはやって来るパケットの経過 を追う広くオープンされたファイアウォールを定義します。次のコマン ドは、FTP サーバにファイアウォールを設定して、10 ping (ピング) を 送信します: # printf "table <test> counters { ftp.openbsd.org }\n \ pass out to <test>\n" | pfctl -f # ping -qc10 ftp.openbsd.org 現在、それぞれのアドレスとパケット方向、テーブルを参照する規則に よって通過されるか、またはブロックされているパケットとバイトの数 を出力するためにテーブル show コマンドを使用することができます。 現在のアカウントが始まった時間は、``Cleared'' 行でも表示されま す。 # pfctl -t test -vTshow 129.128.5.191 Cleared: Thu Feb 13 18:55:18 2003 In/Block: [ Packets: 0 Bytes: 0 ] In/Pass: [ Packets: 10 Bytes: 840 ] Out/Block: [ Packets: 0 Bytes: 0 ] Out/Pass: [ Packets: 10 Bytes: 840 ] 同様に、-v 修飾辞を二度使用することと -s Tables コマンドによって テーブルに関するグローバルな情報を見ることが可能です。これは、各 テーブルのアドレスの数、テーブルを参照する規則の数、と全体のテー ブルのためのグローバルなパケット統計値を表示します: # pfctl -vvsTables --a-r-C test Addresses: 1 Cleared: Thu Feb 13 18:55:18 2003 References: [ Anchors: 0 Rules: 1 ] Evaluations: [ NoMatch: 3496 Match: 1 ] In/Block: [ Packets: 0 Bytes: 0 ] In/Pass: [ Packets: 10 Bytes: 840 ] In/XPass: [ Packets: 0 Bytes: 0 ] Out/Block: [ Packets: 0 Bytes: 0 ] Out/Pass: [ Packets: 10 Bytes: 840 ] Out/XPass: [ Packets: 0 Bytes: 0 ] ここを見ることができるように、1 つのパケットだけが - 初期の ping 要求 - テーブルと適合しますが、状態の結果として渡されたすべてのパ ケットは、正しく説明されます。(複数の) テーブルを再ロードすること か、ルールセットは、何らかの方法でパケットのアカウントに影響しま せん。2 つの ``XPass'' カウンタは、``ステートフル'' パケットが渡 されますが、それ以上テーブルに適合しないとき、``Pass'' カウンタの 代わりに増加されます。ping(8) コマンドが実行される間に、だれかが テーブルをフラッシュするなら、これは、私たちの例で起こります。 一つの -v と共に使用されるとき、pfctl は、テーブルフラグと名前を 含む最初の行を表示するだけです。フラグは、次の通りに定義されます: c pf.conf(5) の外側でテーブルを変更することができない、定数 テーブル用。 p それらを参照する規則がないとき、自動的に kill されない、永続 的なテーブル用。 a active なテーブルセットの一部であるテーブル用。このフラグの ないテーブルは、本当に存在していなくて、アドレスを含むことが できないで、-g フラグが与える場合にだけ、リストされます。 i inactive なテーブルセットの一部であるテーブル用。このフラグ は、pf.conf(5) のローディングの間に簡潔に見ることができるだ けです。 r 規則によって参照される (使用された) テーブル用。 h このフラグは、主なルールセットのテーブルが、その下にアタッチ されたアンカから同じ名前の 1 つ以上によって隠されていると き、設定されます。 C このフラグは、アドレス毎のカウンタがテーブルで有効にされると き、設定されます。 -t table テーブルの名前を指定します。 -v より冗長な出力を生成します。-v の 2 番目の使用は、ルールセット警 告を含むさらに冗長な出力を生成します。テーブルコマンドへの効果に ついては、前のセクションを参照してください。 -x level 次の 1 つへの (簡略化されるかもしれない) デバッグ level を設定し ます: -x none デバッグメッセージを生成しません。 -x urgent 重大なエラーだけデバッグメッセージを生成します。 -x misc 様々なエラーのデバッグメッセージを生成します。 -x loud 共通の状態のデバッグメッセージを生成します。 -z 規則毎の統計値をクリアします。 関連ファイル /etc/pf.conf パケットフィルタ規則ファイル。 /etc/pf.os パッシブ (受動的な) オペレーティングシステム指紋データベー ス。 関連項目 pf(4), pf.conf(5), pf.os(5), rc.conf(5), services(5), sysctl.conf(5), authpf(8), ftp-proxy(8), rc(8), sysctl(8) 歴史 pfctl プログラムと pf(4) フィルタメカニズムは、OpenBSD 3.0 で登場しまし た。それらは、FreeBSD 5.3 ではじめて登場し、OpenBSD 3.5 のバージョンから 移植されました。 FreeBSD 11.4 October 3, 2016 FreeBSD 11.4